From f474bc40371c87af7379cfa21085b6e02d70296d Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Tue, 19 Mar 2024 21:16:22 -0600 Subject: [PATCH] Always check previews when refocusing the page (#10546) --- web/src/pages/Events.tsx | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/web/src/pages/Events.tsx b/web/src/pages/Events.tsx index 3791300b9..74652b57c 100644 --- a/web/src/pages/Events.tsx +++ b/web/src/pages/Events.tsx @@ -80,6 +80,7 @@ export default function Events() { reviewSegmentFetcher, { revalidateOnFocus: false, + revalidateOnReconnect: false, }, ); @@ -92,7 +93,7 @@ export default function Events() { cameras: reviewSearchParams["cameras"] ?? null, labels: reviewSearchParams["labels"] ?? null, }, - { revalidateOnFocus: false }, + { revalidateOnFocus: false, revalidateOnReconnect: false }, ]); const reloadData = useCallback(() => { @@ -128,22 +129,31 @@ export default function Events() { previewTimes ? `preview/all/start/${previewTimes.start}/end/${previewTimes.end}` : null, - { revalidateOnFocus: false }, + { revalidateOnFocus: false, revalidateOnReconnect: false }, ); // Set a timeout to update previews on the hour useEffect(() => { - const future = new Date(); - future.setHours(future.getHours() + 1, 0, 30, 0); - const timeoutId = setTimeout( - () => setPreviewKey(10 * Math.random()), - future.getTime() - Date.now(), - ); + if (!allPreviews || allPreviews.length == 0) { + return; + } + + const callback = () => { + const nextPreviewStart = new Date( + allPreviews[allPreviews.length - 1].end * 1000, + ); + nextPreviewStart.setHours(nextPreviewStart.getHours() + 1); + + if (Date.now() > nextPreviewStart.getTime()) { + setPreviewKey(10 * Math.random()); + } + }; + document.addEventListener("focusin", callback); return () => { - clearTimeout(timeoutId); + document.removeEventListener("focusin", callback); }; - }, []); + }, [allPreviews]); // review status