import { RecoverScreenLayout } from '@/assets/components/auth/RecoverScreenLayout'; import { LoadingSpinner } from '@/assets/components/LoadingSpinner'; import { recoverPassword } from '@/assets/services/passwordRecovery'; import styles from '@/styles/screens/auth/recover.styles'; import { router, type Href } from 'expo-router'; import { useState } from 'react'; import { Image, Pressable, Text, TextInput } from 'react-native'; const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; export default function RecoverEmailScreen() { const [email, setEmail] = useState(''); const [error, setError] = useState(null); const [isLoading, setIsLoading] = useState(false); const handleSubmit = async () => { const trimmed = email.trim(); if (!trimmed) { setError('Indica o teu email para continuar.'); return; } if (!EMAIL_REGEX.test(trimmed)) { setError('Introduz um email válido.'); return; } setError(null); setIsLoading(true); try { const data = await recoverPassword(trimmed); if (data.status === 200) { router.push({ pathname: '/recover/confirm', params: { email: trimmed, message: data.message ?? '' }, } as Href); return; } setError(data.message || 'Não foi possível enviar o código.'); } catch { setError('Falha ao contactar o servidor. Tenta novamente.'); } finally { setIsLoading(false); } }; return ( Email* {!!error && {error}} {isLoading ? ( ) : ( <> Enviar código )} router.replace('/login' as Href)} disabled={isLoading}> Voltar ao Login ); }