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) }; return { payload: JSON.parse(payload as string) };
} }
export function useInitialCameraState(camera: string): { export function useInitialCameraState(
camera: string,
refreshOnStart: boolean,
): {
payload: FrigateCameraState; payload: FrigateCameraState;
} { } {
const { const {
value: { payload }, value: { payload },
} = useWs("camera_activity", ""); send: sendCommand,
} = useWs("camera_activity", "onConnect");
const data = JSON.parse(payload as string); 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 }; return { payload: data ? data[camera] : undefined };
} }

View File

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