diff --git a/assets/js/page_image_detail.js b/assets/js/page_image_detail.js index 42d8b07e959eea4eaac9940334fe220e446566e1..42224a94c8612312edf83135ed3c26677ff1d2ad 100644 --- a/assets/js/page_image_detail.js +++ b/assets/js/page_image_detail.js @@ -19,13 +19,19 @@ const save = document.querySelector("#save"); const updateForm = document.querySelector(".update-form"); let lastTimeOut = null; +let lastSaved = null; -const doSave = () => { +const currentState = () => { const data = new FormData(document.forms.namedItem("upload")); data.append("from_js", "true"); +}; + +const doSave = () => { + const data = currentState(); save.value = "Saving…"; postData(location.href, data).then((json) => { save.value = "Saved"; + lastSaved = data; }) }; @@ -71,4 +77,11 @@ save.addEventListener("click", (e) => { e.preventDefault(); doSave(); -}); \ No newline at end of file +}); + +window.onbeforeunload = (e) => { + const state = currentState(); + if (lastSaved !== null && lastSaved !== state) { + return "Your changes have not been saved. Are you sure you want to leave?" + } +}; \ No newline at end of file