1// Copyright 2018-present 650 Industries. All rights reserved.
2
3#import <ExpoModulesCore/EXPermissionsMethodsDelegate.h>
4
5@implementation EXPermissionsMethodsDelegate
6
7+ (void)askForPermissionWithPermissionsManager:(id<EXPermissionsInterface>)permissionsManager
8                                 withRequester:(Class)requesterClass
9                                       resolve:(EXPromiseResolveBlock)resolve
10                                        reject:(EXPromiseRejectBlock)reject
11{
12  if (!permissionsManager) {
13    return reject(@"E_NO_PERMISSIONS", @"Permissions module not found. Are you sure that Expo modules are properly linked?", nil);
14  }
15  [permissionsManager askForPermissionUsingRequesterClass:requesterClass
16                                                  resolve:resolve
17                                                   reject:reject];
18}
19
20+ (void)getPermissionWithPermissionsManager:(id<EXPermissionsInterface>)permissionsManager
21                              withRequester:(Class)requesterClass
22                                    resolve:(EXPromiseResolveBlock)resolve
23                                     reject:(EXPromiseRejectBlock)reject
24{
25  if (!permissionsManager) {
26    return reject(@"E_NO_PERMISSIONS", @"Permissions module not found. Are you sure that Expo modules are properly linked?", nil);
27  }
28  [permissionsManager getPermissionUsingRequesterClass:requesterClass
29                                               resolve:resolve
30                                                reject:reject];
31}
32
33+ (void)registerRequesters:(NSArray<id<EXPermissionsRequester>> *)newRequesters
34    withPermissionsManager:(id<EXPermissionsInterface>)permissionsManager
35{
36  if (permissionsManager) {
37    [permissionsManager registerRequesters:newRequesters];
38  }
39}
40
41@end
42