Improve review mqtt topic (#11072)

* Don't request preview for current hour and fix content type

* Send before / after on messages

* Send before / after for end

* Handle specific cases

* remove log

* Fix update type
This commit is contained in:
Nicolas Mowen
2024-04-22 20:20:30 -06:00
committed by GitHub
parent d6e93d039d
commit 2d71cd7fe2
5 changed files with 70 additions and 16 deletions

View File

@@ -12,6 +12,7 @@ import {
InProgressPreview,
VideoPreview,
} from "../player/PreviewThumbnailPlayer";
import { isCurrentHour } from "@/utils/dateUtil";
type AnimatedEventCardProps = {
event: ReviewSegment;
@@ -19,10 +20,14 @@ type AnimatedEventCardProps = {
export function AnimatedEventCard({ event }: AnimatedEventCardProps) {
const { data: config } = useSWR<FrigateConfig>("config");
const currentHour = useMemo(() => isCurrentHour(event.start_time), [event]);
// preview
const { data: previews } = useSWR<Preview[]>(
`/preview/${event.camera}/start/${Math.round(event.start_time)}/end/${Math.round(event.end_time || event.start_time + 20)}`,
currentHour
? null
: `/preview/${event.camera}/start/${Math.round(event.start_time)}/end/${Math.round(event.end_time || event.start_time + 20)}`,
);
// interaction

View File

@@ -31,7 +31,8 @@ type FrigateObjectState = {
export interface FrigateReview {
type: "new" | "update" | "end";
review: ReviewSegment;
before: ReviewSegment;
after: ReviewSegment;
}
export interface FrigateEvent {

View File

@@ -47,8 +47,19 @@ export default function LiveDashboardView({
}
// if event is ended and was saved, update events list
if (eventUpdate.review.severity == "alert") {
setTimeout(() => updateEvents(), eventUpdate.type == "end" ? 1000 : 6000);
if (eventUpdate.after.severity == "alert") {
if (eventUpdate.type == "end" || eventUpdate.type == "new") {
setTimeout(
() => updateEvents(),
eventUpdate.type == "end" ? 1000 : 6000,
);
} else if (
eventUpdate.before.data.objects.length <
eventUpdate.after.data.objects.length
) {
setTimeout(() => updateEvents(), 5000);
}
return;
}
}, [eventUpdate, updateEvents]);