X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/2f6ff0734773c4ac009de699a2661971fd585b22..refs/pull/2591/head:/resources/js/components/page-editor.js diff --git a/resources/js/components/page-editor.js b/resources/js/components/page-editor.js index 4fb472e7e..f66e23b19 100644 --- a/resources/js/components/page-editor.js +++ b/resources/js/components/page-editor.js @@ -12,7 +12,7 @@ class PageEditor { this.editorType = this.$opts.editorType; this.pageId = Number(this.$opts.pageId); this.isNewDraft = this.$opts.pageNewDraft === 'true'; - this.hasDefaultTitle = this.$opts.isDefaultTitle || false; + this.hasDefaultTitle = this.$opts.hasDefaultTitle || false; // Elements this.container = this.$el; @@ -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); } }