summaryrefslogtreecommitdiffstats
path: root/static/note.js
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);
}