diff --git a/nahbar/nahbar/CalendarManager.swift b/nahbar/nahbar/CalendarManager.swift index 2d08f76..f14905e 100644 --- a/nahbar/nahbar/CalendarManager.swift +++ b/nahbar/nahbar/CalendarManager.swift @@ -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() diff --git a/nahbar/nahbar/SettingsView.swift b/nahbar/nahbar/SettingsView.swift index 81e9dd0..958c01a 100644 --- a/nahbar/nahbar/SettingsView.swift +++ b/nahbar/nahbar/SettingsView.swift @@ -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) {