mirror of
https://github.com/blakeblackshear/frigate.git
synced 2025-12-06 13:34:13 +03:00
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.
This commit is contained in:
parent
097673b845
commit
793906bb68
@ -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 : "",
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user