Gassi-Treffen-Detail: Fokus auf 'hinfinden'

Detail-Karte zeigt jetzt Treffpunkt + User-Position via UserAnnotation,
darunter eine Navigation-Karte mit:
- Ortsname
- Luftlinien-Distanz vom aktuellen Standort
- 'Route'-Button öffnet Apple Maps (MKMapItem.openInMaps) — User wählt
  dort Walking/Driving

Plus Teilnehmer-Sektion mit GET /api/walks/{id}/participants:
- Liste der Zugesagten ('yes'-RSVP) mit Namen + Hunden
- 'Noch niemand zugesagt'-Hinweis bei leerer Liste
- myRsvp-Status für korrekte Join-Button-Anzeige
- isOwn → 'Dein Treffen'-Badge statt Beitreten-Button

Footer-Hinweis: 'Fotos vom Treffen kannst du später in der banyaro.app
teilen' — Foto-Funktion bewusst PWA-only (User-Wunsch).
This commit is contained in:
rene 2026-05-30 14:16:43 +02:00
parent b49883ca79
commit 00dba257b5
2 changed files with 189 additions and 55 deletions

View file

@ -168,6 +168,20 @@ struct WalkJoinBody: Encodable {
let dogIds: [Int]
}
struct WalkParticipantsResponse: Decodable {
let invitations: [WalkInvitation]
let myRsvp: String?
let isOrganizer: Bool
}
struct WalkInvitation: Decodable, Identifiable {
let userId: Int
let status: String?
let userName: String?
let hunde: String?
var id: Int { userId }
}
struct GassiZeitCreateBody: Encodable {
let dogId: Int?
let wochentage: [String]