fix: collab sync no longer overwrites layers with empty array

- Root cause: App.tsx collab sync effect called setLayers(collab.layers)
  even when collab.layers was empty, wiping out initialLayers
- Effect: RenderEngine.render() iterates layers to draw elements;
  with 0 layers, no elements render (appear to disappear)
- Fix: guard against empty collab.layers

Fixes: drawing tools work on desktop and mobile, objects persist after release
This commit is contained in:
2026-06-29 00:34:39 +02:00
parent db2b70f15b
commit 6b0b637636
+3
View File
@@ -299,9 +299,12 @@ const CADEditor: React.FC<CADEditorProps> = ({ projectId, token, onNavigateBack
setElements(merged); setElements(merged);
} }
// Never overwrite local layers with empty remote layers (prevents losing initialLayers)
if (collab.layers.length > 0) {
const sameLayers = collab.layers.length === layers.length && const sameLayers = collab.layers.length === layers.length &&
collab.layers.every((l, i) => l.id === layers[i]?.id); collab.layers.every((l, i) => l.id === layers[i]?.id);
if (!sameLayers) setLayers(collab.layers); if (!sameLayers) setLayers(collab.layers);
}
const sameBlocks = collab.blocks.length === blocks.length && const sameBlocks = collab.blocks.length === blocks.length &&
collab.blocks.every((b, i) => b.id === blocks[i]?.id); collab.blocks.every((b, i) => b.id === blocks[i]?.id);