Keep name input while polling by tracking user editing state
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user