import React, { useState } from 'react'; import { StyleSheet, View } from 'react-native'; import { Link, useLocalSearchParams, router } from 'expo-router'; import { useThemeColor } from '@/hooks/use-theme-color'; import { Button, Input } from '@/components/ui'; import { Text } from '@/components/ui/Text'; import { AuthScreen } from '@/components/auth/AuthScreen'; import { useAuth } from '@/context/AuthContext'; import { useToast } from '@/context/ToastContext'; import { translateError } from '@/lib/errors/translations'; export default function ResetPasswordScreen() { const { token } = useLocalSearchParams<{ token: string }>(); const [password, setPassword] = useState(''); const [confirmPassword, setConfirmPassword] = useState(''); const [errors, setErrors] = useState<{ password?: string; confirmPassword?: string; }>({}); const { resetPassword } = useAuth(); const { showToast } = useToast(); const [loading, setLoading] = useState(false); const textColor = useThemeColor({}, 'text'); const tintColor = useThemeColor({}, 'tint'); const validateForm = () => { const newErrors: typeof errors = {}; if (!password) { newErrors.password = 'A senha é obrigatória'; } else if (password.length < 6) { newErrors.password = 'A senha deve conter pelo menos 6 caracteres'; } if (!confirmPassword) { newErrors.confirmPassword = 'Por favor confirme sua senha'; } else if (password !== confirmPassword) { newErrors.confirmPassword = 'As senhas não coincidem'; } setErrors(newErrors); return Object.keys(newErrors).length === 0; }; const handleResetPassword = async () => { if (!validateForm()) return; if (!token) { showToast('Token não encontrado. Solicite um novo link de recuperação.', 'error'); return; } setLoading(true); try { await resetPassword(token, password); showToast('Senha recuperada com sucesso!', 'success'); router.replace('/auth/login'); } catch (error) { showToast(translateError(error) || 'Falha em recuperar a conta', 'error'); } finally { setLoading(false); } }; return ( Lembrou da senha?{' '} Faça login } >