From 7c2f4b5d1e4a9d0678b8c6fadf3cd7d16ecb1d5d Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Tue, 16 Dec 2025 19:50:10 -0600 Subject: [PATCH] validate idb stored stream name and reset if invalid fixes https://github.com/blakeblackshear/frigate/discussions/21311 --- web/src/views/live/LiveCameraView.tsx | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/web/src/views/live/LiveCameraView.tsx b/web/src/views/live/LiveCameraView.tsx index a9c62f623..5de52d243 100644 --- a/web/src/views/live/LiveCameraView.tsx +++ b/web/src/views/live/LiveCameraView.tsx @@ -147,10 +147,11 @@ export default function LiveCameraView({ // supported features - const [streamName, setStreamName] = useUserPersistence( - `${camera.name}-stream`, - Object.values(camera.live.streams)[0], - ); + const [streamName, setStreamName, streamNameLoaded] = + useUserPersistence( + `${camera.name}-stream`, + Object.values(camera.live.streams)[0], + ); const isRestreamed = useMemo( () => @@ -159,6 +160,19 @@ export default function LiveCameraView({ [config, streamName], ); + // validate stored stream name and reset if now invalid + + useEffect(() => { + if (!streamNameLoaded) return; + + const available = Object.values(camera.live.streams || {}); + if (available.length === 0) return; + + if (streamName != null && !available.includes(streamName)) { + setStreamName(available[0]); + } + }, [streamNameLoaded, camera.live.streams, streamName, setStreamName]); + const { data: cameraMetadata } = useSWR( isRestreamed ? `go2rtc/streams/${streamName}` : null, {