RNPermissionHandlerCalendars.m 1.3KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #import "RNPermissionHandlerCalendars.h"
  2. @import EventKit;
  3. @implementation RNPermissionHandlerCalendars
  4. + (NSArray<NSString *> * _Nullable)usageDescriptionKeys {
  5. return @[@"NSCalendarsUsageDescription"];
  6. }
  7. - (void)checkWithResolver:(void (^)(RNPermissionStatus status))resolve
  8. withRejecter:(void (__unused ^)(NSError *error))reject {
  9. switch ([EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent]) {
  10. case EKAuthorizationStatusNotDetermined:
  11. return resolve(RNPermissionStatusNotDetermined);
  12. case EKAuthorizationStatusRestricted:
  13. return resolve(RNPermissionStatusRestricted);
  14. case EKAuthorizationStatusDenied:
  15. return resolve(RNPermissionStatusDenied);
  16. case EKAuthorizationStatusAuthorized:
  17. return resolve(RNPermissionStatusAuthorized);
  18. }
  19. }
  20. - (void)requestWithOptions:(__unused NSDictionary * _Nullable)options
  21. withResolver:(void (^)(RNPermissionStatus status))resolve
  22. withRejecter:(void (^)(NSError *error))reject {
  23. [[EKEventStore new] requestAccessToEntityType:EKEntityTypeEvent completion:^(__unused BOOL granted, NSError * _Nullable error) {
  24. if (error != nil) {
  25. reject(error);
  26. } else {
  27. [self checkWithResolver:resolve withRejecter:reject];
  28. }
  29. }];
  30. }
  31. @end