Simplify ws updating

This commit is contained in:
Nicolas Mowen 2024-07-11 07:40:16 -06:00
parent 4ee8557061
commit be24cec78d
3 changed files with 10 additions and 11 deletions

View File

@ -11,6 +11,7 @@ import {
import { FrigateStats } from "@/types/stats"; import { FrigateStats } from "@/types/stats";
import useSWR from "swr"; import useSWR from "swr";
import { createContainer } from "react-tracked"; import { createContainer } from "react-tracked";
import useDeepMemo from "@/hooks/use-deep-memo";
type Update = { type Update = {
topic: string; topic: string;
@ -210,14 +211,16 @@ export function useFrigateReviews(): { payload: FrigateReview } {
const { const {
value: { payload }, value: { payload },
} = useWs("reviews", ""); } = useWs("reviews", "");
return { payload: JSON.parse(payload as string) }; const review = useDeepMemo(JSON.parse(payload as string));
return { payload: review };
} }
export function useFrigateStats(): { payload: FrigateStats } { export function useFrigateStats(): { payload: FrigateStats } {
const { const {
value: { payload }, value: { payload },
} = useWs("stats", ""); } = useWs("stats", "");
return { payload: JSON.parse(payload as string) }; const stats = useDeepMemo(JSON.parse(payload as string));
return { payload: stats };
} }
export function useInitialCameraState( export function useInitialCameraState(
@ -230,7 +233,8 @@ export function useInitialCameraState(
value: { payload }, value: { payload },
send: sendCommand, send: sendCommand,
} = useWs("camera_activity", "onConnect"); } = useWs("camera_activity", "onConnect");
const data = JSON.parse(payload as string);
const data = useDeepMemo(JSON.parse(payload as string));
useEffect(() => { useEffect(() => {
let listener = undefined; let listener = undefined;

View File

@ -27,13 +27,10 @@ export function useCameraActivity(
// init camera activity // init camera activity
const { payload: initialCameraState } = useInitialCameraState( const { payload: updatedCameraState } = useInitialCameraState(
camera.name, camera.name,
revalidateOnFocus, revalidateOnFocus,
); );
const updatedCameraState = useDeepMemo(initialCameraState);
useEffect(() => { useEffect(() => {
if (updatedCameraState) { if (updatedCameraState) {
setObjects(updatedCameraState.objects); setObjects(updatedCameraState.objects);
@ -140,7 +137,7 @@ export function useCameraActivity(
activeTracking: hasActiveObjects, activeTracking: hasActiveObjects,
activeMotion: detectingMotion activeMotion: detectingMotion
? detectingMotion === "ON" ? detectingMotion === "ON"
: initialCameraState?.motion === true, : updatedCameraState?.motion === true,
objects, objects,
offline, offline,
}; };

View File

@ -64,14 +64,12 @@ export default function LiveDashboardView({
// recent events // recent events
const { payload: reviewTopic } = useFrigateReviews(); const { payload: eventUpdate } = useFrigateReviews();
const { data: allEvents, mutate: updateEvents } = useSWR<ReviewSegment[]>([ const { data: allEvents, mutate: updateEvents } = useSWR<ReviewSegment[]>([
"review", "review",
{ limit: 10, severity: "alert" }, { limit: 10, severity: "alert" },
]); ]);
const eventUpdate = useDeepMemo(reviewTopic);
useEffect(() => { useEffect(() => {
if (!eventUpdate) { if (!eventUpdate) {
return; return;