Skip to content

Commit 205b26b

Browse files
authored
Merge pull request #119 from reearth/chore/plugin-layer-visibility
chore: fix the plugin API response around layer visibility
2 parents 8aa9a37 + 27728da commit 205b26b

1 file changed

Lines changed: 16 additions & 6 deletions

File tree

src/Map/Layers/hooks.ts

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -153,11 +153,21 @@ export default function useHooks({
153153
[hiddenLayerIds, hiddenLayers],
154154
);
155155

156-
const layersRef = useGet(layers);
156+
const derivedLayers = useMemo(() => {
157+
return layers?.map(l => {
158+
const hidden = isHidden?.(l.id);
159+
return {
160+
...l,
161+
visible: hidden ? !hidden : l.visible,
162+
};
163+
});
164+
}, [isHidden, layers]);
165+
166+
const layersRef = useGet(derivedLayers);
157167
const [tempLayers, setTempLayers] = useState<Layer[]>([]);
158168
const tempLayersRef = useRef<Layer[]>([]);
159169
const flattenedLayers = useMemo((): Layer[] => {
160-
const newLayers = [...flattenLayers(layers ?? []), ...flattenLayers(tempLayers)];
170+
const newLayers = [...flattenLayers(derivedLayers ?? []), ...flattenLayers(tempLayers)];
161171
// apply overrides
162172
return newLayers.map(l => {
163173
const ol: any = overriddenLayers.find(ll => ll.id === l.id);
@@ -179,7 +189,7 @@ export default function useHooks({
179189

180190
return res;
181191
});
182-
}, [tempLayers, layers, overriddenLayers]);
192+
}, [derivedLayers, tempLayers, overriddenLayers]);
183193

184194
const getComputedLayer = useAtomValue(
185195
useMemo(
@@ -623,7 +633,7 @@ export default function useHooks({
623633
useLayoutEffect(() => {
624634
const ids = new Set<string>();
625635

626-
walkLayers(layers ?? [], l => {
636+
walkLayers(derivedLayers ?? [], l => {
627637
ids.add(l.id);
628638
if (!atomMap.has(l.id)) {
629639
atomMap.set(l.id, computeAtom());
@@ -643,8 +653,8 @@ export default function useHooks({
643653
overriddenLayersRef.current = updated;
644654
setOverridenLayers(updated);
645655

646-
prevLayers.current = layers;
647-
}, [atomMap, layers, layerMap, lazyLayerMap, setOverridenLayers, showLayer]);
656+
prevLayers.current = derivedLayers;
657+
}, [atomMap, layerMap, lazyLayerMap, setOverridenLayers, showLayer, derivedLayers]);
648658

649659
useEffect(() => {
650660
if (!requestingRenderMode || requestingRenderMode.current === FORCE_REQUEST_RENDER) return;

0 commit comments

Comments
 (0)