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:
@@ -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()
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user