|
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 Evaluation from "../components/Evaluation/Evaluation"; |
|
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 (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); |
|
|
|
}; |
|
|
|
if (!isValidSession) { |
|
return <Navigate to="/" />; |
|
} |
|
|
|
return ( |
|
<> |
|
<Intro /> |
|
{isLoading ? ( |
|
<Box |
|
sx={{ |
|
display: "flex", |
|
justifyContent: "center", |
|
alignItems: "center", |
|
mt: 8, |
|
mb: 8, |
|
}} |
|
> |
|
<CircularProgress size={60} /> |
|
</Box> |
|
) : ( |
|
<Evaluation |
|
sessionId={sessionId} |
|
isDefaultDocument={isDefault} |
|
onComplete={handleEvaluationComplete} |
|
/> |
|
)} |
|
</> |
|
); |
|
} |
|
|
|
export default BenchmarkEvaluationPage; |
|
|