Skip to content

Commit 46909f2

Browse files
committed
fix: Use {type}-{id} to index layers
1 parent 6b8195a commit 46909f2

File tree

1 file changed

+24
-16
lines changed

1 file changed

+24
-16
lines changed

app/configurator/components/custom-layers-selector.tsx

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -158,15 +158,24 @@ export const CustomLayersSelector = () => {
158158
};
159159

160160
const [addingLayer, setAddingLayer] = useState(false);
161-
const layersById = useMemo(() => {
162-
const layersById: Record<string, ParsedWMSLayer | ParsedWMTSLayer> = {};
161+
const getParsedLayer = useMemo(() => {
162+
const getKey = ({
163+
type,
164+
id,
165+
}: WMTSCustomLayer | WMSCustomLayer | ParsedWMSLayer | ParsedWMTSLayer) => {
166+
return `${type}-${id}`;
167+
};
168+
const layersByKey: Record<string, ParsedWMSLayer | ParsedWMTSLayer> = {};
163169
wmsLayers?.forEach((layer) => {
164-
layersById[layer.id] = layer;
170+
layersByKey[getKey(layer)] = layer;
165171
});
166172
wmtsLayers?.forEach((layer) => {
167-
layersById[layer.id] = layer;
173+
layersByKey[getKey(layer)] = layer;
168174
});
169-
return layersById;
175+
return (configLayer: WMTSCustomLayer | WMSCustomLayer) => {
176+
const key = getKey(configLayer);
177+
return layersByKey[key];
178+
};
170179
}, [wmsLayers, wmtsLayers]);
171180
const sectionTitleClasses = useSectionTitleStyles({
172181
sectionOpen: true,
@@ -222,12 +231,12 @@ export const CustomLayersSelector = () => {
222231
<Droppable droppableId="layers">
223232
{(provided) => (
224233
<div {...provided.droppableProps} ref={provided.innerRef}>
225-
{customLayers.map((customLayer, i) => {
234+
{customLayers.map((configLayer, i) => {
226235
return (
227236
<DraggableLayer
228-
key={`${customLayer.type}-${customLayer.id}`}
229-
configLayer={customLayer}
230-
layersById={layersById}
237+
key={`${configLayer.type}-${configLayer.id}`}
238+
configLayer={configLayer}
239+
parsedLayer={getParsedLayer(configLayer)}
231240
index={i}
232241
/>
233242
);
@@ -262,30 +271,29 @@ export const CustomLayersSelector = () => {
262271
const DraggableLayer = ({
263272
configLayer,
264273
index,
265-
layersById,
274+
parsedLayer,
266275
}: {
267276
configLayer: WMSCustomLayer | WMTSCustomLayer;
268277
index: number;
269-
layersById: Record<string, ParsedWMSLayer | ParsedWMTSLayer>;
278+
parsedLayer: ParsedWMSLayer | ParsedWMTSLayer;
270279
}) => {
271280
const [_, dispatch] = useConfiguratorState(isConfiguring);
272281
const value = configLayer.id;
273-
const layer = layersById[configLayer.id];
274282

275283
const enableTemporalFiltering = useMemo(() => {
276284
switch (configLayer.type) {
277285
case "wms":
278286
return false;
279287
case "wmts":
280288
return (
281-
layer?.availableDimensionValues &&
282-
layer.availableDimensionValues.length > 1
289+
parsedLayer?.availableDimensionValues &&
290+
parsedLayer.availableDimensionValues.length > 1
283291
);
284292
default:
285293
const _exhaustiveCheck: never = configLayer;
286294
return _exhaustiveCheck;
287295
}
288-
}, [configLayer, layer?.availableDimensionValues]);
296+
}, [configLayer, parsedLayer?.availableDimensionValues]);
289297

290298
const handleRemoveClick = () => {
291299
dispatch({
@@ -314,7 +322,7 @@ const DraggableLayer = ({
314322
}}
315323
>
316324
<Typography variant="body3" sx={{ flexGrow: 1 }}>
317-
{layer?.title ?? "Unknown layer"}
325+
{parsedLayer?.title ?? "Unknown layer"}
318326
</Typography>
319327
<IconButton onClick={handleRemoveClick}>
320328
<Icon name="trash" />

0 commit comments

Comments
 (0)