import React, { useEffect, useState } from 'react'; import { View, Text, StyleSheet, ActivityIndicator } from 'react-native'; import { useLocalSearchParams, useRouter } from 'expo-router'; import { Ionicons } from '@expo/vector-icons'; import { Screen } from '@presentation/components/layout/Screen'; import { Button } from '@presentation/components/ui/Button'; import { colors, typography, spacing, radius } from '@shared/theme'; import { verifyEmailUseCase } from '@infrastructure/container'; type Status = 'loading' | 'success' | 'error'; /** * Handler de deep link: meowspool://verify-email?token=xxx * Chama o backend para confirmar o e-mail e exibe o resultado. */ export default function VerifyEmailDeepLink(): React.ReactElement { const { token } = useLocalSearchParams<{ token: string }>(); const router = useRouter(); const [status, setStatus] = useState('loading'); const [errorMessage, setErrorMessage] = useState('Não foi possível verificar o e-mail.'); useEffect(() => { if (!token) { setErrorMessage('Link inválido ou expirado.'); setStatus('error'); return; } verifyEmailUseCase.execute(token) .then(() => setStatus('success')) .catch((e: unknown) => { const msg = e instanceof Error ? e.message : 'Erro desconhecido.'; setErrorMessage(msg); setStatus('error'); }); }, [token]); return ( {status === 'loading' && ( <> Verificando e-mail… )} {status === 'success' && ( <> E-mail verificado! Sua conta está ativa. Faça login para continuar.