'use client'; import { useState, useEffect, useRef } from 'react'; import { Card } from '@zen/core/shared/components'; import AuthPageHeader from '../components/AuthPageHeader.js'; export default function ConfirmEmailPage({ onSubmit, onNavigate, email, token }) { const [error, setError] = useState(''); const [isLoading, setIsLoading] = useState(true); const [success, setSuccess] = useState(''); const [hasVerified, setHasVerified] = useState(false); const isVerifyingRef = useRef(false); useEffect(() => { console.log('ConfirmEmailPage useEffect triggered', { email, token, hasVerified }); const persistedSuccess = sessionStorage.getItem('emailVerificationSuccess'); console.log('Persisted success message:', persistedSuccess); if (persistedSuccess) { console.log('Restoring persisted success message'); setSuccess(persistedSuccess); setIsLoading(false); setHasVerified(true); sessionStorage.removeItem('emailVerificationSuccess'); setTimeout(() => onNavigate('login'), 3000); return; } if (email && token && !hasVerified && !isVerifyingRef.current) { console.log('Starting email verification'); verifyEmail(); } else if (!email || !token) { console.log('Invalid email or token'); setError('Lien de vérification invalide'); setIsLoading(false); } }, [email, token, hasVerified, onNavigate]); async function verifyEmail() { if (hasVerified || isVerifyingRef.current) { console.log('Email verification already attempted or in progress'); return; } isVerifyingRef.current = true; setHasVerified(true); setError(''); setSuccess(''); console.log('Starting email verification for:', email); const formData = new FormData(); formData.set('email', email); formData.set('token', token); try { const result = await onSubmit(formData); console.log('Verification result:', result); if (result.success) { console.log('Verification successful'); const successMessage = result.message || 'E-mail vérifié avec succès. Vous pouvez maintenant vous connecter.'; sessionStorage.setItem('emailVerificationSuccess', successMessage); setSuccess(successMessage); setIsLoading(false); setTimeout(() => onNavigate('login'), 3000); } else { console.log('Verification failed:', result.error); setError(result.error || 'Échec de la vérification de l\'e-mail'); setIsLoading(false); } } catch (err) { console.error('Email verification error:', err); setError('Une erreur inattendue s\'est produite'); setIsLoading(false); } } console.log('ConfirmEmailPage render', { success, error, isLoading, hasVerified }); return ( {isLoading && (

Vérification de votre e-mail en cours...

)} {success && !error && (
{success}
)} {error && !success && (
{error}
{ e.preventDefault(); onNavigate('login'); }} className="text-sm text-neutral-900 hover:text-neutral-600 font-medium transition-colors duration-200 dark:text-white dark:hover:text-neutral-300" > ← Retour à la connexion
)} {success && !error && (

Redirection vers la connexion...

)}
); }