Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
import React, { useState, useEffect } from "react"; | |
import { Box, CircularProgress } from "@mui/material"; | |
import { useNavigate, useSearchParams, Navigate } from "react-router-dom"; | |
import Intro from "../components/Intro"; | |
import BenchmarkEvaluation from "../components/BenchmarkEvaluation"; | |
import API_CONFIG from "../config/api"; | |
function BenchmarkEvaluationPage() { | |
const navigate = useNavigate(); | |
const [searchParams] = useSearchParams(); | |
const sessionId = searchParams.get("session"); | |
const isDefaultFromUrl = searchParams.get("isDefault") === "true"; | |
const isDefault = | |
isDefaultFromUrl || | |
["the-bitter-lesson", "hurricane-faq", "pokemon-guide"].includes(sessionId); | |
const [isValidSession, setIsValidSession] = useState(true); | |
const [isLoading, setIsLoading] = useState(true); | |
useEffect(() => { | |
if (!sessionId) { | |
console.log("Missing session ID for evaluation, redirecting to home"); | |
setIsValidSession(false); | |
return; | |
} | |
// If it's a precalculated document, consider it valid directly | |
if (isDefault) { | |
setIsLoading(false); | |
return; | |
} | |
const checkSession = async () => { | |
try { | |
const response = await fetch( | |
`${API_CONFIG.BASE_URL}/benchmark-questions/${sessionId}` | |
); | |
if (!response.ok) { | |
console.error(`Invalid session or server error: ${response.status}`); | |
setIsValidSession(false); | |
} | |
} catch (error) { | |
console.error("Error checking session:", error); | |
setIsValidSession(false); | |
} finally { | |
setIsLoading(false); | |
} | |
}; | |
checkSession(); | |
}, [sessionId, isDefault]); | |
const handleEvaluationComplete = (result) => { | |
console.log("Evaluation completed:", result); | |
// Redirection is handled by the BenchmarkEvaluation component | |
}; | |
if (!isValidSession) { | |
return <Navigate to="/" />; | |
} | |
return ( | |
<> | |
<Intro /> | |
{isLoading ? ( | |
<Box | |
sx={{ | |
display: "flex", | |
justifyContent: "center", | |
alignItems: "center", | |
mt: 8, | |
mb: 8, | |
}} | |
> | |
<CircularProgress size={60} /> | |
</Box> | |
) : ( | |
<BenchmarkEvaluation | |
sessionId={sessionId} | |
isDefaultDocument={isDefault} | |
onComplete={handleEvaluationComplete} | |
/> | |
)} | |
</> | |
); | |
} | |
export default BenchmarkEvaluationPage; | |