From e91a24972c70084f49ad0e9040eaa6bbf801044b Mon Sep 17 00:00:00 2001 From: keiya sasaki Date: Thu, 7 Sep 2023 13:33:11 +0900 Subject: [PATCH] chore(web): fix the layer delete behavior (#666) --- web/src/beta/lib/core/Map/Layers/hooks.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/web/src/beta/lib/core/Map/Layers/hooks.ts b/web/src/beta/lib/core/Map/Layers/hooks.ts index 138af057a..2a9b553b7 100644 --- a/web/src/beta/lib/core/Map/Layers/hooks.ts +++ b/web/src/beta/lib/core/Map/Layers/hooks.ts @@ -545,6 +545,7 @@ export default function useHooks({ ], ); + const prevLayers = useRef([]); useLayoutEffect(() => { const ids = new Set(); @@ -556,14 +557,16 @@ export default function useHooks({ layerMap.set(l.id, l); }); - const deleted = Array.from(atomMap.keys()).filter(k => !ids.has(k)); - deleted.forEach(k => { + const deleted = prevLayers.current?.filter(l => !ids.has(l.id)).map(l => l.id); + deleted?.forEach(k => { atomMap.delete(k); layerMap.delete(k); lazyLayerMap.delete(k); showLayer(k); }); - setOverridenLayers(layers => layers.filter(l => !deleted.includes(l.id))); + setOverridenLayers(layers => layers.filter(l => !deleted?.includes(l.id))); + + prevLayers.current = layers; }, [atomMap, layers, layerMap, lazyLayerMap, setOverridenLayers, showLayer]); useEffect(() => {