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);
}
}