import React, { useEffect, useState } from 'react'; import { handleCallback, login, type AuthError } from '@/auth/authService'; import { Loader2, CheckCircle, AlertCircle, Home } from 'lucide-react'; import { Button } from './ui/button'; type CallbackState = 'processing' | 'success' | 'error'; const AuthCallback: React.FC = () => { const [state, setState] = useState('processing'); const [error, setError] = useState(null); useEffect(() => { const processCallback = async () => { try { await handleCallback(); setState('success'); // Auto-redirect after success setTimeout(() => { window.location.href = '/'; }, 1500); } catch (err) { setError(err as AuthError); setState('error'); } }; processCallback(); }, []); const handleRetry = async () => { setState('processing'); setError(null); try { await login(); } catch (err) { setError(err as AuthError); setState('error'); } }; const handleGoHome = () => { window.location.href = '/'; }; return (
{state === 'processing' && (

Completing Sign In

Please wait while we verify your credentials...

)} {state === 'success' && (

Welcome Back!

Redirecting you to the dashboard...

)} {state === 'error' && (

Sign In Failed

{error?.message || 'An unexpected error occurred.'}

)}
); }; export default AuthCallback;