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;
|
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);
|
||||||
|
|||||||
Reference in New Issue
Block a user