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:
rene 2026-05-15 18:03:28 +02:00
parent 32fde79a40
commit 0878684402
4 changed files with 40 additions and 9 deletions

View file

@ -3,7 +3,7 @@
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 IS_STAGING = location.hostname === 'staging.banyaro.app';
// Cache-Bust-Parameter nach Update-Reload sofort entfernen

View file

@ -543,8 +543,11 @@ window.Page_poison = (() => {
const created = await API.poison.report(payload);
// SW hat Request in Queue gelegt (offline) — Modal schließen, kein Marker
if (created?._queued) { UI.modal.close(); return; }
// SW hat Request in Queue gelegt (offline)
if (created?._queued) {
_showPoisonThanks(true);
return;
}
// Foto hochladen
if (photoInput?.files[0]) {
@ -558,8 +561,7 @@ window.Page_poison = (() => {
}
}
// Distanz client-seitig berechnen (für sofortige Anzeige)
// _userPos aktualisieren falls Picker neuen Standort geliefert hat
// Distanz client-seitig berechnen
if (loc.lat && loc.lon) _userPos = { lat: loc.lat, lon: loc.lon };
created.distanz_m = _userPos
? Math.round(_haversine(_userPos.lat, _userPos.lon, created.lat, created.lon))
@ -571,12 +573,41 @@ window.Page_poison = (() => {
_updateBadge(_reports.length);
App.checkNearbyAlerts();
App.callModule('map', 'refresh');
UI.toast.success('Giftköder gemeldet! Danke für die Warnung.');
UI.modal.close();
_showPoisonThanks(false);
});
});
}
// ----------------------------------------------------------
// 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)
// ----------------------------------------------------------