diff --git a/web/src/hooks/use-overlay-state.tsx b/web/src/hooks/use-overlay-state.tsx index 573598b0c..0db339c9b 100644 --- a/web/src/hooks/use-overlay-state.tsx +++ b/web/src/hooks/use-overlay-state.tsx @@ -38,12 +38,22 @@ export function usePersistedOverlayState( (value: S | undefined, replace?: boolean) => void, () => void, ] { - const [persistedValue, setPersistedValue, , deletePersistedValue] = - usePersistence(key, defaultValue); const location = useLocation(); const navigate = useNavigate(); const currentLocationState = useMemo(() => location.state, [location]); + // currently selected value + + const overlayStateValue = useMemo( + () => location.state && location.state[key], + [location, key], + ); + + // saved value from previous session + + const [persistedValue, setPersistedValue, , deletePersistedValue] = + usePersistence(key, overlayStateValue); + const setOverlayStateValue = useCallback( (value: S | undefined, replace: boolean = false) => { setPersistedValue(value); @@ -56,11 +66,6 @@ export function usePersistedOverlayState( [key, currentLocationState, navigate], ); - const overlayStateValue = useMemo( - () => location.state && location.state[key], - [location, key], - ); - return [ overlayStateValue ?? persistedValue ?? defaultValue, setOverlayStateValue, diff --git a/web/src/hooks/use-persistence.ts b/web/src/hooks/use-persistence.ts index 8762c1970..6478769a9 100644 --- a/web/src/hooks/use-persistence.ts +++ b/web/src/hooks/use-persistence.ts @@ -34,7 +34,6 @@ export function usePersistence( useEffect(() => { setLoaded(false); - setInternalValue(defaultValue); async function load() { const value = await getData(key);