import React, { useState } from 'react'; import { View, Text, StyleSheet, Alert } from 'react-native'; import { useForm, Controller } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { z } from 'zod'; import { Ionicons } from '@expo/vector-icons'; import { Screen } from '@presentation/components/layout/Screen'; import { Header } from '@presentation/components/layout/Header'; import { Input } from '@presentation/components/ui/Input'; import { Button } from '@presentation/components/ui/Button'; import { colors, typography, spacing } from '@shared/theme'; import { forgotPasswordUseCase } from '@infrastructure/container'; const schema = z.object({ email: z.string().email('E-mail inválido'), }); type FormData = z.infer; /** * Tela de Recuperação de Senha — L2-0 */ export default function ForgotPasswordScreen(): React.ReactElement { const [isLoading, setIsLoading] = useState(false); const [sent, setSent] = useState(false); const { control, handleSubmit, formState: { errors } } = useForm({ resolver: zodResolver(schema), defaultValues: { email: '' }, }); async function onSubmit(data: FormData): Promise { setIsLoading(true); try { await forgotPasswordUseCase.execute(data.email); setSent(true); } catch { Alert.alert('Erro', 'Não foi possível enviar o e-mail.'); } finally { setIsLoading(false); } } return (
{sent ? ( E-mail enviado! Verifique sua caixa de entrada e siga as instruções para redefinir sua senha. ) : ( <> Informe seu e-mail cadastrado. Enviaremos um link para você redefinir sua senha. ( } error={errors.email?.message} onChangeText={field.onChange} value={field.value} /> )} />