"use client"; // ============================================================================ // Auth Complete Page // ============================================================================ import React, { useEffect, useState, Suspense } from "react"; import { useSearchParams, useRouter } from "next/navigation"; import { useAuth } from "@/components/auth/auth-provider"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { AlertCircle, CheckCircle, Loader2 } from "lucide-react"; import { Alert, AlertDescription } from "@/components/ui/alert"; import { Button } from "@/components/ui/button"; function AuthCompleteContent() { const searchParams = useSearchParams(); const router = useRouter(); const { login } = useAuth(); const [status, setStatus] = useState<"loading" | "success" | "error">( "loading" ); const [error, setError] = useState(null); useEffect(() => { const token = searchParams.get("token"); if (!token) { setStatus("error"); setError("Токен авторизации не найден"); return; } const completeAuth = async () => { try { await login(token); setStatus("success"); // Redirect after short delay setTimeout(() => { router.push("/"); }, 1500); } catch (err: any) { setStatus("error"); setError(err?.error?.message || "Ошибка авторизации"); } }; completeAuth(); }, [searchParams, login, router]); return (
{status === "loading" && ( )} {status === "success" && ( )} {status === "error" && ( )}
{status === "loading" && "Авторизация..."} {status === "success" && "Успешно!"} {status === "error" && "Ошибка"} {status === "loading" && "Пожалуйста, подождите"} {status === "success" && "Перенаправляем в приложение..."} {status === "error" && error}
{status === "error" && ( {error} )}
); } export default function AuthCompletePage() { return ( } > ); }