Fix group url param where a camera group was not always loaded

Need to use the loading state from the usePersistence hook because values are loaded from indexed db asynchronously
This commit is contained in:
Josh Hawkins 2025-09-30 17:03:20 -05:00
parent 923412ec1c
commit c10229da5d
3 changed files with 6 additions and 4 deletions

View File

@ -109,7 +109,7 @@ export function CameraGroupSelector({ className }: CameraGroupSelectorProps) {
// groups
const [group, setGroup, deleteGroup] = usePersistedOverlayState(
const [group, setGroup, , deleteGroup] = usePersistedOverlayState(
"cameraGroup",
"default" as string,
);

View File

@ -40,6 +40,7 @@ export function usePersistedOverlayState<S extends string>(
): [
S | undefined,
(value: S | undefined, replace?: boolean) => void,
boolean,
() => void,
] {
const location = useLocation();
@ -55,7 +56,7 @@ export function usePersistedOverlayState<S extends string>(
// saved value from previous session
const [persistedValue, setPersistedValue, , deletePersistedValue] =
const [persistedValue, setPersistedValue, loaded, deletePersistedValue] =
usePersistence<S>(key, overlayStateValue);
const setOverlayStateValue = useCallback(
@ -73,6 +74,7 @@ export function usePersistedOverlayState<S extends string>(
return [
overlayStateValue ?? persistedValue ?? defaultValue,
setOverlayStateValue,
loaded,
deletePersistedValue,
];
}

View File

@ -24,13 +24,13 @@ function Live() {
// selection
const [selectedCameraName, setSelectedCameraName] = useHashState();
const [cameraGroup, setCameraGroup] = usePersistedOverlayState(
const [cameraGroup, setCameraGroup, loaded, ,] = usePersistedOverlayState(
"cameraGroup",
"default" as string,
);
useSearchEffect("group", (cameraGroup) => {
if (config && cameraGroup) {
if (config && cameraGroup && loaded) {
const group = config.camera_groups[cameraGroup];
if (group) {