Update previews on the hour

This commit is contained in:
Nicolas Mowen 2024-03-15 10:01:47 -06:00
parent 93260f6cfd
commit 4122462f50

View File

@ -16,7 +16,7 @@ import {
MobileRecordingView, MobileRecordingView,
} from "@/views/events/RecordingView"; } from "@/views/events/RecordingView";
import axios from "axios"; import axios from "axios";
import { useCallback, useMemo, useState } from "react"; import { useCallback, useEffect, useMemo, useState } from "react";
import { isMobile } from "react-device-detect"; import { isMobile } from "react-device-detect";
import useSWR from "swr"; import useSWR from "swr";
@ -103,7 +103,7 @@ export default function Events() {
}, [updateSummary]); }, [updateSummary]);
// preview videos // preview videos
const [previewKey, setPreviewKey] = useState(0);
const previewTimes = useMemo(() => { const previewTimes = useMemo(() => {
if (!reviews || reviews.length == 0) { if (!reviews || reviews.length == 0) {
return undefined; return undefined;
@ -112,13 +112,19 @@ export default function Events() {
const startDate = new Date(); const startDate = new Date();
startDate.setMinutes(0, 0, 0); startDate.setMinutes(0, 0, 0);
const endDate = new Date(reviews.at(-1)?.end_time || 0); let endDate;
endDate.setHours(0, 0, 0, 0); if (previewKey == 0) {
endDate = new Date(reviews.at(-1)?.end_time || 0);
endDate.setHours(0, 0, 0, 0);
} else {
endDate = new Date();
}
return { return {
start: startDate.getTime() / 1000, start: startDate.getTime() / 1000,
end: endDate.getTime() / 1000, end: endDate.getTime() / 1000,
}; };
}, [reviews]); }, [reviews, previewKey]);
const { data: allPreviews } = useSWR<Preview[]>( const { data: allPreviews } = useSWR<Preview[]>(
previewTimes previewTimes
? `preview/all/start/${previewTimes.start}/end/${previewTimes.end}` ? `preview/all/start/${previewTimes.start}/end/${previewTimes.end}`
@ -126,6 +132,20 @@ export default function Events() {
{ revalidateOnFocus: false }, { revalidateOnFocus: 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(),
);
return () => {
clearTimeout(timeoutId);
};
}, []);
// review status // review status
const markAllItemsAsReviewed = useCallback( const markAllItemsAsReviewed = useCallback(