pooling content fix

This commit is contained in:
Виталий Лавшонок
2025-11-03 10:39:30 +03:00
parent a5c7cc9db3
commit fbe441c654

View File

@@ -26,6 +26,8 @@ const Mission = () => {
const pollingRef = useRef<number | null>(null); const pollingRef = useRef<number | null>(null);
const submissions = useAppSelector((state) => state.submin.submitsById[missionIdNumber] || []); const submissions = useAppSelector((state) => state.submin.submitsById[missionIdNumber] || []);
const submissionsRef = useRef(submissions);
@@ -37,7 +39,7 @@ const Mission = () => {
pollingRef.current = setInterval(async () => { pollingRef.current = setInterval(async () => {
dispatch(fetchMySubmitsByMission(missionIdNumber)); dispatch(fetchMySubmitsByMission(missionIdNumber));
const hasWaiting = submissions.some( const hasWaiting = submissionsRef.current.some(
(s: any) => s.solution.status == "Waiting" || s.solution.testerState === "Waiting" (s: any) => s.solution.status == "Waiting" || s.solution.testerState === "Waiting"
); );
if (!hasWaiting) { if (!hasWaiting) {
@@ -57,6 +59,9 @@ const Mission = () => {
dispatch(fetchMySubmitsByMission(missionIdNumber)); dispatch(fetchMySubmitsByMission(missionIdNumber));
}, [missionIdNumber]); }, [missionIdNumber]);
useEffect(() => {
}, [submissions]);
useEffect(() => { useEffect(() => {
return () => { return () => {
if (pollingRef.current) { if (pollingRef.current) {
@@ -68,8 +73,9 @@ const Mission = () => {
useEffect(() => { useEffect(() => {
if (submissions.length === 0) return; submissionsRef.current = submissions;
if (submissions.length) {
const hasWaiting = submissions.some( const hasWaiting = submissions.some(
s => s.solution.status === "Waiting" || s.solution.testerState === "Waiting" s => s.solution.status === "Waiting" || s.solution.testerState === "Waiting"
); );
@@ -77,6 +83,7 @@ const Mission = () => {
if (hasWaiting) { if (hasWaiting) {
startPolling(); startPolling();
} }
}
}, [submissions]); }, [submissions]);