- BanYaroGo-Info.plist (explizit, statt INFOPLIST_KEY_*): UIBackgroundModes location, NSLocationWhenInUseUsageDescription, NSLocationAlwaysAndWhenInUseUsageDescription - LocationTracker: CLLocationManager-Wrapper (@Observable @MainActor), Distanz via CLLocation.distance, Permission-Handling, Background-Updates - RouteCreateBody + Encoder mit convertToSnakeCase für POST /api/routes - TrackingView: Start-Hero-Screen + Live-Karte mit MapPolyline + Stats-Karte - FinishWalkSheet: Name + Hunde-Multiselect + POST /api/routes - MainTabView: neuer Aufnehmen-Tab zwischen Touren und Hunde - AppIcon: neues Hund-mit-GPS-Pin (vom User bereitgestellt, weiße Ränder weggeschnitten + Ecken mit Hintergrundfarbe gefüllt)
22 lines
612 B
Swift
22 lines
612 B
Swift
import SwiftUI
|
|
|
|
struct MainTabView: View {
|
|
@Environment(AuthSession.self) private var auth
|
|
|
|
var body: some View {
|
|
TabView {
|
|
RoutesListView()
|
|
.tabItem { Label("Touren", systemImage: "map.fill") }
|
|
|
|
TrackingView()
|
|
.tabItem { Label("Aufnehmen", systemImage: "figure.walk") }
|
|
|
|
DogsListView()
|
|
.tabItem { Label("Hunde", systemImage: "pawprint.fill") }
|
|
|
|
SettingsView()
|
|
.tabItem { Label("Mehr", systemImage: "person.crop.circle") }
|
|
}
|
|
.task { await auth.loadProfile() }
|
|
}
|
|
}
|