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).
func availableCalendars() async -> [EKCalendar] {
let granted = await requestFullAccess()
+1
View File
@@ -402,6 +402,7 @@ struct SettingsView: View {
.padding(.horizontal, 20)
.task {
guard settingsCalendars.isEmpty else { return }
guard CalendarManager.shared.isAuthorized else { return }
let calendars = await CalendarManager.shared.availableCalendars()
settingsCalendars = calendars
if defaultCalendarID.isEmpty || !calendars.map(\.calendarIdentifier).contains(defaultCalendarID) {