diff options
| author | Oskar Nyberg <oskar@mullvad.net> | 2024-04-17 10:15:52 +0200 |
|---|---|---|
| committer | Oskar Nyberg <oskar@mullvad.net> | 2024-04-17 10:15:52 +0200 |
| commit | 3f06c5015118374f494887ffa50f5843f43a3fad (patch) | |
| tree | d76ff2189e59858c79af905ff7e6b98f4ffa152f | |
| parent | a94ee24bd54f0b513676f0959c8755df0ab0e602 (diff) | |
| parent | d4270807cd360ab7b659628782255811ee0af579 (diff) | |
| download | mullvadvpn-3f06c5015118374f494887ffa50f5843f43a3fad.tar.xz mullvadvpn-3f06c5015118374f494887ffa50f5843f43a3fad.zip | |
Merge branch 'fix-select-location-pop-scroll-position'
| -rw-r--r-- | gui/src/renderer/components/select-location/ScrollPositionContext.tsx | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gui/src/renderer/components/select-location/ScrollPositionContext.tsx b/gui/src/renderer/components/select-location/ScrollPositionContext.tsx index 04fcd0bccc..d27e252427 100644 --- a/gui/src/renderer/components/select-location/ScrollPositionContext.tsx +++ b/gui/src/renderer/components/select-location/ScrollPositionContext.tsx @@ -1,5 +1,7 @@ +import { Action } from 'history'; import React, { useCallback, useContext, useEffect, useMemo, useRef } from 'react'; +import { useHistory } from '../../lib/history'; import { useNormalRelaySettings, useStyledRef } from '../../lib/utilityHooks'; import { CustomScrollbarsRef } from '../CustomScrollbars'; import { LocationType } from './select-location-types'; @@ -37,6 +39,9 @@ export function ScrollPositionContextProvider(props: ScrollPositionContextProps) const { locationType, searchTerm } = useSelectLocationContext(); const relaySettings = useNormalRelaySettings(); + const { action } = useHistory(); + const recentNavigationAction = useRef<Action | null>(action); + const scrollPositions = useRef<Partial<Record<LocationType, ScrollPosition>>>({}); const scrollViewRef = useRef<CustomScrollbarsRef>(null); const spacePreAllocationViewRef = useStyledRef<SpacePreAllocationView>(); @@ -82,6 +87,11 @@ export function ScrollPositionContextProvider(props: ScrollPositionContextProps) // Restore the scroll position when parameters change useEffect(() => { + if (recentNavigationAction.current === 'POP') { + recentNavigationAction.current = null; + return; + } + const scrollPosition = scrollPositions.current?.[locationType]; if (scrollPosition) { scrollViewRef.current?.scrollTo(...scrollPosition); |
