const form = document.querySelector("#setup-form");
const message = document.querySelector("#message");

function showError(text) {
	message.textContent = text;
	message.className = "auth-message error";
}

form.addEventListener("submit", async (event) => {
	event.preventDefault();
	const submitButton = form.querySelector("button[type=submit]");
	submitButton.disabled = true;
	message.textContent = "";
	try {
		const response = await fetch("/api/auth/bootstrap", {
			method: "POST",
			headers: { "content-type": "application/json" },
			body: JSON.stringify(Object.fromEntries(new FormData(form))),
		});
		const body = await response.json();
		if (!response.ok) {
			showError(
				{
					bootstrap_used: "The administrator account already exists.",
					invalid_setup_token: "That setup token is incorrect.",
					bootstrap_unavailable: "Setup is not available in this deployment.",
				}[body.code] || body.error || "Could not create the administrator.",
			);
			return;
		}
		location.assign("/app");
	} catch {
		showError("Could not reach the server. Check your connection and try again.");
	} finally {
		submitButton.disabled = false;
	}
});
