hunk.code_window:   const redirectUri = AuthSession.makeRedirectUri({
       path: 'redirect',
       preferLocalhost: Platform.select({ android: false, default: true }),
       useProxy,
     });
     const options = {
       useProxy,
       usePKCE,
  
hunk.labels: keep keep keep keep add keep keep keep keep keep
hunk.after_edit:     projectNameForProxy: '@community/native-component-list',
  
hunk.file_path: apps/native-component-list/src/screens/AuthSession/AuthSessionScreen.tsx
hunk.type: add
file: #import <ABI45_0_0EXCalendar/ABI45_0_0EXRemindersPermissionRequester.h>
  #import <EventKit/EventKit.h>
  
  
  @implementation ABI45_0_0EXRemindersPermissionRequester
  
  + (NSString *)permissionType
  {
    return @"reminders";
  }
  
  - (NSDictionary *)getPermissions
  {
    ABI45_0_0EXPermissionStatus status;
    EKAuthorizationStatus permissions;
    
    NSString *remindersUsageDescription = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSRemindersUsageDescription"];
    if (!remindersUsageDescription) {
      ABI45_0_0EXFatal(ABI45_0_0EXErrorWithMessage(@"This app is missing NSRemindersUsageDescription, so reminders methods will fail. Add this key to your bundle's Info.plist."));
      permissions = EKAuthorizationStatusDenied;
    } else {
      permissions = [EKEventStore authorizationStatusForEntityType:EKEntityTypeReminder];
    }
    switch (permissions) {
      case EKAuthorizationStatusAuthorized:
        status = ABI45_0_0EXPermissionStatusGranted;
        break;
      case EKAuthorizationStatusRestricted:
      case EKAuthorizationStatusDenied:
        status = ABI45_0_0EXPermissionStatusDenied;
        break;
      case EKAuthorizationStatusNotDetermined:
        status = ABI45_0_0EXPermissionStatusUndetermined;
        break;
    }
    return @{
             @"status": @(status)
            };
  }
  
  - (void)requestPermissionsWithResolver:(ABI45_0_0EXPromiseResolveBlock)resolve rejecter:(ABI45_0_0EXPromiseRejectBlock)reject
  {
    EKEventStore *eventStore = [[EKEventStore alloc] init];
    ABI45_0_0EX_WEAKIFY(self)
    [eventStore requestAccessToEntityType:EKEntityTypeReminder completion:^(BOOL granted, NSError *error) {
      ABI45_0_0EX_STRONGIFY(self)
      // Error code 100 is a when the user denies permission; in that case we don't want to reject.
      if (error && error.code != 100) {
        reject(@"E_REMINDERS_ERROR_UNKNOWN", error.localizedDescription, error);
      } else {
        resolve([self getPermissions]);
      }
    }];
  }
  
  @end
  