From bba551333a5e9c83204e45a79bfa7629b1a20cd7 Mon Sep 17 00:00:00 2001 From: Tomasz Sawicki Date: Thu, 27 Apr 2017 09:32:48 +0200 Subject: [PATCH] Fixes autosave submit handler Clear autosave timeout in submit handler to prevent reinserting data to local storage after the submit. Also, prevent attaching the same submit handler in every autosave call. --- src/js/simplemde.js | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/js/simplemde.js b/src/js/simplemde.js index 2de43f3..15c2982 100644 --- a/src/js/simplemde.js +++ b/src/js/simplemde.js @@ -1601,10 +1601,22 @@ SimpleMDE.prototype.autosave = function() { return; } - if(simplemde.element.form != null && simplemde.element.form != undefined) { - simplemde.element.form.addEventListener("submit", function() { - localStorage.removeItem("smde_" + simplemde.options.autosave.uniqueId); - }); + if(this.options.autosave.binded !== true) { + if(simplemde.element.form != null && simplemde.element.form != undefined) { + simplemde.element.form.addEventListener("submit", function() { + clearTimeout(simplemde.autosaveTimeoutId); + simplemde.autosaveTimeoutId = undefined; + + localStorage.removeItem("smde_" + simplemde.options.autosave.uniqueId); + + // Restart autosaving in case the submit will be cancelled down the line + setTimeout(function() { + simplemde.autosave(); + }, 10000); + }); + } + + this.options.autosave.binded = true; } if(this.options.autosave.loaded !== true) {