1 // Copyright 2018-present 650 Industries. All rights reserved. 2 3 #import <Foundation/Foundation.h> 4 #import <ExpoModulesCore/EXModuleRegistry.h> 5 6 // Many headers of permissions requesters have refs to `UMPromise*Block` without importing 7 // the header declaring it, so we fix it here, but this definitely needs to be removed. 8 #import <ExpoModulesCore/EXUnimodulesCompat.h> 9 10 typedef enum EXPermissionStatus { 11 EXPermissionStatusDenied, 12 EXPermissionStatusGranted, 13 EXPermissionStatusUndetermined, 14 } EXPermissionStatus; 15 16 17 @protocol EXPermissionsRequester <NSObject> 18 19 + (NSString *)permissionType; 20 21 - (void)requestPermissionsWithResolver:(EXPromiseResolveBlock)resolve rejecter:(EXPromiseRejectBlock)reject; 22 23 - (NSDictionary *)getPermissions; 24 25 @end 26 27 @protocol EXPermissionsInterface 28 29 - (void)registerRequesters:(NSArray<id<EXPermissionsRequester>> *)newRequesters; 30 31 - (void)getPermissionUsingRequesterClass:(Class)requesterClass 32 resolve:(EXPromiseResolveBlock)resolve 33 reject:(EXPromiseRejectBlock)reject; 34 35 - (BOOL)hasGrantedPermissionUsingRequesterClass:(Class)requesterClass; 36 37 - (void)askForPermissionUsingRequesterClass:(Class)requesterClass 38 resolve:(EXPromiseResolveBlock)resolve 39 reject:(EXPromiseRejectBlock)reject; 40 41 - (id<EXPermissionsRequester>)getPermissionRequesterForType:(NSString *)type; 42 43 @end 44