Fix: Kalender-Permission nur laden wenn bereits erteilt

SettingsView fordert Kalender-Zugriff nicht mehr beim bloßen Öffnen
der Einstellungen an. CalendarManager.isAuthorized prüft den
bestehenden Status ohne requestFullAccess() aufzurufen.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-24 10:33:01 +02:00
parent e4c2293bec
commit 2ba0802a29
2 changed files with 10 additions and 0 deletions
+9
View File
@@ -159,6 +159,15 @@ final class CalendarManager {
} }
} }
/// `true` wenn Kalender-Vollzugriff bereits erteilt wurde (fragt nicht neu nach).
var isAuthorized: Bool {
if #available(iOS 17.0, *) {
return EKEventStore.authorizationStatus(for: .event) == .fullAccess
} else {
return EKEventStore.authorizationStatus(for: .event) == .authorized
}
}
/// Gibt alle Benutzer-Kalender zurück (sortiert nach Titel). /// Gibt alle Benutzer-Kalender zurück (sortiert nach Titel).
func availableCalendars() async -> [EKCalendar] { func availableCalendars() async -> [EKCalendar] {
let granted = await requestFullAccess() let granted = await requestFullAccess()
+1
View File
@@ -402,6 +402,7 @@ struct SettingsView: View {
.padding(.horizontal, 20) .padding(.horizontal, 20)
.task { .task {
guard settingsCalendars.isEmpty else { return } guard settingsCalendars.isEmpty else { return }
guard CalendarManager.shared.isAuthorized else { return }
let calendars = await CalendarManager.shared.availableCalendars() let calendars = await CalendarManager.shared.availableCalendars()
settingsCalendars = calendars settingsCalendars = calendars
if defaultCalendarID.isEmpty || !calendars.map(\.calendarIdentifier).contains(defaultCalendarID) { if defaultCalendarID.isEmpty || !calendars.map(\.calendarIdentifier).contains(defaultCalendarID) {