import React, { useState } from 'react'; import { View, Text, StyleSheet, ScrollView, KeyboardAvoidingView, Platform, Alert, } from 'react-native'; import { Link, router } from 'expo-router'; import { SafeAreaView } from 'react-native-safe-area-context'; import { useThemeColor } from '@/hooks/use-theme-color'; import { Button, Input } from '@/components/ui'; import { useAuth } from '@/context/AuthContext'; export default function ForgotPasswordScreen() { const [email, setEmail] = useState(''); const [emailSent, setEmailSent] = useState(false); const [resetToken, setResetToken] = useState(''); // Only for development const [errors, setErrors] = useState<{ email?: string }>({}); const { forgotPassword } = useAuth(); const [loading, setLoading] = useState(false); const textColor = useThemeColor({}, 'text'); const backgroundColor = useThemeColor({}, 'background'); const tintColor = useThemeColor({}, 'tint'); const validateForm = () => { const newErrors: { email?: string } = {}; if (!email) { newErrors.email = 'Email is required'; } else if (!/\S+@\S+\.\S+/.test(email)) { newErrors.email = 'Please enter a valid email'; } setErrors(newErrors); return Object.keys(newErrors).length === 0; }; const handleForgotPassword = async () => { if (!validateForm()) return; setLoading(true); try { const data = await forgotPassword(email); setEmailSent(true); // In development, show the reset token if (data.token) { setResetToken(data.token); } } catch (error: any) { Alert.alert('Erro: ', error.message || 'Falha ao enviar link de recuperação'); } finally { setLoading(false); } }; const handleUseToken = () => { if (resetToken) { router.push({ pathname: '/auth/reset-password', params: { token: resetToken }, }); } }; if (emailSent) { return ( Verifique seu email Enviamos as instruções para resetar sua senha para {email} {/* Development only - show reset token */} {resetToken && ( Dev mode: Token: {resetToken}