diff --git a/frontend/src/hooks/usePortfolio.ts b/frontend/src/hooks/usePortfolio.ts index 56dfa88..d845371 100644 --- a/frontend/src/hooks/usePortfolio.ts +++ b/frontend/src/hooks/usePortfolio.ts @@ -1,4 +1,5 @@ import { useState, useEffect } from 'react' +import { apiRequest, API_CONFIG } from '../config/api' interface PortfolioData { id: string @@ -13,6 +14,11 @@ interface PortfolioData { lastRebalance: string } +interface PortfolioResponse { + success?: boolean + portfolio: PortfolioData +} + export const usePortfolio = (portfolioId?: string) => { const [portfolio, setPortfolio] = useState(null) const [loading, setLoading] = useState(true) @@ -24,10 +30,12 @@ export const usePortfolio = (portfolioId?: string) => { const fetchPortfolio = async () => { try { setLoading(true) - const response = await fetch(`/api/portfolio/${portfolioId}`) - if (!response.ok) throw new Error('Failed to fetch portfolio') - - const data = await response.json() + const data = await apiRequest( + `${API_CONFIG.BASE_URL}${API_CONFIG.ENDPOINTS.PORTFOLIO_DETAIL(portfolioId)}` + ) + if (!data?.portfolio) { + throw new Error('Failed to fetch portfolio') + } setPortfolio(data.portfolio) setError(null) } catch (err) { @@ -48,19 +56,27 @@ export const usePortfolio = (portfolioId?: string) => { if (!portfolioId) return try { - const response = await fetch(`/api/portfolio/${portfolioId}/rebalance`, { - method: 'POST' - }) - if (!response.ok) throw new Error('Rebalance failed') + await apiRequest( + `${API_CONFIG.BASE_URL}${API_CONFIG.ENDPOINTS.PORTFOLIO_REBALANCE(portfolioId)}`, + { + method: 'POST', + body: JSON.stringify({}), + } + ) // Refresh portfolio data - const portfolioResponse = await fetch(`/api/portfolio/${portfolioId}`) - const data = await portfolioResponse.json() + const data = await apiRequest( + `${API_CONFIG.BASE_URL}${API_CONFIG.ENDPOINTS.PORTFOLIO_DETAIL(portfolioId)}` + ) + if (!data?.portfolio) { + throw new Error('Failed to fetch portfolio') + } setPortfolio(data.portfolio) + setError(null) } catch (err) { setError(err instanceof Error ? err.message : 'Rebalance failed') } } return { portfolio, loading, error, executeRebalance } -} \ No newline at end of file +}