Speichern bei Änderungen

This commit is contained in:
2026-02-04 00:48:11 +01:00
parent 140da342bd
commit 3899c71ffe
2 changed files with 39 additions and 19 deletions

View File

@@ -1 +1 @@
1.2.35
1.2.36

View File

@@ -59,6 +59,8 @@ export function initEditor() {
let versionMap = new Map();
let currentVersionId = 0;
let currentVersionMeta = null;
let pendingSaveResolve = null;
let pendingSaveTimer = null;
const ok  = (m) => toast(m, true);
const err = (m) => toast(m, false);
@@ -481,7 +483,7 @@ export function initEditor() {
const fields = extractContentFields(payload);
savedSnapshot = buildSnapshot(fields);
clearDirty();
baselineReady = false;
baselineReady = true;
}
async function syncSnapshotFromEditor() {
@@ -1058,14 +1060,18 @@ export function initEditor() {
        // NEU: Wenn der Editor meldet, dass er *gespeichert* hat,
        // aktualisieren wir die Liste im Elternfenster
        if (d.type === 'save:success') {
          ok('Gespeichert');
          try {
            if (typeof window.reloadActiveList === 'function') window.reloadActiveList();
            else if (typeof window.__reloadList === 'function') window.__reloadList(current.section);
          } catch {}
          return;
        }
if (d.type === 'save:success') {
ok('Gespeichert');
try {
if (typeof window.reloadActiveList === 'function') window.reloadActiveList();
else if (typeof window.__reloadList === 'function') window.__reloadList(current.section);
} catch {}
if (pendingSaveResolve) {
pendingSaveResolve(true);
pendingSaveResolve = null;
}
return;
}
        
        // neue Bridge meldet gjs:ready; ältere evtl. core-ready/bridge:ready
        if (d.type === 'gjs:ready' || d.type === 'core-ready' || d.type === 'bridge:ready' || d.type === 'bridge:booted') {
@@ -1174,16 +1180,30 @@ export function initEditor() {
}
}
const okSave = await delegateCommand('save-data');
if (okSave) {
setTimeout(async () => {
await loadVersionsForCurrent();
try {
const res = await apiAction('content.get', { method: 'GET', data: { id: current.id, section_id: current.section.id } });
setSavedSnapshotFromData(res || {});
} catch {}
}, 800);
if (!okSave) return false;
if (pendingSaveTimer) {
clearTimeout(pendingSaveTimer);
pendingSaveTimer = null;
}
return okSave;
const saved = await new Promise((resolve) => {
pendingSaveResolve = resolve;
pendingSaveTimer = setTimeout(() => {
pendingSaveTimer = null;
if (pendingSaveResolve) {
pendingSaveResolve(false);
pendingSaveResolve = null;
}
}, 3000);
});
if (!saved) return false;
setTimeout(async () => {
await loadVersionsForCurrent();
try {
const res = await apiAction('content.get', { method: 'GET', data: { id: current.id, section_id: current.section.id } });
setSavedSnapshotFromData(res || {});
} catch {}
}, 200);
return true;
}
  // ... (Der Rest der Funktionen bleibt unverändert) ...