diff --git a/website/src/routes/portfolio/+page.svelte b/website/src/routes/portfolio/+page.svelte index 9554747..b6df5c7 100644 --- a/website/src/routes/portfolio/+page.svelte +++ b/website/src/routes/portfolio/+page.svelte @@ -17,9 +17,11 @@ let portfolioData = $state(null); let transactions = $state([]); let loading = $state(true); + let error = $state(null); onMount(async () => { await Promise.all([fetchPortfolioData(), fetchRecentTransactions()]); + loading = false; }); async function fetchPortfolioData() { @@ -27,11 +29,14 @@ const response = await fetch('/api/portfolio/total'); if (response.ok) { portfolioData = await response.json(); + error = null; } else { + error = 'Failed to load portfolio data'; toast.error('Failed to load portfolio data'); } } catch (e) { console.error('Failed to fetch portfolio data:', e); + error = 'Failed to load portfolio data'; toast.error('Failed to load portfolio data'); } } @@ -48,11 +53,16 @@ } catch (e) { console.error('Failed to fetch transactions:', e); toast.error('Failed to load transactions'); - } finally { - loading = false; } } + async function retryFetch() { + loading = true; + error = null; + await Promise.all([fetchPortfolioData(), fetchRecentTransactions()]); + loading = false; + } + let totalPortfolioValue = $derived(portfolioData ? portfolioData.totalValue : 0); let hasHoldings = $derived(portfolioData && portfolioData.coinHoldings.length > 0); let hasTransactions = $derived(transactions.length > 0); @@ -162,7 +172,7 @@ ]); - - {:else if !portfolioData} + {:else if error}
-
Failed to load portfolio
- +
{error}
+
{:else}