diff --git a/src/features/drawer/components/SelectorList.jsx b/src/features/drawer/components/SelectorList.jsx index ae9e02cc7..c80c13b0f 100644 --- a/src/features/drawer/components/SelectorList.jsx +++ b/src/features/drawer/components/SelectorList.jsx @@ -29,11 +29,7 @@ import { BoolToggle } from '@components/inputs/BoolToggle' import { GenericSearchMemo } from '@components/inputs/GenericSearch' import { StandardItem } from '@components/virtual/StandardItem' -import { - getDrawerGridState, - setDrawerGridState, - useDrawerScrollMemory, -} from '../hooks/useScrollMemory' +import { useDrawerScrollMemory } from '../hooks/useScrollMemory' /** * @template {keyof import('@rm/types').Available} T @@ -111,31 +107,9 @@ function SelectorList({ .map((item) => item.id) }, [translated, search]) - const restoreStateFrom = React.useMemo( - () => getDrawerGridState(listScrollKey), - [listScrollKey], - ) - const shouldPersistGridState = drawer && visible - const scrollMemory = useDrawerScrollMemory( - listScrollKey, - shouldPersistGridState, - ) - - const handleStateChanged = React.useCallback( - (state) => { - if ( - !shouldPersistGridState || - !state.viewport.height || - !state.viewport.width || - !state.item.height || - !state.item.width - ) { - return - } - setDrawerGridState(listScrollKey, state) - }, - [listScrollKey, shouldPersistGridState], - ) + // only the scroll offset is restored: the grid works out which tiles to draw from it. Also restoring a + // grid state snapshot made the two disagree, and the grid drew a range that wasn't on screen (blank tiles) + const scrollMemory = useDrawerScrollMemory(listScrollKey, drawer && visible) /** @param {'enable' | 'disable' | 'advanced'} action */ const setAll = (action) => { @@ -226,13 +200,7 @@ function SelectorList({ : height } > - + {(_, key) => ( } */ -const gridStateMemory = new Map() - /** @type {Map} */ const scrollTopMemory = new Map() -/** - * @param {string} key - * @returns {import('react-virtuoso').GridStateSnapshot | null} - */ -export function getDrawerGridState(key) { - return gridStateMemory.get(key) || null -} - -/** - * @param {string} key - * @param {import('react-virtuoso').GridStateSnapshot} state - */ -export function setDrawerGridState(key, state) { - gridStateMemory.set(key, state) -} - /** * @template {HTMLElement} T * @param {string} key