import { useMemo } from "react"; import useSWR from "swr"; import { Trans } from "react-i18next"; import Heading from "@/components/ui/heading"; import { Separator } from "@/components/ui/separator"; import { Switch } from "@/components/ui/switch"; import { Label } from "@/components/ui/label"; import { FrigateConfig } from "@/types/frigateConfig"; import { useAlertsState, useDetectionsState, useObjectDescriptionState, useReviewDescriptionState, } from "@/api/ws"; import type { SectionRendererProps } from "./registry"; import CameraReviewClassification from "./CameraReviewClassification"; export default function CameraReviewStatusToggles({ selectedCamera, formContext, }: SectionRendererProps) { const { data: config } = useSWR("config"); const cameraId = selectedCamera ?? ""; const cameraConfig = useMemo(() => { if (config && selectedCamera) { return config.cameras[selectedCamera]; } }, [config, selectedCamera]); const { payload: alertsState, send: sendAlerts } = useAlertsState(cameraId); const { payload: detectionsState, send: sendDetections } = useDetectionsState(cameraId); const { payload: objDescState, send: sendObjDesc } = useObjectDescriptionState(cameraId); const { payload: revDescState, send: sendRevDesc } = useReviewDescriptionState(cameraId); if (!selectedCamera || !cameraConfig) { return null; } return (
cameraReview.title
{ sendAlerts(isChecked ? "ON" : "OFF"); }} />
{ sendDetections(isChecked ? "ON" : "OFF"); }} />
cameraReview.review.desc
{cameraConfig?.objects?.genai?.enabled_in_config && ( <> cameraReview.object_descriptions.title
{ sendObjDesc(isChecked ? "ON" : "OFF"); }} />
cameraReview.object_descriptions.desc
)} {cameraConfig?.review?.genai?.enabled_in_config && ( <> cameraReview.review_descriptions.title
{ sendRevDesc(isChecked ? "ON" : "OFF"); }} />
cameraReview.review_descriptions.desc
)}
); }