banyaro-ios/BanYaroGo/Views/GassiView.swift
rene b49883ca79 Gassi: Tabs Treffen + Stamm-Gassis wie in der PWA
In der PWA ist die Seite 'Gassi-Treffen' mit drei Tabs:
- Treffen (walks.py — sich verabreden)
- Challenge (Monatsfoto)
- Stamm-Gassis (gassi_zeiten.py — regelmäßige Runden)

Mein bisheriger Mehr-Eintrag hieß 'Stamm-Gassi-Zeiten' und zeigte nur die
Stamm-Gassi-Funktion isoliert — das stimmte nicht mit der PWA überein.

Neu:
- GassiView mit Segmented Picker (Treffen / Stamm-Gassis)
- GassiTreffenList: GET /api/walks?lat&lon&radius=20000, Liste mit Datum,
  Uhrzeit, Ort, Teilnehmer-Zahl
- GassiTreffenDetail: Karte mit Pin, Stats, Beitreten/Verlassen
  (POST/DELETE /api/walks/{id}/join), Owner-Check
- AddWalkSheet: Titel, Datum, Uhrzeit, Treffpunkt-Name, Max-Teilnehmer,
  Beschreibung — POST /api/walks
- StammGassisList = bisherige GassiZeitenView umbenannt + Nav-Title raus
  (wird vom GassiView vergeben)

Im Mehr-Tab heißt der Link jetzt 'Gassi-Treffen' (pawprint-Icon) statt
'Stamm-Gassi-Zeiten' (alarm-Icon).

DTOs: WalkMeeting, WalkCreateBody, WalkJoinBody.
2026-05-30 14:02:42 +02:00

36 lines
924 B
Swift

import SwiftUI
struct GassiView: View {
@State private var tab: Tab = .treffen
private enum Tab: String, CaseIterable, Identifiable {
case treffen = "Treffen"
case stammGassis = "Stamm-Gassis"
var id: String { rawValue }
}
var body: some View {
VStack(spacing: 0) {
Picker("Bereich", selection: $tab) {
ForEach(Tab.allCases) { t in
Text(t.rawValue).tag(t)
}
}
.pickerStyle(.segmented)
.padding(.horizontal)
.padding(.top, 8)
Divider()
.padding(.top, 8)
switch tab {
case .treffen:
GassiTreffenList()
case .stammGassis:
StammGassisList()
}
}
.navigationTitle("Gassi-Treffen")
.navigationBarTitleDisplayMode(.inline)
}
}