'use client'; import { useState, useEffect, Suspense } from 'react'; import { useRouter, useSearchParams } from 'next/navigation'; import { verifyEmail } from '@/api/auth'; import { getErrorMessage } from '@/lib/error-utils'; const loadMaterialComponents = async () => { await Promise.all([ import('@material/web/button/filled-button.js'), import('@material/web/button/text-button.js'), ]); }; function VerifyEmailContent() { const router = useRouter(); const searchParams = useSearchParams(); const token = searchParams.get('token'); const [status, setStatus] = useState<'loading' | 'success' | 'error'>('loading'); const [message, setMessage] = useState(''); const [componentsLoaded, setComponentsLoaded] = useState(false); useEffect(() => { loadMaterialComponents().then(() => setComponentsLoaded(true)); }, []); useEffect(() => { if (!componentsLoaded || !token) { if (!token) { setStatus('error'); setMessage('Отсутствует ссылка для подтверждения. Проверьте письмо или запросите новое.'); } return; } let cancelled = false; verifyEmail(token) .then((res) => { if (cancelled) return; if (res.success) { setStatus('success'); setMessage('Email успешно подтверждён. Теперь вы можете войти в аккаунт.'); } else { setStatus('error'); setMessage(res.message || 'Не удалось подтвердить email.'); } }) .catch((err: any) => { if (cancelled) return; setStatus('error'); setMessage(getErrorMessage(err, 'Неверная или устаревшая ссылка. Запросите новое письмо с подтверждением.')); }); return () => { cancelled = true; }; }, [token, componentsLoaded]); if (!componentsLoaded) { return (

Uchill

Подтверждение email...

); } return (

Подтверждение email

{status === 'loading' && (
)} {status === 'success' && ( <>
{message}
router.push('/login')} style={{ width: '100%', height: '48px' }} > Войти в аккаунт )} {status === 'error' && ( <>
{message}
router.push('/login')} style={{ width: '100%', height: '48px', marginBottom: '12px' }} > На страницу входа
router.push('/register')} style={{ fontSize: '14px' }}> Зарегистрироваться
)}
); } export default function VerifyEmailPage() { return (

Загрузка...

} > ); }