Feature: UX-Fixes — Zahnrad weg, POI-Kombi-Typen, exp-fab-Position, Welten-Config in DB (SW by-v653)
- worlds-settings Zahnrad komplett entfernt (war auf Mobile sichtbar, auf Desktop schon hidden) - exp-fab: bottom jetzt calc(--nav-bottom-height + --safe-bottom + --space-2) — kein Overlap mit worlds-back auf iPhone - Karte POI: neue Typen bank, bank_kotbeutel, bank_kotbeutel_abfall, kotbeutel_abfall (Backend + Frontend) - Welten-Chip-Config: GET/PUT /profile/world-config, Spalte users.world_config TEXT (Migration), Sync bei Init + Speichern
This commit is contained in:
parent
f0b5e6e89b
commit
1fdba57365
9 changed files with 84 additions and 27 deletions
|
|
@ -49,6 +49,8 @@ window.Worlds = (() => {
|
|||
_setupButtons();
|
||||
_goTo(_cur, false);
|
||||
show();
|
||||
// Config aus DB laden (async, dann neu rendern wenn nötig)
|
||||
await _loadConfigFromServer();
|
||||
// Welten parallel rendern
|
||||
_renderJetzt();
|
||||
_renderHund();
|
||||
|
|
@ -159,7 +161,6 @@ window.Worlds = (() => {
|
|||
|
||||
function _setupButtons() {
|
||||
document.getElementById('worlds-fab')?.addEventListener('click', _openFab);
|
||||
document.getElementById('worlds-settings')?.addEventListener('click', () => navigateTo('settings'));
|
||||
document.getElementById('worlds-back')?.addEventListener('click', () => show());
|
||||
document.querySelectorAll('.wdot').forEach((dot, i) => {
|
||||
dot.style.pointerEvents = 'auto';
|
||||
|
|
@ -296,12 +297,33 @@ window.Worlds = (() => {
|
|||
welt: ['map','forum','friends','walks','poison','recalls','lost','routes','events','jobs','knigge','movies'],
|
||||
};
|
||||
|
||||
function _getConfig() {
|
||||
try { return JSON.parse(localStorage.getItem('world_chips') || 'null') || _DEFAULT_CONFIG; }
|
||||
catch { return _DEFAULT_CONFIG; }
|
||||
// _cfgCache: wird beim Init aus DB geladen, Fallback localStorage → Default
|
||||
let _cfgCache = null;
|
||||
|
||||
async function _loadConfigFromServer() {
|
||||
try {
|
||||
const res = await API.get('/profile/world-config');
|
||||
if (res?.config) {
|
||||
_cfgCache = res.config;
|
||||
try { localStorage.setItem('world_chips', JSON.stringify(_cfgCache)); } catch {}
|
||||
return;
|
||||
}
|
||||
} catch {}
|
||||
// Fallback: localStorage
|
||||
try { _cfgCache = JSON.parse(localStorage.getItem('world_chips') || 'null') || _DEFAULT_CONFIG; }
|
||||
catch { _cfgCache = _DEFAULT_CONFIG; }
|
||||
}
|
||||
|
||||
function _getConfig() {
|
||||
return _cfgCache || _DEFAULT_CONFIG;
|
||||
}
|
||||
|
||||
function _saveConfig(cfg) {
|
||||
_cfgCache = cfg;
|
||||
try { localStorage.setItem('world_chips', JSON.stringify(cfg)); } catch {}
|
||||
if (_state?.user) {
|
||||
API.put('/profile/world-config', { config: cfg }).catch(() => {});
|
||||
}
|
||||
}
|
||||
function _chipMeta(page) {
|
||||
return _ALL_CHIPS.find(c => c.page === page) || null;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue