Keep name input while polling by tracking user editing state

This commit is contained in:
2026-01-28 15:16:03 +01:00
parent 57de6bb8f1
commit 5cb9135179

View File

@@ -48,7 +48,10 @@ async function loadState() {
state.counts = stateData; state.counts = stateData;
renderPhasePill(); renderPhasePill();
renderCounts(); renderCounts();
$("name-input").value = me.displayName || ""; const nameInput = $("name-input");
if (!nameInput.dataset.userEditing) {
nameInput.value = me.displayName || "";
}
$("player-id").textContent = `Player ID: ${me.id}`; $("player-id").textContent = `Player ID: ${me.id}`;
} }
@@ -166,12 +169,19 @@ function renderResults() {
} }
function setupHandlers() { function setupHandlers() {
const nameInput = $("name-input");
["focus", "input"].forEach(evt => {
nameInput.addEventListener(evt, () => { nameInput.dataset.userEditing = "1"; });
});
nameInput.addEventListener("blur", () => { nameInput.dataset.userEditing = ""; });
$("save-name").addEventListener("click", async () => { $("save-name").addEventListener("click", async () => {
const name = $("name-input").value.trim(); const name = nameInput.value.trim();
if (!name) return toast("Name required", true); if (!name) return toast("Name required", true);
try { try {
const me = await api("/api/me/name", { method: "POST", body: JSON.stringify({ name }) }); const me = await api("/api/me/name", { method: "POST", body: JSON.stringify({ name }) });
state.me = me; state.me = me;
nameInput.dataset.userEditing = "";
toast("Saved name"); toast("Saved name");
} catch (err) { } catch (err) {
toast(err.message, true); toast(err.message, true);