import { useSearchParams, useNavigate } from "react-router-dom"; import { Card, CardContent, CardHeader, CardTitle, CardDescription } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { Loader2, Clock, AlertCircle, ClipboardList } from "lucide-react"; import { examsService } from "@/services/exams.service"; import { useQuery } from "@tanstack/react-query"; export default function OfficialExamAccess() { const [searchParams] = useSearchParams(); const navigate = useNavigate(); const token = searchParams.get("token"); const { data: examInfo, isLoading, error } = useQuery({ queryKey: ["exam", "access", token], queryFn: async () => { const res = await fetch(`${import.meta.env.VITE_API_BASE_URL}/exam/access/${token}`); if (!res.ok) throw new Error(res.status === 404 ? "Invalid or expired token" : "Failed to load exam"); return res.json() as Promise<{ id: number; name: string; duration_minutes: number; start_time: string; module: string }>; }, enabled: !!token, retry: false, }); const handleStart = () => { if (examInfo) { navigate(`/exam/${examInfo.module}/${examInfo.id}?token=${token}`); } }; return (
Please use the link provided by your institution to access the exam.
Loading exam information...
{(error as Error).message}