use first stream as default in dialog

This commit is contained in:
Josh Hawkins 2024-11-13 11:28:55 -06:00
parent d4585cc1c9
commit 9e34041e10

View File

@ -47,22 +47,30 @@ export function CameraStreamingDialog({
const [isDialogOpen, setIsDialogOpen] = useState(false); const [isDialogOpen, setIsDialogOpen] = useState(false);
const [isLoading, setIsLoading] = useState(false); const [isLoading, setIsLoading] = useState(false);
const [streamName, setStreamName] = useState(""); const [streamName, setStreamName] = useState(
Object.entries(config?.cameras[camera]?.live?.streams || {})[0]?.[1] || "",
);
const [streamType, setStreamType] = useState<StreamType>("smart"); const [streamType, setStreamType] = useState<StreamType>("smart");
const [compatibilityMode, setCompatibilityMode] = useState(false); const [compatibilityMode, setCompatibilityMode] = useState(false);
useEffect(() => { useEffect(() => {
if (!config) {
return;
}
if (groupStreamingSettings && groupStreamingSettings[camera]) { if (groupStreamingSettings && groupStreamingSettings[camera]) {
const cameraSettings = groupStreamingSettings[camera]; const cameraSettings = groupStreamingSettings[camera];
setStreamName(cameraSettings.streamName || ""); setStreamName(cameraSettings.streamName || "");
setStreamType(cameraSettings.streamType || "smart"); setStreamType(cameraSettings.streamType || "smart");
setCompatibilityMode(cameraSettings.compatibilityMode || false); setCompatibilityMode(cameraSettings.compatibilityMode || false);
} else { } else {
setStreamName(""); setStreamName(
Object.entries(config?.cameras[camera]?.live?.streams || {})[0]?.[1] ||
"",
);
setStreamType("smart"); setStreamType("smart");
setCompatibilityMode(false); setCompatibilityMode(false);
} }
}, [groupStreamingSettings, camera]); }, [groupStreamingSettings, camera, config]);
const handleSave = useCallback(() => { const handleSave = useCallback(() => {
setIsLoading(true); setIsLoading(true);
@ -81,18 +89,24 @@ export function CameraStreamingDialog({
]); ]);
const handleCancel = useCallback(() => { const handleCancel = useCallback(() => {
if (!config) {
return;
}
if (groupStreamingSettings && groupStreamingSettings[camera]) { if (groupStreamingSettings && groupStreamingSettings[camera]) {
const cameraSettings = groupStreamingSettings[camera]; const cameraSettings = groupStreamingSettings[camera];
setStreamName(cameraSettings.streamName || ""); setStreamName(cameraSettings.streamName || "");
setStreamType(cameraSettings.streamType || "smart"); setStreamType(cameraSettings.streamType || "smart");
setCompatibilityMode(cameraSettings.compatibilityMode || false); setCompatibilityMode(cameraSettings.compatibilityMode || false);
} else { } else {
setStreamName(""); setStreamName(
Object.entries(config?.cameras[camera]?.live?.streams || {})[0]?.[1] ||
"",
);
setStreamType("smart"); setStreamType("smart");
setCompatibilityMode(false); setCompatibilityMode(false);
} }
setIsDialogOpen(false); setIsDialogOpen(false);
}, [groupStreamingSettings, camera]); }, [groupStreamingSettings, camera, config]);
if (!config) { if (!config) {
return null; return null;
@ -141,9 +155,9 @@ export function CameraStreamingDialog({
<SelectContent> <SelectContent>
{camera !== "birdseye" && {camera !== "birdseye" &&
Object.entries(config?.cameras[camera].live.streams).map( Object.entries(config?.cameras[camera].live.streams).map(
([stream, name]) => ( ([name, stream]) => (
<SelectItem key={stream} value={name}> <SelectItem key={stream} value={stream}>
{stream} {name}
</SelectItem> </SelectItem>
), ),
)} )}