Compare commits

...

2 Commits

Author SHA1 Message Date
Chris
59bc856597
Merge 793906bb68 into c136e5e8bd 2025-12-05 08:54:50 +02:00
Chris Suich
793906bb68 feat: use persisted state for selected camera on settings page
Leverage the usePersistence() hook to store the selected camera so that
navigating away from the settings page and back will remember the
selected camera.
2025-11-15 11:26:59 -05:00

View File

@ -37,6 +37,7 @@ import EnrichmentsSettingsView from "@/views/settings/EnrichmentsSettingsView";
import UiSettingsView from "@/views/settings/UiSettingsView"; import UiSettingsView from "@/views/settings/UiSettingsView";
import FrigatePlusSettingsView from "@/views/settings/FrigatePlusSettingsView"; import FrigatePlusSettingsView from "@/views/settings/FrigatePlusSettingsView";
import { useSearchEffect } from "@/hooks/use-overlay-state"; import { useSearchEffect } from "@/hooks/use-overlay-state";
import { usePersistence } from "@/hooks/use-persistence";
import { useNavigate, useSearchParams } from "react-router-dom"; import { useNavigate, useSearchParams } from "react-router-dom";
import { useInitialCameraState } from "@/api/ws"; import { useInitialCameraState } from "@/api/ws";
import { useIsAdmin } from "@/hooks/use-is-admin"; import { useIsAdmin } from "@/hooks/use-is-admin";
@ -207,7 +208,21 @@ export default function Settings() {
.sort((aConf, bConf) => aConf.ui.order - bConf.ui.order); .sort((aConf, bConf) => aConf.ui.order - bConf.ui.order);
}, [config]); }, [config]);
const [selectedCamera, setSelectedCamera] = useState<string>(""); const [persistedCamera, setPersistedCamera] = usePersistence(
"selectedCamera",
"",
);
const [selectedCamera, setSelectedCamera] = useState(persistedCamera);
useEffect(() => {
if (persistedCamera) {
setSelectedCamera(persistedCamera);
}
}, [persistedCamera]);
useEffect(() => {
if (selectedCamera) {
setPersistedCamera(selectedCamera);
}
}, [selectedCamera, setPersistedCamera]);
const { payload: allCameraStates } = useInitialCameraState( const { payload: allCameraStates } = useInitialCameraState(
cameras.length > 0 ? cameras[0].name : "", cameras.length > 0 ? cameras[0].name : "",