diff --git a/frontend/src/lib/components/UbercoinTipModal.svelte b/frontend/src/lib/components/UbercoinTipModal.svelte index e80b4a7..49b30f0 100644 --- a/frontend/src/lib/components/UbercoinTipModal.svelte +++ b/frontend/src/lib/components/UbercoinTipModal.svelte @@ -407,7 +407,7 @@
Ü - Balance: {formatUbercoin($ubercoinBalance)} + Your balance: {formatUbercoin($ubercoinBalance)}
diff --git a/frontend/src/routes/profile/[username]/+page.svelte b/frontend/src/routes/profile/[username]/+page.svelte index b49ec54..750f8f3 100644 --- a/frontend/src/routes/profile/[username]/+page.svelte +++ b/frontend/src/routes/profile/[username]/+page.svelte @@ -32,8 +32,11 @@ async function loadProfile(username) { try { // Public endpoint - no auth header needed - const response = await fetch(`/api/users/${username}`); - + // Add cache: 'no-store' to always get fresh data + const response = await fetch(`/api/users/${username}`, { + cache: 'no-store' + }); + if (response.ok) { const data = await response.json(); profile = data.profile; @@ -114,11 +117,20 @@ showTipModal = false; } - function handleTipSent(event) { + async function handleTipSent(event) { showTipModal = false; - // Optionally refresh profile to show updated balance + const result = event.detail; + + // Update profile balance immediately based on the transaction result + // This avoids race conditions where the DB hasn't committed yet + if (profile && result && result.received !== undefined) { + profile.ubercoinBalance = (profile.ubercoinBalance || 0) + result.received; + profile = profile; // Trigger reactivity + } + + // Also reload from server after a short delay to ensure data consistency if (profile) { - loadProfile(profile.username); + setTimeout(() => loadProfile(profile.username), 500); } }