diff --git a/web/src/components/settings/CameraStreamingDialog.tsx b/web/src/components/settings/CameraStreamingDialog.tsx index 393de0419..cb16acaf2 100644 --- a/web/src/components/settings/CameraStreamingDialog.tsx +++ b/web/src/components/settings/CameraStreamingDialog.tsx @@ -1,5 +1,5 @@ import { useState, useCallback, useEffect, useMemo } from "react"; -import { useEnabledState } from "@/api/ws"; +import { useCameraActivity } from "@/hooks/use-camera-activity"; import { IoIosWarning } from "react-icons/io"; import { Button } from "@/components/ui/button"; import { @@ -24,6 +24,7 @@ import { Checkbox } from "@/components/ui/checkbox"; import { Label } from "@/components/ui/label"; import { FrigateConfig, + CameraConfig, GroupStreamingSettings, StreamType, } from "@/types/frigateConfig"; @@ -65,8 +66,9 @@ export function CameraStreamingDialog({ // metadata // camera enabled state - const { payload: enabledState } = useEnabledState(camera); - const cameraEnabled = enabledState === "ON"; + const { enabled: isCameraEnabled } = useCameraActivity( + config?.cameras[camera] ?? ({} as CameraConfig), + ); const isRestreamed = useMemo( () => @@ -76,7 +78,7 @@ export function CameraStreamingDialog({ ); const { data: cameraMetadata } = useSWR( - cameraEnabled && isRestreamed ? `go2rtc/streams/${streamName}` : null, + isCameraEnabled && isRestreamed ? `go2rtc/streams/${streamName}` : null, { revalidateOnFocus: false, }, diff --git a/web/src/views/live/LiveCameraView.tsx b/web/src/views/live/LiveCameraView.tsx index 9a4b733ed..e067db157 100644 --- a/web/src/views/live/LiveCameraView.tsx +++ b/web/src/views/live/LiveCameraView.tsx @@ -112,6 +112,7 @@ import { SelectTrigger, } from "@/components/ui/select"; import { usePersistence } from "@/hooks/use-persistence"; +import { useCameraActivity } from "@/hooks/use-camera-activity"; import { Label } from "@/components/ui/label"; import { Switch } from "@/components/ui/switch"; import axios from "axios"; @@ -143,8 +144,9 @@ export default function LiveCameraView({ useResizeObserver(window); // camera enabled state - const { payload: enabledState } = useEnabledState(camera.name); - const cameraEnabled = enabledState === "ON"; + const { enabled: isCameraEnabled } = useCameraActivity( + config?.cameras[camera.name] ?? ({} as CameraConfig), + ); // supported features const [streamName, setStreamName] = usePersistence( @@ -160,7 +162,7 @@ export default function LiveCameraView({ ); const { data: cameraMetadata } = useSWR( - cameraEnabled && isRestreamed ? `go2rtc/streams/${streamName}` : null, + isCameraEnabled && isRestreamed ? `go2rtc/streams/${streamName}` : null, { revalidateOnFocus: false, }, @@ -520,7 +522,7 @@ export default function LiveCameraView({ setPip(false); } }} - disabled={!cameraEnabled} + disabled={!isCameraEnabled} /> )} {supports2WayTalk && ( @@ -542,7 +544,7 @@ export default function LiveCameraView({ setAudio(true); } }} - disabled={!cameraEnabled} + disabled={!isCameraEnabled} /> )} {supportsAudioOutput && preferredLiveMode != "jsmpeg" && ( @@ -559,7 +561,7 @@ export default function LiveCameraView({ t("button.cameraAudio", { ns: "common" }) } onClick={() => setAudio(!audio)} - disabled={!cameraEnabled} + disabled={!isCameraEnabled} /> )}