Ban Yaro Blues — Hymne in der WELT-Welt
Eigener Song (KI-Demo via Suno) als Marken-Hymne. Dezente Player-Karte unter dem Tageszitat; preload=none → 6 MB MP3 lädt erst bei Play, der SW cacht sie danach für offline. Der Banner ist einmalige Einladung und verschwindet nach erstem Hören (durchgehört oder >30s + Pause); danach dezenter runder Play-Button unten links als Gegenspieler zum FAB, nur in WELT. Audio-Element zentral in index.html → übersteht Welt-Wechsel & Re-Renders. „Gehört" wird hybrid gemerkt: localStorage (sofort/offline) + DB-Flag anthem_heard am User (neue Spalte, über /auth/me, gesetzt via POST /api/profile/anthem-heard) — geräte- und deploy-übergreifend, damit der Banner nicht erneut nervt.
This commit is contained in:
parent
f7370028da
commit
d0a76e1b54
11 changed files with 149 additions and 18 deletions
|
|
@ -50,6 +50,16 @@ def _load_user(user_id: int) -> dict:
|
|||
return data
|
||||
|
||||
|
||||
@router.post("/anthem-heard", status_code=204)
|
||||
async def mark_anthem_heard(user=Depends(get_current_user)):
|
||||
"""Merkt server-seitig, dass die Hymne gehört wurde — geräteübergreifend und
|
||||
übersteht Cache-Clear bzw. die iOS-Trennung von PWA- und Safari-localStorage,
|
||||
damit der Banner nach einem Deploy nicht erneut auftaucht."""
|
||||
with db() as conn:
|
||||
conn.execute("UPDATE users SET anthem_heard=1 WHERE id=?", (user["id"],))
|
||||
return None
|
||||
|
||||
|
||||
@router.patch("")
|
||||
async def update_profile(data: ProfileUpdate, user=Depends(get_current_user)):
|
||||
fields = data.model_dump(exclude_none=True)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue