From a5c7cc9db36b83b0fd1571f6d8d237b928ac3324 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D1=82=D0=B0=D0=BB=D0=B8=D0=B9=20=D0=9B=D0=B0?= =?UTF-8?q?=D0=B2=D1=88=D0=BE=D0=BD=D0=BE=D0=BA?= <114582703+valavshonok@users.noreply.github.com> Date: Mon, 3 Nov 2025 10:32:15 +0300 Subject: [PATCH] pooling fix --- src/pages/Mission.tsx | 49 ++++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/src/pages/Mission.tsx b/src/pages/Mission.tsx index 01814da..aec338d 100644 --- a/src/pages/Mission.tsx +++ b/src/pages/Mission.tsx @@ -27,6 +27,31 @@ const Mission = () => { const pollingRef = useRef(null); const submissions = useAppSelector((state) => state.submin.submitsById[missionIdNumber] || []); + + + + const startPolling = () => { + if (pollingRef.current) + return; + + pollingRef.current = setInterval(async () => { + dispatch(fetchMySubmitsByMission(missionIdNumber)); + + const hasWaiting = submissions.some( + (s: any) => s.solution.status == "Waiting" || s.solution.testerState === "Waiting" + ); + if (!hasWaiting) { + // Всё проверено — стоп + if (pollingRef.current) { + clearInterval(pollingRef.current); + pollingRef.current = null; + } + } + }, 5000); // 10 секунд + }; + + + useEffect(() => { dispatch(fetchMissionById(missionIdNumber)); dispatch(fetchMySubmitsByMission(missionIdNumber)); @@ -59,8 +84,6 @@ const Mission = () => { return
Загрузка...
; } - - interface StatementData { id: number; legend?: string; @@ -116,28 +139,6 @@ const Mission = () => { - const startPolling = () => { - if (pollingRef.current) - return; - - pollingRef.current = setInterval(async () => { - dispatch(fetchMySubmitsByMission(missionIdNumber)); - - const hasWaiting = submissions.some( - (s: any) => s.solution.status == "Waiting" || s.solution.testerState === "Waiting" - ); - if (!hasWaiting) { - // Всё проверено — стоп - if (pollingRef.current) { - clearInterval(pollingRef.current); - pollingRef.current = null; - } - } - }, 5000); // 10 секунд - }; - - - return (