import { useEffect, useState } from "react"; import { useNavigate, useSearchParams } from "react-router-dom"; import { Loader } from "react-feather"; import { request } from "../lib/api"; import { getSessionId, setStoredSessionId } from "../lib/session"; import type { SessionStatus } from "../types/session"; export default function ProcessingPage() { const navigate = useNavigate(); const [searchParams] = useSearchParams(); const [message, setMessage] = useState(""); const sessionId = getSessionId(searchParams.toString()); useEffect(() => { if (!sessionId) { setMessage("No active session found. Return to the upload page."); return; } setStoredSessionId(sessionId); let active = true; const poll = async () => { try { const status = await request( `/sessions/${sessionId}/status`, ); if (!active) return; if (status?.status === "ready") { navigate(`/review-setup?session=${encodeURIComponent(sessionId)}`); } } catch { // keep polling } }; poll(); const timer = setInterval(poll, 2000); return () => { active = false; clearInterval(timer); }; }, [navigate, sessionId]); return (
Prosento logo

Prosento RepEx

Report processing

Generating your report

We are preparing your files and building the final report. This may take a few minutes.

You can leave this tab open while we process your submission.

{message ? (

{message}

) : null}
); }