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() {
-
-
+
+
-