import { TouchableOpacity, StyleSheet, View, Switch, } from "react-native"; import { Text } from '@/components/ui/Text'; import { useState } from "react"; import { router } from "expo-router"; import { Card } from "@/components/ui/Cards"; import { ScreenLayout } from "@/components/ui/ScreenLayout"; import { BorderRadius, Colors, Spacing, Typography } from "@/constants/theme"; import { useThemeColor } from "@/hooks/use-theme-color"; import { useAuth } from "@/context/AuthContext"; import { Section, SectionHeader } from "@/components/ui/Sections"; import { Ionicons, MaterialIcons } from "@expo/vector-icons"; import { Button } from "@/components/ui/Button"; import { ConfirmModal } from "@/components/ui/ConfirmModal"; import { TimePicker } from "@/components/ui/TimePicker"; import { usePatchUserMe } from "@/hooks/useUserPreferences.queries"; import { useToast } from '@/context/ToastContext'; import { apiClient } from "@/lib/api"; export default function Settings() { const { user, logout, updateAuthUser } = useAuth(); const [allowWeeklyInsights, setAllowWeeklyInsights] = useState(false); const [logoutVisible, setLogoutVisible] = useState(false); const [exportVisible, setExportVisible] = useState(false); const [exporting, setExporting] = useState(false); const { showToast } = useToast(); const notificationsEnabled = user?.notificationsEnabled ?? true; const dailyReminderTime = user?.dailyReminderTime ?? "20:00"; const patchUserMe = usePatchUserMe((updatedUser) => { updateAuthUser(updatedUser); }); const handleNotificationToggle = (value: boolean) => { patchUserMe.mutate({ notificationsEnabled: value }); }; const handleTimeChange = (date: Date) => { const time = `${date.getHours().toString().padStart(2, "0")}:${date.getMinutes().toString().padStart(2, "0")}`; patchUserMe.mutate({ dailyReminderTime: time }); }; const textColor = useThemeColor({}, "text"); const handleLogout = () => { setLogoutVisible(true); }; const handleProfilePress = () => { router.push("/profile"); }; const handleInvisibleMode = () => {}; const handleDataExport = () => { setExportVisible(true); }; const handleExportConfirm = async () => { setExporting(true); try { const { message } = await apiClient.exportData(); setExportVisible(false); showToast(message, "success"); } catch (error) { showToast( error instanceof Error ? error.message : "Não foi possível exportar seus dados", "error", ); } finally { setExporting(false); } }; return (
Dados Pessoais Nome, Email e senha
Lembrete diário de humor {notificationsEnabled ? `Diário às ${dailyReminderTime}` : "Desativado"} {notificationsEnabled && ( { const [h, m] = dailyReminderTime.split(":").map(Number); const d = new Date(); d.setHours(h, m, 0, 0); return d; })()} onChange={handleTimeChange} /> )} Indicadores semanais Relatórios de progressos
router.push("/report")} > Gerar Relatório
Privacidade Exportar Meus Dados router.push("/terms")} > Termos e Condições