import React, { useState, useEffect } from 'react'; import { useSearchParams, useNavigate, Link } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import api from '../services/api'; import logo from '../assets/logo-white.png'; const ActivateAccount = () => { const { t } = useTranslation(); const [searchParams] = useSearchParams(); const navigate = useNavigate(); const [status, setStatus] = useState('loading'); // loading, success, error const [message, setMessage] = useState(''); const [countdown, setCountdown] = useState(5); useEffect(() => { const token = searchParams.get('token'); if (!token) { setStatus('error'); setMessage(t('activate.invalidLink')); return; } activateAccount(token); }, [searchParams]); useEffect(() => { if (status === 'success' && countdown > 0) { const timer = setTimeout(() => setCountdown(countdown - 1), 1000); return () => clearTimeout(timer); } else if (status === 'success' && countdown === 0) { navigate('/dashboard'); } }, [status, countdown, navigate]); const activateAccount = async (token) => { try { const response = await api.post('/activate', { token }); if (response.data.success) { // Save token and user to localStorage localStorage.setItem('token', response.data.data.token); localStorage.setItem('user', JSON.stringify(response.data.data.user)); setStatus('success'); setMessage(t('activate.success')); } else { setStatus('error'); setMessage(response.data.message || t('activate.error')); } } catch (error) { setStatus('error'); setMessage(error.response?.data?.message || t('activate.error')); } }; return (
WEBMoney {status === 'loading' && ( <>
{t('common.loading')}

{t('activate.activating')}

{t('activate.pleaseWait')}

)} {status === 'success' && ( <>

{t('activate.successTitle')}

{message}

{t('activate.redirecting', { seconds: countdown })}
{t('activate.goToDashboard')} )} {status === 'error' && ( <>

{t('activate.errorTitle')}

{message}

{t('auth.login')} {t('common.back')}
)}
); }; export default ActivateAccount;