From 907953f03a2a9182ecc85583ce6f71670704f433 Mon Sep 17 00:00:00 2001 From: Eloi BERLINGER Date: Mon, 20 Apr 2026 22:09:49 +0200 Subject: [PATCH 1/2] refactor(EditorApp, AddHoldModal): improve hold instance handling and type safety --- frontend/src/features/editor/EditorApp.tsx | 8 ++++---- frontend/src/features/editor/components/AddHoldModal.tsx | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/src/features/editor/EditorApp.tsx b/frontend/src/features/editor/EditorApp.tsx index 6f2991a..d8a2d7d 100644 --- a/frontend/src/features/editor/EditorApp.tsx +++ b/frontend/src/features/editor/EditorApp.tsx @@ -86,10 +86,10 @@ function EditorApp() { const holdModelsGLBURL: string[] = []; if (session_data?.related_holds_collection) { session_data.holds_collection_instances?.forEach((hold: SessionHoldInstance) => { - hold.hold_instance_id = hold.id; - holdModels.push(hold); - if (hold.hold_type?.glb_url) { - holdModelsGLBURL.push(hold.hold_type.glb_url); + const holdWithId = { ...hold, hold_instance_id: hold.id }; + holdModels.push(holdWithId); + if (holdWithId.hold_type?.glb_url) { + holdModelsGLBURL.push(holdWithId.hold_type.glb_url); } }); } diff --git a/frontend/src/features/editor/components/AddHoldModal.tsx b/frontend/src/features/editor/components/AddHoldModal.tsx index 1538324..4bd4a87 100644 --- a/frontend/src/features/editor/components/AddHoldModal.tsx +++ b/frontend/src/features/editor/components/AddHoldModal.tsx @@ -110,7 +110,7 @@ export default function AddHoldModal({ ? deduplicatedStockData.filter( (hold: StockItem) => !currentHoldTypeIds.has(hold.hold_type.id) && - !addedHoldIds.has(hold.hold_type.id as number) + !addedHoldIds.has(hold.hold_type.id) ) : deduplicatedStockData; From 0d191693878151d763ed0fdcf967e421173da5fe Mon Sep 17 00:00:00 2001 From: Eloi BERLINGER Date: Mon, 20 Apr 2026 22:16:55 +0200 Subject: [PATCH 2/2] GLB URL using Set for improved uniqueness --- frontend/src/features/editor/EditorApp.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/frontend/src/features/editor/EditorApp.tsx b/frontend/src/features/editor/EditorApp.tsx index d8a2d7d..64f5397 100644 --- a/frontend/src/features/editor/EditorApp.tsx +++ b/frontend/src/features/editor/EditorApp.tsx @@ -83,16 +83,17 @@ function EditorApp() { const { holdModels, holdModelsGLBURL } = useMemo(() => { const holdModels: SessionHoldInstance[] = []; - const holdModelsGLBURL: string[] = []; + const glbUrlSet = new Set(); if (session_data?.related_holds_collection) { session_data.holds_collection_instances?.forEach((hold: SessionHoldInstance) => { const holdWithId = { ...hold, hold_instance_id: hold.id }; holdModels.push(holdWithId); if (holdWithId.hold_type?.glb_url) { - holdModelsGLBURL.push(holdWithId.hold_type.glb_url); + glbUrlSet.add(holdWithId.hold_type.glb_url); } }); } + const holdModelsGLBURL = Array.from(glbUrlSet); return { holdModels, holdModelsGLBURL }; }, [session_data?.related_holds_collection, session_data?.holds_collection_instances]);