banyaro-ios/BanYaroGo/Views/RootView.swift
rene d807db57a2 1.1: Home-Screen-Widget + Siri-Kurzbefehl „Gassi gehen"
App Group group.app.banyaro.ios verbindet App und Widget-Extension
(Entitlements in beiden Targets, CODE_SIGN_ENTITLEMENTS fürs Widget).

Home-Screen-Widget (D):
- BanYaroHomeWidget (klein + mittel): Tagesfoto, Hundename, nächster Termin.
- App schreibt beim Heim-Laden einen Snapshot (HomeWidgetData) in die App
  Group und triggert WidgetCenter-Reload; Snapshot wird bei Logout/401 geleert.

Siri-/Kurzbefehl (E):
- StartWalkIntent „Gassi gehen" + AppShortcutsProvider (öffnet die App).
- WalkLauncher überbrückt Intent → UI: Flag in der App Group, beim Aktivwerden
  eingelöst → Aufnehmen-Tab + Aufnahme-Start (TrackingView.startFresh).
- MainTabView mit Tab-Auswahl (Tags), BanYaroGoApp liest scenePhase.
2026-06-02 20:01:16 +02:00

33 lines
1,021 B
Swift

import SwiftUI
import SwiftData
import WidgetKit
struct RootView: View {
@Environment(AuthSession.self) private var auth
@Environment(\.modelContext) private var ctx
var body: some View {
Group {
if auth.isLoggedIn {
MainTabView()
} else {
LoginView()
}
}
// Bei User-Wechsel (Logout oder 401) alle nutzerbezogenen lokalen Daten
// leeren Offline-Cache UND Widget-Snapshot , damit nie Touren,
// Tagebuch, Fotos oder der Hund eines vorigen Users durchschimmern.
.onReceive(NotificationCenter.default.publisher(for: .userDidLogout)) { _ in
clearOnUserChange()
}
.onReceive(NotificationCenter.default.publisher(for: .apiUnauthorized)) { _ in
clearOnUserChange()
}
}
private func clearOnUserChange() {
OfflineCache.clearAll(in: ctx)
HomeWidgetStore.clear()
WidgetCenter.shared.reloadAllTimelines()
}
}