Fix: settings screen didn't show current name when opened from menu

menu-settings called openSettings('screen-menu') without the name arg —
input always came up blank even though the name was already saved
server-side. Track myName client-side (set on bootstrap + after a
successful save) and pass it through.
This commit is contained in:
Alex Cube
2026-08-10 15:41:15 +03:00
parent 9c5763c5bc
commit 63a051805c
+4 -1
View File
@@ -2123,6 +2123,7 @@ function showScreen(id) {
} }
let myLastLevel = 0; let myLastLevel = 0;
let myName = null;
let settingsReturnTo = 'screen-menu'; // куда вернуться после сохранения имени let settingsReturnTo = 'screen-menu'; // куда вернуться после сохранения имени
function openSettings(returnTo, name) { function openSettings(returnTo, name) {
@@ -2144,7 +2145,7 @@ document.getElementById('menu-continue').addEventListener('click', () => {
}); });
document.getElementById('menu-lore').addEventListener('click', () => showScreen('screen-lore')); document.getElementById('menu-lore').addEventListener('click', () => showScreen('screen-lore'));
document.getElementById('lore-back').addEventListener('click', () => showScreen('screen-menu')); document.getElementById('lore-back').addEventListener('click', () => showScreen('screen-menu'));
document.getElementById('menu-settings').addEventListener('click', () => openSettings('screen-menu')); document.getElementById('menu-settings').addEventListener('click', () => openSettings('screen-menu', myName));
document.getElementById('settings-back').addEventListener('click', () => showScreen(settingsReturnTo)); document.getElementById('settings-back').addEventListener('click', () => showScreen(settingsReturnTo));
document.getElementById('start-begin').addEventListener('click', () => { document.getElementById('start-begin').addEventListener('click', () => {
currentLevel = 0; currentLevel = 0;
@@ -2173,6 +2174,7 @@ document.getElementById('settings-save').addEventListener('click', async () => {
btn.textContent = 'Сохраняю…'; btn.textContent = 'Сохраняю…';
try { try {
await apiPost('set_name', { name }); await apiPost('set_name', { name });
myName = name;
showScreen(settingsReturnTo === null ? 'screen-menu' : settingsReturnTo); showScreen(settingsReturnTo === null ? 'screen-menu' : settingsReturnTo);
} catch { } catch {
alert('Не удалось сохранить имя — сервер недоступен'); alert('Не удалось сохранить имя — сервер недоступен');
@@ -2193,6 +2195,7 @@ setTimeout(async () => {
let who = { name: null, lastLevel: 0 }; let who = { name: null, lastLevel: 0 };
try { who = await apiGet('whoami', {}); } catch {} try { who = await apiGet('whoami', {}); } catch {}
myLastLevel = who.lastLevel || 0; myLastLevel = who.lastLevel || 0;
myName = who.name || null;
document.getElementById('menu-continue').disabled = myLastLevel <= 0; document.getElementById('menu-continue').disabled = myLastLevel <= 0;
if (!who.name) { if (!who.name) {
openSettings(null); openSettings(null);