From 9cb047c8b63ace376a7f6cf074f07bddfdfdf785 Mon Sep 17 00:00:00 2001 From: AlacrisDevs Date: Sun, 8 Feb 2026 23:59:00 +0200 Subject: [PATCH] Delete fix --- src/lib/components/modules/MapWidget.svelte | 124 +++++++++++--------- 1 file changed, 70 insertions(+), 54 deletions(-) diff --git a/src/lib/components/modules/MapWidget.svelte b/src/lib/components/modules/MapWidget.svelte index 98e78a1..05cfbea 100644 --- a/src/lib/components/modules/MapWidget.svelte +++ b/src/lib/components/modules/MapWidget.svelte @@ -1008,39 +1008,46 @@ return; } - const layerId = payload.new?.layer_id ?? payload.old?.layer_id; - if (!layerId) return; + let layerId = payload.new?.layer_id ?? payload.old?.layer_id; - if (payload.event === "INSERT") { - layers = layers.map((l) => - l.id === layerId - ? { - ...l, - pins: [ - ...l.pins.filter((p) => p.id !== id), - payload.new, - ], - } - : l, - ); - } else if (payload.event === "UPDATE") { - layers = layers.map((l) => - l.id === layerId - ? { - ...l, - pins: l.pins.map((p) => - p.id === id ? payload.new : p, - ), - } - : l, - ); - } else if (payload.event === "DELETE") { + if (payload.event === "DELETE") { + if (!layerId) + layerId = layers.find((l) => + l.pins.some((p) => p.id === id), + )?.id; + if (!layerId) return; layers = layers.map((l) => l.id === layerId ? { ...l, pins: l.pins.filter((p) => p.id !== id) } : l, ); if (selectedObjectId === id) deselectAll(); + } else { + if (!layerId) return; + if (payload.event === "INSERT") { + layers = layers.map((l) => + l.id === layerId + ? { + ...l, + pins: [ + ...l.pins.filter((p) => p.id !== id), + payload.new, + ], + } + : l, + ); + } else if (payload.event === "UPDATE") { + layers = layers.map((l) => + l.id === layerId + ? { + ...l, + pins: l.pins.map((p) => + p.id === id ? payload.new : p, + ), + } + : l, + ); + } } const layerIdx = layers.findIndex((l) => l.id === layerId); @@ -1055,33 +1062,14 @@ return; } - const layerId = payload.new?.layer_id ?? payload.old?.layer_id; - if (!layerId) return; + let layerId = payload.new?.layer_id ?? payload.old?.layer_id; - if (payload.event === "INSERT") { - layers = layers.map((l) => - l.id === layerId - ? { - ...l, - shapes: [ - ...(l.shapes ?? []).filter((s) => s.id !== id), - payload.new, - ], - } - : l, - ); - } else if (payload.event === "UPDATE") { - layers = layers.map((l) => - l.id === layerId - ? { - ...l, - shapes: (l.shapes ?? []).map((s) => - s.id === id ? payload.new : s, - ), - } - : l, - ); - } else if (payload.event === "DELETE") { + if (payload.event === "DELETE") { + if (!layerId) + layerId = layers.find((l) => + (l.shapes ?? []).some((s) => s.id === id), + )?.id; + if (!layerId) return; layers = layers.map((l) => l.id === layerId ? { @@ -1091,6 +1079,34 @@ : l, ); if (selectedObjectId === id) deselectAll(); + } else { + if (!layerId) return; + if (payload.event === "INSERT") { + layers = layers.map((l) => + l.id === layerId + ? { + ...l, + shapes: [ + ...(l.shapes ?? []).filter( + (s) => s.id !== id, + ), + payload.new, + ], + } + : l, + ); + } else if (payload.event === "UPDATE") { + layers = layers.map((l) => + l.id === layerId + ? { + ...l, + shapes: (l.shapes ?? []).map((s) => + s.id === id ? payload.new : s, + ), + } + : l, + ); + } } const layerIdx = layers.findIndex((l) => l.id === layerId); @@ -1439,7 +1455,7 @@ > closedelete {/if} @@ -1510,7 +1526,7 @@ > closedelete {/if}