import { useEffect, useState } from 'react'; import { useSearchParams, useNavigate, Link } from 'react-router-dom'; import { useLanguage } from '../context/LanguageContext'; import Footer from '../components/Footer'; import { API_HOST } from '../config'; function VerifyEmail() { const [searchParams] = useSearchParams(); const navigate = useNavigate(); const { t } = useLanguage(); const [verificationStatus, setVerificationStatus] = useState('verifying'); // 'verifying', 'success', 'error' const [error, setError] = useState(''); useEffect(() => { const verifyEmail = async () => { const token = searchParams.get('token'); if (!token) { setVerificationStatus('error'); setError('No verification token provided'); return; } try { const response = await fetch(`${API_HOST}/api/v1/onboard/validate-email?token=${token}`, { method: 'GET', headers: { 'Content-Type': 'application/json', }, }); if (!response.ok) { throw new Error('Verification failed'); } setVerificationStatus('success'); // Redirect to payment after 3 seconds on success setTimeout(() => { navigate(`/payment?plan=${searchParams.get('plan')}&email=${searchParams.get('email')}`); }, 3000); } catch (err) { setVerificationStatus('error'); setError(err.message); } }; verifyEmail(); }, [searchParams, navigate]); const renderContent = () => { switch (verificationStatus) { case 'verifying': return (

{t('verify.verifying')}

); case 'success': return (

{t('verify.success.title')}

{t('verify.success.message')}

{t('verify.success.redirecting')}

); case 'error': return (
×

{t('verify.error.title')}

{error}

{t('verify.error.backToLogin')}
); default: return null; } }; return (
{/* Floating elements */}
{/* Header section */}

{t('verify.title')}

{t('verify.description')}

{/* Content */}
{renderContent()}
); } export default VerifyEmail;