From d9e2bddee4297eb71a17b277aba5e948663feb2d Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sun, 13 Sep 2020 19:32:45 +0100 Subject: [PATCH] Added some robustness to page draft saving - Updated so that a warning is always shown on error, Not just on first in chain. - Added last-resort localStorage content saving. --- resources/js/components/page-editor.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/resources/js/components/page-editor.js b/resources/js/components/page-editor.js index 4fb472e7e..266e19182 100644 --- a/resources/js/components/page-editor.js +++ b/resources/js/components/page-editor.js @@ -40,7 +40,6 @@ class PageEditor { frequency: 30000, last: 0, }; - this.draftHasError = false; if (this.pageId !== 0 && this.draftsEnabled) { window.setTimeout(() => { @@ -115,17 +114,19 @@ class PageEditor { try { const resp = await window.$http.put(`/ajax/page/${this.pageId}/save-draft`, data); - this.draftHasError = false; if (!this.isNewDraft) { this.toggleDiscardDraftVisibility(true); } this.draftNotifyChange(`${resp.data.message} ${Dates.utcTimeStampToLocalTime(resp.data.timestamp)}`); this.autoSave.last = Date.now(); } catch (err) { - if (!this.draftHasError) { - this.draftHasError = true; - window.$events.emit('error', this.autosaveFailText); - } + // Save the editor content in LocalStorage as a last resort, just in case. + try { + const saveKey = `draft-save-fail-${(new Date()).toISOString()}`; + window.localStorage.setItem(saveKey, JSON.stringify(data)); + } catch (err) {} + + window.$events.emit('error', this.autosaveFailText); } }