Skip to content

Commit

Permalink
iOS 17 issues: unable to request permissions
Browse files Browse the repository at this point in the history
  • Loading branch information
wangliang1124 committed Sep 28, 2023
1 parent 7e9a99c commit 368206c
Showing 1 changed file with 57 additions and 22 deletions.
79 changes: 57 additions & 22 deletions ios/RNCalendarEvents.m
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,11 @@ - (BOOL)isCalendarAccessGranted
{
EKAuthorizationStatus status = [EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent];

return status == EKAuthorizationStatusAuthorized;
if (@available(iOS 17, *)) {
return (status == EKAuthorizationStatusFullAccess || status == EKAuthorizationStatusAuthorized);
} else {
return status == EKAuthorizationStatusAuthorized;
}
}

#pragma mark -
Expand Down Expand Up @@ -782,34 +786,65 @@ - (NSDictionary *)serializeCalendarEvent:(EKEvent *)event
NSString *status;
EKAuthorizationStatus authStatus = [EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent];

switch (authStatus) {
case EKAuthorizationStatusDenied:
status = @"denied";
break;
case EKAuthorizationStatusRestricted:
status = @"restricted";
break;
case EKAuthorizationStatusAuthorized:
status = @"authorized";
break;
default:
status = @"undetermined";
break;
if (@available(iOS 17, *)) {
switch (authStatus) {
case EKAuthorizationStatusDenied:
status = @"denied";
break;
case EKAuthorizationStatusRestricted:
status = @"restricted";
break;
case EKAuthorizationStatusFullAccess:
status = @"authorized";
break;
case EKAuthorizationStatusWriteOnly:
status = @"writeOnly";
break;
default:
status = @"undetermined";
break;
}
} else {
switch (authStatus) {
case EKAuthorizationStatusDenied:
status = @"denied";
break;
case EKAuthorizationStatusRestricted:
status = @"restricted";
break;
case EKAuthorizationStatusAuthorized:
status = @"authorized";
break;
default:
status = @"undetermined";
break;
}
}

resolve(status);
}

RCT_EXPORT_METHOD(requestPermissions:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
{
[self.eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
NSString *status = granted ? @"authorized" : @"denied";
if (!error) {
resolve(status);
} else {
reject(@"error", @"authorization request error", error);
}
}];
if (@available(iOS 17, *)) {
[self.eventStore requestFullAccessToEventsWithCompletion:^(BOOL granted, NSError *error) {
NSString *status = granted ? @"authorized" : @"denied";
if (!error) {
resolve(status);
} else {
reject(@"error", @"authorization request error", error);
}
}];
} else {
[self.eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
NSString *status = granted ? @"authorized" : @"denied";
if (!error) {
resolve(status);
} else {
reject(@"error", @"authorization request error", error);
}
}];
}
}

RCT_EXPORT_METHOD(findCalendars:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
Expand Down

0 comments on commit 368206c

Please sign in to comment.