From 5cb9135179d51ea6faecefc7c3ba0de1e23337d1 Mon Sep 17 00:00:00 2001 From: Frank Tovar Date: Wed, 28 Jan 2026 15:16:03 +0100 Subject: [PATCH] Keep name input while polling by tracking user editing state --- wwwroot/app.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/wwwroot/app.js b/wwwroot/app.js index 8da777a..08a4f8c 100644 --- a/wwwroot/app.js +++ b/wwwroot/app.js @@ -48,7 +48,10 @@ async function loadState() { state.counts = stateData; renderPhasePill(); 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}`; } @@ -166,12 +169,19 @@ function renderResults() { } 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 () => { - const name = $("name-input").value.trim(); + const name = nameInput.value.trim(); if (!name) return toast("Name required", true); try { const me = await api("/api/me/name", { method: "POST", body: JSON.stringify({ name }) }); state.me = me; + nameInput.dataset.userEditing = ""; toast("Saved name"); } catch (err) { toast(err.message, true);