Fix: Breeder-FAB an document.body — verschwindet zuverlässig via destroy() (SW by-v908)

This commit is contained in:
rene 2026-05-13 19:40:21 +02:00
parent 0399282e4c
commit 7fb4177dbd
5 changed files with 22 additions and 22 deletions

View file

@ -406,7 +406,7 @@ async def serve_media(path: str, request: _Request):
raise _HE(404, "Nicht gefunden.")
return _media_response(filepath)
APP_VER = "907" # muss mit APP_VER in app.js übereinstimmen
APP_VER = "908" # muss mit APP_VER in app.js übereinstimmen
@app.get("/.well-known/assetlinks.json")
async def assetlinks():

View file

@ -591,10 +591,10 @@
<div id="modal-container"></div>
<!-- JS: Reihenfolge ist wichtig — erst Basis, dann Features -->
<script src="/js/api.js?v=907"></script>
<script src="/js/ui.js?v=907"></script>
<script src="/js/app.js?v=907"></script>
<script src="/js/worlds.js?v=907"></script>
<script src="/js/api.js?v=908"></script>
<script src="/js/ui.js?v=908"></script>
<script src="/js/app.js?v=908"></script>
<script src="/js/worlds.js?v=908"></script>
<!-- Feature-Seiten werden lazy geladen -->

View file

@ -3,7 +3,7 @@
Router, State-Management, Navigation, Initialisierung.
============================================================ */
const APP_VER = '907'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
const APP_VER = '908'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
const APP_VERSION = '1.5.1'; // ← semantische Version, wird bei make release gesetzt
const IS_STAGING = location.hostname === 'staging.banyaro.app';
// Cache-Bust-Parameter nach Update-Reload sofort entfernen

View file

@ -28,22 +28,22 @@ window.Page_breeder = (() => {
container.innerHTML = `
<div id="breeder-profile-body" style="padding-bottom:calc(var(--space-16) + 24px)">
${UI.skeleton(5)}
</div>
<button id="breeder-back-fab" aria-label="Zurück zur Wurfbörse"
style="position:fixed;bottom:calc(var(--safe-bottom,0px) + 20px);right:20px;
width:54px;height:54px;border-radius:50%;background:var(--c-primary);
border:none;color:#fff;cursor:pointer;z-index:200;
display:flex;align-items:center;justify-content:center;
box-shadow:0 4px 18px rgba(196,132,58,.45);
transition:transform .12s,box-shadow .12s;
-webkit-tap-highlight-color:transparent">
<svg style="width:22px;height:22px" viewBox="0 0 256 256">
<use href="/icons/phosphor.svg#arrow-left"></use>
</svg>
</button>`;
</div>`;
document.getElementById('breeder-back-fab')
?.addEventListener('click', () => App.navigate('wurfboerse'));
// FAB an document.body hängen damit position:fixed zuverlässig funktioniert
// und destroy() der einzige Lifecycle-Kontrollpunkt bleibt
const fab = document.createElement('button');
fab.id = 'breeder-back-fab';
fab.setAttribute('aria-label', 'Zurück zur Wurfbörse');
fab.style.cssText = 'position:fixed;bottom:calc(var(--safe-bottom,0px) + 20px);right:20px;' +
'width:54px;height:54px;border-radius:50%;background:var(--c-primary);' +
'border:none;color:#fff;cursor:pointer;z-index:200;' +
'display:flex;align-items:center;justify-content:center;' +
'box-shadow:0 4px 18px rgba(196,132,58,.45);transition:transform .12s,box-shadow .12s;' +
'-webkit-tap-highlight-color:transparent';
fab.innerHTML = '<svg style="width:22px;height:22px" viewBox="0 0 256 256"><use href="/icons/phosphor.svg#arrow-left"></use></svg>';
fab.addEventListener('click', () => App.navigate('wurfboerse'));
document.body.appendChild(fab);
try {
const p = await API.breeder.profile(zwingername);

View file

@ -3,7 +3,7 @@
Offline-Cache + Push Notifications + Tile-Cache
============================================================ */
const CACHE_VERSION = 'by-v907';
const CACHE_VERSION = 'by-v908';
const CACHE_STATIC = `${CACHE_VERSION}-static`;
const CACHE_TILES = 'ban-yaro-tiles-v1'; // bleibt über SW-Updates erhalten
const CACHE_API = 'ban-yaro-api-v1'; // API-Response-Cache