From 1466f245792bd42e87b551f6c3bd3f8fb38b2e78 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Sun, 18 Mar 2018 23:52:58 +0100
Subject: [PATCH] Minor UI fix

---
 assets/js/page_image_detail.js | 32 +++++++++-----------------------
 1 file changed, 9 insertions(+), 23 deletions(-)

diff --git a/assets/js/page_image_detail.js b/assets/js/page_image_detail.js
index 220e6b6..5e71833 100644
--- a/assets/js/page_image_detail.js
+++ b/assets/js/page_image_detail.js
@@ -19,31 +19,18 @@ const save = document.querySelector("#save");
 const updateForm = document.querySelector(".update-form");
 
 let lastTimeOut = null;
-let lastSaved = null;
-let hasChangedEver = false;
+let hasChanged = false;
+let isSaving = false;
 
-const currentState = () => {
+const doSave = () => {
     const data = new FormData(document.forms.namedItem("upload"));
     data.append("from_js", "true");
-    return data;
-};
-
-const formDataToJson = (data) => {
-    const result = {};
-    if (data != null) {
-        for (let key of data.keys()) {
-            result[key] = data.getAll(key);
-        }
-    }
-    return result;
-};
-
-const doSave = () => {
-    const data = currentState();
     save.value = "Saving…";
+    hasChanged = false;
+    isSaving = true;
     postData(location.href, data).then((json) => {
         save.value = "Saved";
-        lastSaved = formDataToJson(data);
+        isSaving = false;
     })
 };
 
@@ -51,7 +38,7 @@ const scheduleSave = () => {
     if (lastTimeOut !== null) {
         clearTimeout(lastTimeOut);
     }
-    hasChangedEver = true;
+    hasChanged = true;
     lastTimeOut = setTimeout(doSave, 300)
 };
 
@@ -60,7 +47,7 @@ const fakeTitleListener = (event) => {
         document.title = event.target.innerText + " | i.k8r";
         actualTitle.value = fakeTitle.innerText;
     });
-    hasChangedEver = true;
+    hasChanged = true;
     scheduleSave();
 
 };
@@ -94,8 +81,7 @@ save.addEventListener("click", (e) => {
 });
 
 window.addEventListener("beforeunload", (e) => {
-    const state = formDataToJson(currentState());
-    if (hasChangedEver && lastSaved !== state) {
+    if (isSaving || hasChanged) {
         const message = "Your changes have not been saved. Are you sure you want to leave?";
         e.preventDefault();
         e.returnValue = message;
-- 
GitLab