"use client"; import { Suspense, useEffect, useState } from "react"; import { useRouter, useSearchParams } from "next/navigation"; function AuthCallbackContent() { const router = useRouter(); const searchParams = useSearchParams(); const [status, setStatus] = useState<"processing" | "success" | "error">( "processing" ); const [errorMsg, setErrorMsg] = useState(""); useEffect(() => { const token = searchParams.get("token"); const error = searchParams.get("error"); if (error) { setStatus("error"); setErrorMsg(decodeURIComponent(error)); return; } if (!token) { setStatus("error"); setErrorMsg("No authentication token received."); return; } // Store token in localStorage localStorage.setItem("flh_token", token); // Dispatch a custom event so the AuthContext can pick it up // (used by popup-based OAuth where the opener listens) window.dispatchEvent( new StorageEvent("storage", { key: "flh_token", newValue: token, oldValue: null, storageArea: localStorage, }) ); setStatus("success"); // If this is a popup window, close it after a brief delay if (window.opener) { setTimeout(() => window.close(), 500); } else { // Redirect to home setTimeout(() => router.push("/"), 500); } }, [searchParams, router]); return (
Signing you in...
Signed in successfully!
{errorMsg}
Signing you in...