From 23aa21ea82c7f9a761f30c6351f48d247afe5e05 Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Mon, 6 Apr 2026 17:18:52 -0500 Subject: [PATCH] auto-send ON genai review WS message when enabled_in_config transitions to true --- .../CameraReviewStatusToggles.tsx | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/web/src/components/config-form/sectionExtras/CameraReviewStatusToggles.tsx b/web/src/components/config-form/sectionExtras/CameraReviewStatusToggles.tsx index f09cc5406..c5eb83489 100644 --- a/web/src/components/config-form/sectionExtras/CameraReviewStatusToggles.tsx +++ b/web/src/components/config-form/sectionExtras/CameraReviewStatusToggles.tsx @@ -1,4 +1,4 @@ -import { useMemo } from "react"; +import { useEffect, useMemo, useRef } from "react"; import useSWR from "swr"; import { Trans } from "react-i18next"; import Heading from "@/components/ui/heading"; @@ -37,6 +37,34 @@ export default function CameraReviewStatusToggles({ const { payload: revDescState, send: sendRevDesc } = useReviewDescriptionState(cameraId); + // Sync WS runtime state when genai transitions from disabled to enabled in config + const prevObjGenaiEnabled = useRef( + cameraConfig?.objects?.genai?.enabled_in_config, + ); + const prevRevGenaiEnabled = useRef( + cameraConfig?.review?.genai?.enabled_in_config, + ); + + useEffect(() => { + const wasEnabled = prevObjGenaiEnabled.current; + const isEnabled = cameraConfig?.objects?.genai?.enabled_in_config; + prevObjGenaiEnabled.current = isEnabled; + + if (!wasEnabled && isEnabled) { + sendObjDesc("ON"); + } + }, [cameraConfig?.objects?.genai?.enabled_in_config, sendObjDesc]); + + useEffect(() => { + const wasEnabled = prevRevGenaiEnabled.current; + const isEnabled = cameraConfig?.review?.genai?.enabled_in_config; + prevRevGenaiEnabled.current = isEnabled; + + if (!wasEnabled && isEnabled) { + sendRevDesc("ON"); + } + }, [cameraConfig?.review?.genai?.enabled_in_config, sendRevDesc]); + if (!selectedCamera || !cameraConfig) { return null; }