Add writeOnly type for calendar

This commit is contained in:
Alexander Puchta
2023-09-26 22:13:41 +02:00
parent 76d1b07e25
commit e2bf80f76c
3 changed files with 34 additions and 11 deletions
@@ -28,15 +28,27 @@ import Foundation
import EventKit
public extension Permission {
static var calendar: CalendarPermission {
return CalendarPermission()
return CalendarPermission(kind: .calendar)
}
static var calendarWriteOnly: CalendarPermission {
return CalendarPermission(kind: .calendarWriteOnly)
}
}
public class CalendarPermission: Permission {
open override var kind: Permission.Kind { .calendar }
private var _kind: Permission.Kind
// MARK: - Init
init(kind: Permission.Kind) {
self._kind = kind
}
open override var kind: Permission.Kind { self._kind }
open var usageDescriptionKey: String? { "NSCalendarsUsageDescription" }
open var usageFullAccessDescriptionKey: String? { "NSCalendarsFullAccessUsageDescription" }
open var usageWriteOnlyAccessDescriptionKey: String? { "NSCalendarsWriteOnlyAccessUsageDescription" }
@@ -58,9 +70,17 @@ public class CalendarPermission: Permission {
let eventStore = EKEventStore()
if #available(iOS 17.0, *) {
eventStore.requestFullAccessToEvents { (accessGranted: Bool, error: Error?) in
DispatchQueue.main.async {
completion()
if self._kind == .calendarWriteOnly {
eventStore.requestWriteOnlyAccessToEvents { (accessGranted: Bool, error: Error?) in
DispatchQueue.main.async {
completion()
}
}
} else {
eventStore.requestFullAccessToEvents { (accessGranted: Bool, error: Error?) in
DispatchQueue.main.async {
completion()
}
}
}
} else {
+2 -1
View File
@@ -31,7 +31,8 @@ enum Texts {
return NSLocalizedString("permission photoLibrary name", bundle: bundle, comment: "")
case .microphone:
return NSLocalizedString("permission microphone name", bundle: bundle, comment: "")
case .calendar:
case .calendar,
.calendarWriteOnly:
return NSLocalizedString("permission calendar name", bundle: bundle, comment: "")
case .contacts:
return NSLocalizedString("permission contacts name", bundle: bundle, comment: "")
+6 -4
View File
@@ -110,9 +110,10 @@ open class Permission: Equatable {
case photoLibrary = 1
case microphone = 3
case calendar = 4
case contacts = 5
case reminders = 6
case speech = 7
case calendarWriteOnly = 5
case contacts = 6
case reminders = 7
case speech = 8
case locationWhenInUse = 9
case locationAlways = 10
case motion = 11
@@ -131,7 +132,8 @@ open class Permission: Equatable {
return "Photo Library"
case .microphone:
return "Microphone"
case .calendar:
case .calendar,
.calendarWriteOnly:
return "Calendar"
case .contacts:
return "Contacts"