From 7a7a4ca511899477a911e39822a5c44fd3e594c6 Mon Sep 17 00:00:00 2001 From: 230419 <230419@epvc.pt> Date: Wed, 22 Apr 2026 09:03:18 +0100 Subject: [PATCH] salva tudo na cloud --- src/App.jsx | 64 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 56 insertions(+), 8 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index d37d5c6..1f766f1 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -59,6 +59,44 @@ export default function App() { const t = (key) => translations[language]?.[key] || translations['PT'][key] || key; + const saveUserSetting = async (key, value) => { + if (!user) return; + try { + const profileDoc = doc(db, 'artifacts', appId, 'users', user.uid, 'profile', 'data'); + await setDoc(profileDoc, { + settings: { [key]: value } + }, { merge: true }); + } catch (err) { + console.error('Error saving setting:', err); + } + }; + + const handleDarkModeToggle = (newVal) => { + setDarkMode(newVal); + saveUserSetting('darkMode', newVal); + }; + + const handleThemeChange = (newVal) => { + setTheme(newVal); + saveUserSetting('theme', newVal); + }; + + const handleLanguageChange = (newVal) => { + setLanguage(newVal); + saveUserSetting('language', newVal); + setShowLangModal(false); + }; + + const handleNotificationsToggle = (newVal) => { + setNotificationsEnabled(newVal); + saveUserSetting('notificationsEnabled', newVal); + }; + + const handleWeatherAlertsToggle = (newVal) => { + setWeatherAlerts(newVal); + saveUserSetting('weatherAlerts', newVal); + }; + useEffect(() => { document.documentElement.classList.remove('theme-indigo', 'theme-rose', 'theme-emerald', 'theme-amber', 'theme-slate'); document.documentElement.classList.add(theme); @@ -101,7 +139,17 @@ export default function App() { // Profile const profileDoc = doc(db, 'artifacts', appId, 'users', user.uid, 'profile', 'data'); const unsubProfile = onSnapshot(profileDoc, (snap) => { - if (snap.exists()) setUserProfile(snap.data()); + if (snap.exists()) { + const data = snap.data(); + setUserProfile(data); + if (data.settings) { + if (data.settings.language !== undefined) setLanguage(data.settings.language); + if (data.settings.darkMode !== undefined) setDarkMode(data.settings.darkMode); + if (data.settings.theme !== undefined) setTheme(data.settings.theme); + if (data.settings.notificationsEnabled !== undefined) setNotificationsEnabled(data.settings.notificationsEnabled); + if (data.settings.weatherAlerts !== undefined) setWeatherAlerts(data.settings.weatherAlerts); + } + } else setUserProfile({}); }, (err) => console.error(err)); @@ -466,8 +514,8 @@ export default function App() {
- - + +
- @@ -840,7 +888,7 @@ export default function App() { ].map(tObj => ( @@ -863,7 +911,7 @@ export default function App() {

{t('weatherAlerts')}

{t('weatherSuggestions')}

- @@ -1007,7 +1055,7 @@ export default function App() { ].map(lang => (