From 32c3b073a07b7ed463e8ed6661f21e8bfb22c6bf Mon Sep 17 00:00:00 2001 From: root Date: Fri, 17 Jul 2026 09:06:50 +0000 Subject: [PATCH] feat: disable Edit Online buttons for 2s during cleanup, re-enable dynamically --- .../433a0593-d3cf-414e-8763-ab5f87cbc75c.docx | Bin 40685 -> 40675 bytes renderer/carbone-templates/registry.json | 2 +- static/carbone.js | 40 +++++++++++++++--- static/index.html | 4 +- 4 files changed, 37 insertions(+), 9 deletions(-) diff --git a/renderer/carbone-templates/433a0593-d3cf-414e-8763-ab5f87cbc75c.docx b/renderer/carbone-templates/433a0593-d3cf-414e-8763-ab5f87cbc75c.docx index 2db4c184eec9f4b6b660ace7f2c54762efeb549d..b1dddaaf11fecf0cfd7a9fcad7bc65c7dfb17a81 100644 GIT binary patch delta 2153 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 { + editorCleaningUp = false; + enableEditButtons(); + loadOnlyofficeTemplates(); + }, 2000); +} + +// Disable/enable all "Edit Online" buttons with a status label +function disableEditButtons(label) { + document.querySelectorAll('button[onclick^="openOnlyofficeEditor"]').forEach(btn => { + btn.disabled = true; + btn.style.opacity = '0.5'; + btn.style.cursor = 'not-allowed'; + btn.dataset.originalText = btn.textContent; + btn.textContent = label || 'Please wait...'; + }); +} +function enableEditButtons() { + document.querySelectorAll('button[onclick^="openOnlyofficeEditor"]').forEach(btn => { + btn.disabled = false; + btn.style.opacity = ''; + btn.style.cursor = ''; + if (btn.dataset.originalText) btn.textContent = btn.dataset.originalText; + }); } // Open ONLYOFFICE editor in a modal async function openOnlyofficeEditor(templateId, templateName) { - // Block reopening if a previous editor is still tearing down. - // destroyEditor() is async — the ONLYOFFICE websocket/session needs - // time to close before a new editor can be created cleanly. + // Don't open if cleanup is in progress + if (editorCleaningUp) return; + if (onlyofficeEditorInstance) { try { onlyofficeEditorInstance.destroyEditor(); } catch (e) {} onlyofficeEditorInstance = null; - // Give ONLYOFFICE's internal session 2 seconds to fully close - await new Promise(r => setTimeout(r, 2000)); } try { diff --git a/static/index.html b/static/index.html index 90fe4cd..e62ca04 100644 --- a/static/index.html +++ b/static/index.html @@ -139,7 +139,7 @@ - - + + \ No newline at end of file