Feature: Giftköder — Danke-Overlay nach erfolgreicher Meldung
Statt sofort zu schließen zeigt das Modal nach dem Submit eine Bestätigung: 'Wir kümmern uns darum und melden es den anderen Nutzern in der Umgebung. Vielen Dank, dass du die Community schützt!' Auto-Close nach 5 Sekunden, OK-Button zum sofortigen Schließen. Bei gequeuter Meldung (offline) zusätzlicher Hinweis auf spätere Synchronisierung. SW by-v993, APP_VER 993
This commit is contained in:
parent
32fde79a40
commit
0878684402
4 changed files with 40 additions and 9 deletions
|
|
@ -410,7 +410,7 @@ async def serve_media(path: str, request: _Request):
|
||||||
raise _HE(404, "Nicht gefunden.")
|
raise _HE(404, "Nicht gefunden.")
|
||||||
return _media_response(filepath)
|
return _media_response(filepath)
|
||||||
|
|
||||||
APP_VER = "992" # muss mit APP_VER in app.js übereinstimmen
|
APP_VER = "993" # muss mit APP_VER in app.js übereinstimmen
|
||||||
|
|
||||||
@app.get("/.well-known/assetlinks.json")
|
@app.get("/.well-known/assetlinks.json")
|
||||||
async def assetlinks():
|
async def assetlinks():
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
Router, State-Management, Navigation, Initialisierung.
|
Router, State-Management, Navigation, Initialisierung.
|
||||||
============================================================ */
|
============================================================ */
|
||||||
|
|
||||||
const APP_VER = '992'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
|
const APP_VER = '993'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
|
||||||
const APP_VERSION = '1.6.0'; // ← semantische Version, wird bei make release gesetzt
|
const APP_VERSION = '1.6.0'; // ← semantische Version, wird bei make release gesetzt
|
||||||
const IS_STAGING = location.hostname === 'staging.banyaro.app';
|
const IS_STAGING = location.hostname === 'staging.banyaro.app';
|
||||||
// Cache-Bust-Parameter nach Update-Reload sofort entfernen
|
// Cache-Bust-Parameter nach Update-Reload sofort entfernen
|
||||||
|
|
|
||||||
|
|
@ -543,8 +543,11 @@ window.Page_poison = (() => {
|
||||||
|
|
||||||
const created = await API.poison.report(payload);
|
const created = await API.poison.report(payload);
|
||||||
|
|
||||||
// SW hat Request in Queue gelegt (offline) — Modal schließen, kein Marker
|
// SW hat Request in Queue gelegt (offline)
|
||||||
if (created?._queued) { UI.modal.close(); return; }
|
if (created?._queued) {
|
||||||
|
_showPoisonThanks(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Foto hochladen
|
// Foto hochladen
|
||||||
if (photoInput?.files[0]) {
|
if (photoInput?.files[0]) {
|
||||||
|
|
@ -558,8 +561,7 @@ window.Page_poison = (() => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Distanz client-seitig berechnen (für sofortige Anzeige)
|
// Distanz client-seitig berechnen
|
||||||
// _userPos aktualisieren falls Picker neuen Standort geliefert hat
|
|
||||||
if (loc.lat && loc.lon) _userPos = { lat: loc.lat, lon: loc.lon };
|
if (loc.lat && loc.lon) _userPos = { lat: loc.lat, lon: loc.lon };
|
||||||
created.distanz_m = _userPos
|
created.distanz_m = _userPos
|
||||||
? Math.round(_haversine(_userPos.lat, _userPos.lon, created.lat, created.lon))
|
? Math.round(_haversine(_userPos.lat, _userPos.lon, created.lat, created.lon))
|
||||||
|
|
@ -571,12 +573,41 @@ window.Page_poison = (() => {
|
||||||
_updateBadge(_reports.length);
|
_updateBadge(_reports.length);
|
||||||
App.checkNearbyAlerts();
|
App.checkNearbyAlerts();
|
||||||
App.callModule('map', 'refresh');
|
App.callModule('map', 'refresh');
|
||||||
UI.toast.success('Giftköder gemeldet! Danke für die Warnung.');
|
_showPoisonThanks(false);
|
||||||
UI.modal.close();
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------
|
||||||
|
// DANKE-OVERLAY nach Giftköder-Meldung
|
||||||
|
// ----------------------------------------------------------
|
||||||
|
function _showPoisonThanks(isQueued) {
|
||||||
|
const offlineNote = isQueued
|
||||||
|
? `<p style="font-size:var(--text-xs);color:var(--c-text-muted);margin:var(--space-3) 0 0">
|
||||||
|
📡 Wird synchronisiert sobald du wieder online bist.
|
||||||
|
</p>`
|
||||||
|
: '';
|
||||||
|
UI.modal.open({
|
||||||
|
title: '✅ Danke für deine Meldung!',
|
||||||
|
body: `
|
||||||
|
<div style="text-align:center;padding:var(--space-2) 0 var(--space-4)">
|
||||||
|
<div style="font-size:3rem;margin-bottom:var(--space-4)">🚨</div>
|
||||||
|
<p style="color:var(--c-text);font-size:var(--text-base);line-height:1.7;margin:0">
|
||||||
|
Wir kümmern uns darum und melden es den anderen Nutzern in der Umgebung.
|
||||||
|
</p>
|
||||||
|
<p style="color:var(--c-text-secondary);font-size:var(--text-sm);
|
||||||
|
margin:var(--space-2) 0 0;line-height:1.5">
|
||||||
|
Vielen Dank, dass du die Community schützt! 🐾
|
||||||
|
</p>
|
||||||
|
${offlineNote}
|
||||||
|
</div>
|
||||||
|
`,
|
||||||
|
footer: `<button class="btn btn-primary flex-1" id="poison-thanks-ok">OK</button>`,
|
||||||
|
});
|
||||||
|
document.getElementById('poison-thanks-ok')?.addEventListener('click', UI.modal.close);
|
||||||
|
setTimeout(() => UI.modal.close(), 5000);
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------
|
// ----------------------------------------------------------
|
||||||
// BADGE (Sidebar + Bottom-Nav)
|
// BADGE (Sidebar + Bottom-Nav)
|
||||||
// ----------------------------------------------------------
|
// ----------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
Offline-Cache + Push Notifications + Tile-Cache
|
Offline-Cache + Push Notifications + Tile-Cache
|
||||||
============================================================ */
|
============================================================ */
|
||||||
|
|
||||||
const CACHE_VERSION = 'by-v992';
|
const CACHE_VERSION = 'by-v993';
|
||||||
const CACHE_STATIC = `${CACHE_VERSION}-static`;
|
const CACHE_STATIC = `${CACHE_VERSION}-static`;
|
||||||
const CACHE_TILES = 'ban-yaro-tiles-v1'; // bleibt über SW-Updates erhalten
|
const CACHE_TILES = 'ban-yaro-tiles-v1'; // bleibt über SW-Updates erhalten
|
||||||
const CACHE_API = 'ban-yaro-api-v1'; // API-Response-Cache
|
const CACHE_API = 'ban-yaro-api-v1'; // API-Response-Cache
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue