'use client'; import { useEffect, useState } from 'react'; import { useRouter, useSearchParams } from 'next/navigation'; import Link from 'next/link'; export default function ConfirmPage() { const router = useRouter(); const params = useSearchParams(); const token = params.get('token'); const [status, setStatus] = useState<'loading' | 'success' | 'error'>('loading'); const [message, setMessage] = useState('Confirmando tu email…'); useEffect(() => { if (!token) { setStatus('error'); setMessage('Falta el token de confirmación.'); return; } fetch(`/api/auth/confirm?token=${encodeURIComponent(token)}`) .then(async (r) => { const data = await r.json(); if (r.ok) { setStatus('success'); setMessage(data.message ?? 'Email confirmado.'); setTimeout(() => router.push('/auth/login'), 3000); } else { setStatus('error'); setMessage(data.error?.message ?? 'Token inválido o ya confirmado.'); } }) .catch(() => { setStatus('error'); setMessage('Error de conexión.'); }); }, [token, router]); return (
{status === 'loading' && (
)} {status === 'success' && (
)} {status === 'error' && (
)}

{status === 'success' ? '¡Email confirmado!' : status === 'error' ? 'Error' : 'Confirmando…'}

{message}

{status === 'success' && (

Redirigiendo al login…

)} Ir a iniciar sesión
); }