refresh dashboard activity on visibility change

This commit is contained in:
Nicolas Mowen 2024-05-21 03:04:24 +05:30
parent e268da9df7
commit 7fdd0979c5
2 changed files with 18 additions and 5 deletions

View File

@ -221,7 +221,7 @@ export function useFrigateStats(): { payload: FrigateStats } {
export function useInitialCameraState( export function useInitialCameraState(
camera: string, camera: string,
refreshOnStart: boolean, revalidateOnFocus: boolean,
): { ): {
payload: FrigateCameraState; payload: FrigateCameraState;
} { } {
@ -232,12 +232,25 @@ export function useInitialCameraState(
const data = JSON.parse(payload as string); const data = JSON.parse(payload as string);
useEffect(() => { useEffect(() => {
if (refreshOnStart) { let listener = undefined;
if (revalidateOnFocus) {
sendCommand("onConnect"); sendCommand("onConnect");
listener = () => {
if (document.visibilityState == "visible") {
sendCommand("onConnect");
}
};
addEventListener("visibilitychange", listener);
} }
return () => {
if (listener) {
removeEventListener("visibilitychange", listener);
}
};
// only refresh when onRefresh value changes // only refresh when onRefresh value changes
// eslint-disable-next-line react-hooks/exhaustive-deps // eslint-disable-next-line react-hooks/exhaustive-deps
}, [refreshOnStart]); }, [revalidateOnFocus]);
return { payload: data ? data[camera] : undefined }; return { payload: data ? data[camera] : undefined };
} }

View File

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