mirror of
https://github.com/sparrowcode/PermissionsKit.git
synced 2026-04-07 19:17:42 +00:00
Add writeOnly type for calendar
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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: "")
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user