From 644faaf65b9effbd0b1c6071cfb46209b9a35022 Mon Sep 17 00:00:00 2001 From: leccelecce <24962424+leccelecce@users.noreply.github.com> Date: Sat, 22 Mar 2025 19:13:41 +0000 Subject: [PATCH] Fix webUI generating HTTP500s when camera disabled (#17305) * Check camera enabled state before querying go2rtc * lint * Add change to CameraStreamingDialog --- web/src/components/settings/CameraStreamingDialog.tsx | 7 ++++++- web/src/views/live/LiveCameraView.tsx | 11 +++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/web/src/components/settings/CameraStreamingDialog.tsx b/web/src/components/settings/CameraStreamingDialog.tsx index b1c758a38..6e5fde8ba 100644 --- a/web/src/components/settings/CameraStreamingDialog.tsx +++ b/web/src/components/settings/CameraStreamingDialog.tsx @@ -1,4 +1,5 @@ import { useState, useCallback, useEffect, useMemo } from "react"; +import { useEnabledState } from "@/api/ws"; import { IoIosWarning } from "react-icons/io"; import { Button } from "@/components/ui/button"; import { @@ -63,6 +64,10 @@ export function CameraStreamingDialog({ // metadata + // camera enabled state + const { payload: enabledState } = useEnabledState(camera); + const cameraEnabled = enabledState === "ON"; + const isRestreamed = useMemo( () => config && @@ -71,7 +76,7 @@ export function CameraStreamingDialog({ ); const { data: cameraMetadata } = useSWR( - isRestreamed ? `go2rtc/streams/${streamName}` : null, + cameraEnabled && isRestreamed ? `go2rtc/streams/${streamName}` : null, { revalidateOnFocus: false, }, diff --git a/web/src/views/live/LiveCameraView.tsx b/web/src/views/live/LiveCameraView.tsx index 34d61d684..9a4b733ed 100644 --- a/web/src/views/live/LiveCameraView.tsx +++ b/web/src/views/live/LiveCameraView.tsx @@ -142,8 +142,11 @@ export default function LiveCameraView({ const [{ width: windowWidth, height: windowHeight }] = useResizeObserver(window); - // supported features + // camera enabled state + const { payload: enabledState } = useEnabledState(camera.name); + const cameraEnabled = enabledState === "ON"; + // supported features const [streamName, setStreamName] = usePersistence( `${camera.name}-stream`, Object.values(camera.live.streams)[0], @@ -157,7 +160,7 @@ export default function LiveCameraView({ ); const { data: cameraMetadata } = useSWR( - isRestreamed ? `go2rtc/streams/${streamName}` : null, + cameraEnabled && isRestreamed ? `go2rtc/streams/${streamName}` : null, { revalidateOnFocus: false, }, @@ -192,10 +195,6 @@ export default function LiveCameraView({ ); }, [cameraMetadata]); - // camera enabled state - const { payload: enabledState } = useEnabledState(camera.name); - const cameraEnabled = enabledState === "ON"; - // click overlay for ptzs const [clickOverlay, setClickOverlay] = useState(false);