From 14d9068bfa609a1f72f6eb8c66f69a1ef88917cb Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Wed, 21 Jan 2026 10:25:00 -0600 Subject: [PATCH] ws hooks --- web/src/api/ws.tsx | 51 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/web/src/api/ws.tsx b/web/src/api/ws.tsx index 6bb2fdc32..f5b7b57a3 100644 --- a/web/src/api/ws.tsx +++ b/web/src/api/ws.tsx @@ -304,6 +304,57 @@ export function useReviewDescriptionState(camera: string): { return { payload: payload as ToggleableSetting, send }; } +export function useMotionMaskState( + camera: string, + maskName: string, +): { + payload: ToggleableSetting; + send: (payload: ToggleableSetting, retain?: boolean) => void; +} { + const { + value: { payload }, + send, + } = useWs( + `${camera}/motion_mask/${maskName}/state`, + `${camera}/motion_mask/${maskName}/set`, + ); + return { payload: payload as ToggleableSetting, send }; +} + +export function useObjectMaskState( + camera: string, + maskName: string, +): { + payload: ToggleableSetting; + send: (payload: ToggleableSetting, retain?: boolean) => void; +} { + const { + value: { payload }, + send, + } = useWs( + `${camera}/object_mask/${maskName}/state`, + `${camera}/object_mask/${maskName}/set`, + ); + return { payload: payload as ToggleableSetting, send }; +} + +export function useZoneState( + camera: string, + zoneName: string, +): { + payload: ToggleableSetting; + send: (payload: ToggleableSetting, retain?: boolean) => void; +} { + const { + value: { payload }, + send, + } = useWs( + `${camera}/zone/${zoneName}/state`, + `${camera}/zone/${zoneName}/set`, + ); + return { payload: payload as ToggleableSetting, send }; +} + export function usePtzCommand(camera: string): { payload: string; send: (payload: string, retain?: boolean) => void;