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' && (
+