Fix camera enabled check (#17331)

* Fix camera enabled check

* Add fix to LiveCameraView
This commit is contained in:
leccelecce 2025-03-24 12:38:53 +00:00 committed by GitHub
parent 1f98162377
commit 1e45f63a7c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 15 additions and 11 deletions

View File

@ -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<LiveStreamMetadata>(
cameraEnabled && isRestreamed ? `go2rtc/streams/${streamName}` : null,
isCameraEnabled && isRestreamed ? `go2rtc/streams/${streamName}` : null,
{
revalidateOnFocus: false,
},

View File

@ -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<string>(
@ -160,7 +162,7 @@ export default function LiveCameraView({
);
const { data: cameraMetadata } = useSWR<LiveStreamMetadata>(
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}
/>
)}
<FrigateCameraFeatures
@ -581,7 +583,7 @@ export default function LiveCameraView({
setLowBandwidth={setLowBandwidth}
supportsAudioOutput={supportsAudioOutput}
supports2WayTalk={supports2WayTalk}
cameraEnabled={cameraEnabled}
cameraEnabled={isCameraEnabled ?? false}
/>
</div>
</TooltipProvider>