mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-09 04:35:25 +03:00
Be more efficient about updating events
This commit is contained in:
parent
ae7df14da4
commit
31463fa4bf
@ -1,22 +1,46 @@
|
|||||||
|
import { useFrigateEvents } from "@/api/ws";
|
||||||
import { AnimatedEventThumbnail } from "@/components/image/AnimatedEventThumbnail";
|
import { AnimatedEventThumbnail } from "@/components/image/AnimatedEventThumbnail";
|
||||||
import LivePlayer from "@/components/player/LivePlayer";
|
import LivePlayer from "@/components/player/LivePlayer";
|
||||||
import { ScrollArea, ScrollBar } from "@/components/ui/scroll-area";
|
import { ScrollArea, ScrollBar } from "@/components/ui/scroll-area";
|
||||||
import { TooltipProvider } from "@/components/ui/tooltip";
|
import { TooltipProvider } from "@/components/ui/tooltip";
|
||||||
import { Event as FrigateEvent } from "@/types/event";
|
import { Event as FrigateEvent } from "@/types/event";
|
||||||
import { FrigateConfig } from "@/types/frigateConfig";
|
import { FrigateConfig } from "@/types/frigateConfig";
|
||||||
import { useMemo } from "react";
|
import { useEffect, useMemo } from "react";
|
||||||
import useSWR from "swr";
|
import useSWR from "swr";
|
||||||
|
|
||||||
function Live() {
|
function Live() {
|
||||||
const { data: config } = useSWR<FrigateConfig>("config");
|
const { data: config } = useSWR<FrigateConfig>("config");
|
||||||
|
|
||||||
// recent events
|
// recent events
|
||||||
|
const { payload: eventUpdate } = useFrigateEvents();
|
||||||
const { data: allEvents } = useSWR<FrigateEvent[]>(
|
const { data: allEvents, mutate: updateEvents } = useSWR<FrigateEvent[]>(
|
||||||
["events", { limit: 10 }],
|
["events", { limit: 10 }],
|
||||||
{ refreshInterval: 60000 }
|
{ revalidateOnFocus: false }
|
||||||
);
|
);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!eventUpdate) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if event is ended and was saved, update events list
|
||||||
|
if (
|
||||||
|
eventUpdate.type == "end" &&
|
||||||
|
(eventUpdate.after.has_clip || eventUpdate.after.has_snapshot)
|
||||||
|
) {
|
||||||
|
updateEvents();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if event is updated and has become a saved event, update events list
|
||||||
|
if (
|
||||||
|
!(eventUpdate.before.has_clip || eventUpdate.before.has_snapshot) &&
|
||||||
|
(eventUpdate.after.has_clip || eventUpdate.after.has_snapshot)
|
||||||
|
) {
|
||||||
|
updateEvents();
|
||||||
|
}
|
||||||
|
}, [eventUpdate]);
|
||||||
|
|
||||||
const events = useMemo(() => {
|
const events = useMemo(() => {
|
||||||
if (!allEvents) {
|
if (!allEvents) {
|
||||||
return [];
|
return [];
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user