@@ -4,7 +4,14 @@ import { XMarkIcon } from '@heroicons/react/24/outline';
4
4
import { TextInput , NumberInput , Button } from '@tremor/react' ;
5
5
import axios from 'axios' ;
6
6
7
- const API_BASE_URL = import . meta. env . VITE_API_BASE_URL ;
7
+ // Get API URL from environment variable, fallback to production URL if not set
8
+ const API_BASE_URL = import . meta. env . VITE_API_BASE_URL || 'https://portfolio-tracker-backend-y7ne.onrender.com/api' ;
9
+
10
+ // Create axios instance with base URL
11
+ const api = axios . create ( {
12
+ baseURL : API_BASE_URL ,
13
+ timeout : 10000
14
+ } ) ;
8
15
9
16
export default function AddStockModal ( { open, setOpen, onStockAdded } ) {
10
17
const [ loading , setLoading ] = useState ( false ) ;
@@ -17,9 +24,15 @@ export default function AddStockModal({ open, setOpen, onStockAdded }) {
17
24
target_price : ''
18
25
} ) ;
19
26
20
- // Log API URL on component mount
27
+ // Log API URL and environment on component mount
21
28
useEffect ( ( ) => {
29
+ console . log ( 'Environment:' , import . meta. env . MODE ) ;
22
30
console . log ( 'API Base URL:' , API_BASE_URL ) ;
31
+
32
+ // Test API connection
33
+ api . get ( '/health' )
34
+ . then ( response => console . log ( 'API Health Check:' , response . data ) )
35
+ . catch ( error => console . error ( 'API Health Check Failed:' , error ) ) ;
23
36
} , [ ] ) ;
24
37
25
38
const handleChange = ( e ) => {
@@ -28,7 +41,7 @@ export default function AddStockModal({ open, setOpen, onStockAdded }) {
28
41
...prev ,
29
42
[ name ] : value
30
43
} ) ) ;
31
- setError ( '' ) ; // Clear error when user makes changes
44
+ setError ( '' ) ;
32
45
} ;
33
46
34
47
const handleSubmit = async ( e ) => {
@@ -37,7 +50,6 @@ export default function AddStockModal({ open, setOpen, onStockAdded }) {
37
50
setError ( '' ) ;
38
51
39
52
try {
40
- // Validate form data
41
53
if ( ! formData . name || ! formData . ticker || ! formData . shares || ! formData . buy_price ) {
42
54
throw new Error ( 'Please fill in all required fields' ) ;
43
55
}
@@ -53,11 +65,10 @@ export default function AddStockModal({ open, setOpen, onStockAdded }) {
53
65
console . log ( 'Making API request to:' , `${ API_BASE_URL } /stocks` ) ;
54
66
console . log ( 'Request data:' , requestData ) ;
55
67
56
- const response = await axios . post ( ` ${ API_BASE_URL } /stocks` , requestData ) ;
68
+ const response = await api . post ( ' /stocks' , requestData ) ;
57
69
58
70
console . log ( 'Stock added successfully:' , response . data ) ;
59
71
60
- // Reset form and close modal
61
72
setFormData ( {
62
73
name : '' ,
63
74
ticker : '' ,
@@ -67,7 +78,6 @@ export default function AddStockModal({ open, setOpen, onStockAdded }) {
67
78
} ) ;
68
79
setOpen ( false ) ;
69
80
70
- // Notify parent component
71
81
if ( onStockAdded ) {
72
82
onStockAdded ( response . data ) ;
73
83
}
@@ -76,7 +86,8 @@ export default function AddStockModal({ open, setOpen, onStockAdded }) {
76
86
message : error . message ,
77
87
response : error . response ?. data ,
78
88
status : error . response ?. status ,
79
- apiUrl : API_BASE_URL
89
+ apiUrl : API_BASE_URL ,
90
+ mode : import . meta. env . MODE
80
91
} ) ;
81
92
setError ( error . response ?. data ?. error || error . message || 'Failed to add stock' ) ;
82
93
} finally {
0 commit comments