From 2ba0802a290c8e0a37de09962f0880fd59c1c5b5 Mon Sep 17 00:00:00 2001 From: Sven Date: Fri, 24 Apr 2026 10:33:01 +0200 Subject: [PATCH] Fix: Kalender-Permission nur laden wenn bereits erteilt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- nahbar/nahbar/CalendarManager.swift | 9 +++++++++ nahbar/nahbar/SettingsView.swift | 1 + 2 files changed, 10 insertions(+) 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) {