diff --git a/layouts/_default/single.html b/layouts/_default/single.html index 58a200f..0744229 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -64,7 +64,16 @@ {{- end }} {{/* Dialog liegt auf eigener Seite — der Beitrag bleibt sauber */}} - → Dialog + → Dialog + {{ end }} diff --git a/static/dialog.js b/static/dialog.js index 495862b..b67b4ba 100644 --- a/static/dialog.js +++ b/static/dialog.js @@ -49,13 +49,16 @@ return d.toLocaleDateString('de-CH'); } + let lastSig = ''; async function load() { let data = []; try { const res = await fetch('/api/comments?thread=' + encodeURIComponent(thread)); if (res.ok) data = await res.json(); - } catch { /* offline */ } - render(data); + } catch { return; /* offline: alte Ansicht behalten */ } + // Nur neu rendern, wenn sich wirklich etwas geändert hat (kein Flackern). + const sig = (token ? 'in:' : 'out:') + data.map((c) => c.id + (c.deleted ? 'd' : '')).join(','); + if (sig !== lastSig) { lastSig = sig; render(data); } } function render(data) { @@ -161,4 +164,6 @@ renderComposer(); load(); + // Live genug: alle 10 s nachladen (pausiert, wenn der Tab im Hintergrund ist). + setInterval(() => { if (!document.hidden) load(); }, 10000); })();