import { useEffect, useState } from 'react'; import { useNavigate, useSearchParams } from 'react-router-dom'; import { useAuth } from '../contexts/AuthContext'; import { useLanguage } from '../contexts/LanguageContext'; import { Loader2, AlertTriangle } from 'lucide-react'; import toast from 'react-hot-toast'; export default function OAuthCallback() { const [searchParams] = useSearchParams(); const [error, setError] = useState(null); const { loginWithOAuth } = useAuth(); const { t } = useLanguage(); const navigate = useNavigate(); useEffect(() => { const token = searchParams.get('token'); const errorMsg = searchParams.get('error'); const returnTo = searchParams.get('return_to') || '/dashboard'; if (errorMsg) { setError(errorMsg); return; } if (!token) { setError(t('auth.oauthNoToken')); return; } // Store token and redirect loginWithOAuth(token) .then(() => { toast.success(t('auth.loginSuccess')); navigate(returnTo, { replace: true }); }) .catch(() => { setError(t('auth.oauthLoginFailed')); }); }, []); // eslint-disable-line react-hooks/exhaustive-deps if (error) { return (

{t('auth.oauthError')}

{error}

); } return (

{t('auth.oauthRedirecting')}

); }