summaryrefslogtreecommitdiffstats
path: root/static/note.js
diff options
context:
space:
mode:
Diffstat (limited to 'static/note.js')
-rw-r--r--static/note.js39
1 files changed, 39 insertions, 0 deletions
diff --git a/static/note.js b/static/note.js
new file mode 100644
index 0000000..27d3eef
--- /dev/null
+++ b/static/note.js
@@ -0,0 +1,39 @@
+let running = false;
+let pending = false;
+
+async function save() {
+ if (running) {
+ pending = true;
+ return;
+ }
+ running = true;
+
+ try {
+ const indicator = document.getElementById("save-indicator");
+ indicator.innerHTML = "Saving...";
+ indicator.classList.remove("hidden");
+
+ let responseHTML;
+ do {
+ pending = false;
+ const response = await fetch("/notepad/autosave", {
+ method: "POST",
+ body: new FormData(document.getElementById("form")),
+ });
+ responseHTML = await response.text();
+ } while (pending);
+ // Who needs HTMX?
+ document.getElementById("save-indicator-wrapper").innerHTML = responseHTML;
+ } finally {
+ running = false;
+ }
+}
+
+let autosaveTimer;
+
+function autosave(key) {
+ document.getElementById("save-indicator").classList.add("hidden");
+
+ clearTimeout(autosaveTimer);
+ autosaveTimer = setTimeout(() => save(key), 1000);
+}