From f9567aa4e66a9ddd7fddf03296a010365e375eda Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Mon, 13 May 2024 13:43:36 -0600 Subject: [PATCH] Ensure camera activity is up to date --- web/src/api/ws.tsx | 17 +++++++++++++++-- web/src/hooks/use-camera-activity.ts | 6 +++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/web/src/api/ws.tsx b/web/src/api/ws.tsx index 34fe4b2f0..5e347e1d4 100644 --- a/web/src/api/ws.tsx +++ b/web/src/api/ws.tsx @@ -204,13 +204,26 @@ export function useFrigateStats(): { payload: FrigateStats } { return { payload: JSON.parse(payload as string) }; } -export function useInitialCameraState(camera: string): { +export function useInitialCameraState( + camera: string, + refreshOnStart: boolean, +): { payload: FrigateCameraState; } { const { value: { payload }, - } = useWs("camera_activity", ""); + send: sendCommand, + } = useWs("camera_activity", "onConnect"); const data = JSON.parse(payload as string); + + useEffect(() => { + if (refreshOnStart) { + sendCommand("onConnect"); + } + // only refresh when onRefresh value changes + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [refreshOnStart]); + return { payload: data ? data[camera] : undefined }; } diff --git a/web/src/hooks/use-camera-activity.ts b/web/src/hooks/use-camera-activity.ts index 074c2be52..7019dafda 100644 --- a/web/src/hooks/use-camera-activity.ts +++ b/web/src/hooks/use-camera-activity.ts @@ -19,12 +19,16 @@ type useCameraActivityReturn = { export function useCameraActivity( camera: CameraConfig, + refreshOnStart: boolean = true, ): useCameraActivityReturn { const [objects, setObjects] = useState([]); // init camera activity - const { payload: initialCameraState } = useInitialCameraState(camera.name); + const { payload: initialCameraState } = useInitialCameraState( + camera.name, + refreshOnStart, + ); const updatedCameraState = useDeepMemo(initialCameraState);