blob: 27d3eef3aec00c6f7d7c437b3b57394b1965858f (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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);
}
|