import React, { useState } from 'react'; import { View, StyleSheet, ScrollView, KeyboardAvoidingView, } from 'react-native'; import { Text } from '@/components/ui/Text'; import { Link, useLocalSearchParams, 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 { Colors } from '@/constants/theme' import { useAuth } from '@/context/AuthContext'; import { useToast } from '@/context/ToastContext'; import { translateError } from '@/lib/errors/translations'; export default function ActivateScreen() { const { userId } = useLocalSearchParams(); const [code, setCode] = useState(''); const [errors, setErrors] = useState<{ code?: string; }>({}); const { activate, requestActivateCode } = useAuth(); const { showToast } = useToast(); const [loading, setLoading] = useState(false); const textColor = useThemeColor({}, 'text'); const backgroundColor = useThemeColor({}, 'background'); const tintColor = useThemeColor({}, 'tint'); const validateForm = () => { const newErrors: typeof errors = {}; if (!code) { newErrors.code = 'O código é obrigatório'; } else if (code.length < 6) { newErrors.code = 'O código deve conter pelo menos 6 caracteres'; } setErrors(newErrors); return Object.keys(newErrors).length === 0; }; const handleActivate = async () => { if (!validateForm()) return; setLoading(true); try { await activate(code); showToast('Conta ativada com sucesso!', 'success'); router.replace('/'); } catch (error: any) { showToast(translateError(error.message) || 'Falha em ativar a conta', 'error'); } finally { setLoading(false); } }; const resendCode = async () => { try { await requestActivateCode(); showToast('Novo código enviado. Verifique sua caixa de entrada.', 'success'); } catch { showToast('Falha ao reenviar o código. Tente novamente.', 'error'); } } return ( Ativar a conta Digite o código de ativação enviado para seu email