Ensure camera activity is up to date

This commit is contained in:
Nicolas Mowen 2024-05-13 13:43:36 -06:00
parent 9680f2a574
commit f9567aa4e6
2 changed files with 20 additions and 3 deletions

View File

@ -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 };
}

View File

@ -19,12 +19,16 @@ type useCameraActivityReturn = {
export function useCameraActivity(
camera: CameraConfig,
refreshOnStart: boolean = true,
): useCameraActivityReturn {
const [objects, setObjects] = useState<ObjectType[]>([]);
// init camera activity
const { payload: initialCameraState } = useInitialCameraState(camera.name);
const { payload: initialCameraState } = useInitialCameraState(
camera.name,
refreshOnStart,
);
const updatedCameraState = useDeepMemo(initialCameraState);