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