From 6c418d9c1fefcd748cf14b55a03c023044413de2 Mon Sep 17 00:00:00 2001 From: 230419 <230419@epvc.pt> Date: Tue, 21 Apr 2026 16:14:00 +0100 Subject: [PATCH] feat: implement optimistic profile updates and add navigation to profile view --- src/App.jsx | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index b52209e..fe59a24 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -272,6 +272,7 @@ export default function App() { e.preventDefault(); setSavingProfile(true); const fd = new FormData(e.target); + try { const profileDoc = doc(db, 'artifacts', appId, 'users', user.uid, 'profile', 'data'); const dobDay = fd.get('dobDay'); @@ -282,16 +283,22 @@ export default function App() { dob = `${dobYear}-${dobMonth}-${dobDay}`; } - await setDoc(profileDoc, { + // Perform optimistc setDoc without blocking the UI + setDoc(profileDoc, { username: fd.get('username') || '', fullName: fd.get('fullName') || '', dob: dob, bio: fd.get('bio') || '' - }, { merge: true }); + }, { merge: true }).catch(err => { + console.error(err); + }); } catch (err) { console.error(err); } finally { - setSavingProfile(false); + // Re-enable the button shortly after for smooth optimistic UI + setTimeout(() => { + setSavingProfile(false); + }, 600); } }; @@ -339,12 +346,12 @@ export default function App() { ${sidebarOpen ? 'w-80 translate-x-0' : 'w-0 -translate-x-full md:w-0 md:opacity-0'} `}>
-
+
+
-
-
+
+ @@ -397,6 +404,7 @@ export default function App() { {view === 'laundry' && t('laundry')} {view === 'outfits' && t('outfitsAndStyle')} {view === 'settings' && t('settings')} + {view === 'profile' && t('profileInfo')}
@@ -690,8 +698,8 @@ export default function App() {
)} - {/* DEFINIÇÕES */} - {view === 'settings' && ( + {/* PERFIL */} + {view === 'profile' && (
@@ -735,6 +743,12 @@ export default function App() { +
+ )} + + {/* DEFINIÇÕES */} + {view === 'settings' && ( +
{/* Preferências */}