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:
@@ -299,9 +299,12 @@ const CADEditor: React.FC<CADEditorProps> = ({ projectId, token, onNavigateBack
|
|||||||
setElements(merged);
|
setElements(merged);
|
||||||
}
|
}
|
||||||
|
|
||||||
const sameLayers = collab.layers.length === layers.length &&
|
// Never overwrite local layers with empty remote layers (prevents losing initialLayers)
|
||||||
collab.layers.every((l, i) => l.id === layers[i]?.id);
|
if (collab.layers.length > 0) {
|
||||||
if (!sameLayers) setLayers(collab.layers);
|
const sameLayers = collab.layers.length === layers.length &&
|
||||||
|
collab.layers.every((l, i) => l.id === layers[i]?.id);
|
||||||
|
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);
|
||||||
|
|||||||
Reference in New Issue
Block a user