validate idb stored stream name and reset if invalid

fixes https://github.com/blakeblackshear/frigate/discussions/21311
This commit is contained in:
Josh Hawkins 2025-12-16 19:50:10 -06:00
parent 361cb13cb6
commit 7c2f4b5d1e

View File

@ -147,10 +147,11 @@ export default function LiveCameraView({
// supported features // supported features
const [streamName, setStreamName] = useUserPersistence<string>( const [streamName, setStreamName, streamNameLoaded] =
`${camera.name}-stream`, useUserPersistence<string>(
Object.values(camera.live.streams)[0], `${camera.name}-stream`,
); Object.values(camera.live.streams)[0],
);
const isRestreamed = useMemo( const isRestreamed = useMemo(
() => () =>
@ -159,6 +160,19 @@ export default function LiveCameraView({
[config, streamName], [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<LiveStreamMetadata>( const { data: cameraMetadata } = useSWR<LiveStreamMetadata>(
isRestreamed ? `go2rtc/streams/${streamName}` : null, isRestreamed ? `go2rtc/streams/${streamName}` : null,
{ {