diff --git a/js/editor.js b/js/editor.js index 99cc1be..24c89be 100644 --- a/js/editor.js +++ b/js/editor.js @@ -173,30 +173,29 @@ resizeFabricToCanvas(); let jsonHasObjects = false; + let jsonHasBgImage = false; if (loadedFabricJson) { try { const parsed = (typeof loadedFabricJson === 'string') ? JSON.parse(loadedFabricJson) : loadedFabricJson; jsonHasObjects = parsed && Array.isArray(parsed.objects) && parsed.objects.length > 0; + jsonHasBgImage = jsonHasObjects && parsed.objects.some(o => o.bgImage === true || (o.type === 'image')); if (jsonHasObjects) { - // WICHTIG: loadFromJSON ist für fabric.Image async — Bilder kommen erst - // im Callback ins Canvas. Wir warten auf den Callback. await new Promise((res) => { fabricCanvas.loadFromJSON(parsed, () => { fabricCanvas.renderAll(); res(); }); }); - // Re-apply tool state: wenn aktuelles Tool nicht select ist, Objekte sperren applyTool(); } } catch (e) { console.warn('Fabric-JSON restore fehlgeschlagen:', e); - jsonHasObjects = false; } } - if (!jsonHasObjects) { - // Kein gespeicherter State → Quellbild frisch als Fabric-Image laden + // Wenn kein Bild im JSON (alter Bericht vor Phase 6) ODER nie gespeichert: + // Quellbild frisch als Fabric-Image laden und hinter die existierenden Shapes legen + if (!jsonHasBgImage) { await rerenderCurrent(); } }