From d08125a4177bf340f7a8934b8b75fe6489f87804 Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Sun, 23 Mar 2025 13:25:10 -0500 Subject: [PATCH] default to first go2rtc stream when stream name doesn't exist in storage --- .../settings/CameraStreamingDialog.tsx | 37 ++++++++++++++----- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/web/src/components/settings/CameraStreamingDialog.tsx b/web/src/components/settings/CameraStreamingDialog.tsx index 6e5fde8ba..393de0419 100644 --- a/web/src/components/settings/CameraStreamingDialog.tsx +++ b/web/src/components/settings/CameraStreamingDialog.tsx @@ -103,16 +103,24 @@ export function CameraStreamingDialog({ if (!config) { return; } + + // Get available streams from the config and first stream entry as fallback + const availableStreams = config?.cameras[camera]?.live?.streams || {}; + const firstStreamEntry = Object.entries(availableStreams)[0]?.[1] || ""; + if (groupStreamingSettings && groupStreamingSettings[camera]) { const cameraSettings = groupStreamingSettings[camera]; - setStreamName(cameraSettings.streamName || ""); + const streamNameFromSettings = cameraSettings.streamName || ""; + + const streamExists = + streamNameFromSettings && + Object.values(availableStreams).includes(streamNameFromSettings); + + setStreamName(streamExists ? streamNameFromSettings : firstStreamEntry); setStreamType(cameraSettings.streamType || "smart"); setCompatibilityMode(cameraSettings.compatibilityMode || false); } else { - setStreamName( - Object.entries(config?.cameras[camera]?.live?.streams || {})[0]?.[1] || - "", - ); + setStreamName(firstStreamEntry); setStreamType("smart"); setCompatibilityMode(false); } @@ -150,19 +158,28 @@ export function CameraStreamingDialog({ if (!config) { return; } + + // Get available streams from the config and first stream entry as fallback + const availableStreams = config?.cameras[camera]?.live?.streams || {}; + const firstStreamEntry = Object.entries(availableStreams)[0]?.[1] || ""; + if (groupStreamingSettings && groupStreamingSettings[camera]) { const cameraSettings = groupStreamingSettings[camera]; - setStreamName(cameraSettings.streamName || ""); + const streamNameFromSettings = cameraSettings.streamName || ""; + + const streamExists = + streamNameFromSettings && + Object.values(availableStreams).includes(streamNameFromSettings); + + setStreamName(streamExists ? streamNameFromSettings : firstStreamEntry); setStreamType(cameraSettings.streamType || "smart"); setCompatibilityMode(cameraSettings.compatibilityMode || false); } else { - setStreamName( - Object.entries(config?.cameras[camera]?.live?.streams || {})[0]?.[1] || - "", - ); + setStreamName(firstStreamEntry); setStreamType("smart"); setCompatibilityMode(false); } + setIsDialogOpen(false); }, [groupStreamingSettings, camera, config, setIsDialogOpen]);