mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-09 04:35:25 +03:00
Update previews on the hour
This commit is contained in:
parent
93260f6cfd
commit
4122462f50
@ -16,7 +16,7 @@ import {
|
||||
MobileRecordingView,
|
||||
} from "@/views/events/RecordingView";
|
||||
import axios from "axios";
|
||||
import { useCallback, useMemo, useState } from "react";
|
||||
import { useCallback, useEffect, useMemo, useState } from "react";
|
||||
import { isMobile } from "react-device-detect";
|
||||
import useSWR from "swr";
|
||||
|
||||
@ -103,7 +103,7 @@ export default function Events() {
|
||||
}, [updateSummary]);
|
||||
|
||||
// preview videos
|
||||
|
||||
const [previewKey, setPreviewKey] = useState(0);
|
||||
const previewTimes = useMemo(() => {
|
||||
if (!reviews || reviews.length == 0) {
|
||||
return undefined;
|
||||
@ -112,13 +112,19 @@ export default function Events() {
|
||||
const startDate = new Date();
|
||||
startDate.setMinutes(0, 0, 0);
|
||||
|
||||
const endDate = new Date(reviews.at(-1)?.end_time || 0);
|
||||
endDate.setHours(0, 0, 0, 0);
|
||||
let endDate;
|
||||
if (previewKey == 0) {
|
||||
endDate = new Date(reviews.at(-1)?.end_time || 0);
|
||||
endDate.setHours(0, 0, 0, 0);
|
||||
} else {
|
||||
endDate = new Date();
|
||||
}
|
||||
|
||||
return {
|
||||
start: startDate.getTime() / 1000,
|
||||
end: endDate.getTime() / 1000,
|
||||
};
|
||||
}, [reviews]);
|
||||
}, [reviews, previewKey]);
|
||||
const { data: allPreviews } = useSWR<Preview[]>(
|
||||
previewTimes
|
||||
? `preview/all/start/${previewTimes.start}/end/${previewTimes.end}`
|
||||
@ -126,6 +132,20 @@ export default function Events() {
|
||||
{ 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
|
||||
|
||||
const markAllItemsAsReviewed = useCallback(
|
||||
|
||||
Loading…
Reference in New Issue
Block a user