ReactNativePermissions.m 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. //
  2. // ReactNativePermissions.m
  3. // ReactNativePermissions
  4. //
  5. // Created by Yonah Forst on 18/02/16.
  6. // Copyright © 2016 Yonah Forst. All rights reserved.
  7. //
  8. @import Contacts;
  9. #import "ReactNativePermissions.h"
  10. #import "RCTBridge.h"
  11. #import "RCTConvert.h"
  12. #import "RCTEventDispatcher.h"
  13. #import "RCTConvert+RNPermissionsStatus.h"
  14. #import "PermissionsChecker.h"
  15. @interface ReactNativePermissions()
  16. @end
  17. @implementation ReactNativePermissions
  18. RCT_EXPORT_MODULE();
  19. @synthesize bridge = _bridge;
  20. #pragma mark Initialization
  21. - (instancetype)init
  22. {
  23. if (self = [super init]) {
  24. }
  25. return self;
  26. }
  27. - (NSDictionary *)constantsToExport
  28. {
  29. return @{ @"StatusUndetermined" : @(RNPermissionsStatusUndetermined),
  30. @"StatusDenied" : @(RNPermissionsStatusDenied),
  31. @"StatusAuthorized" : @(RNPermissionsStatusAuthorized),
  32. @"StatusRestricted" : @(RNPermissionsStatusRestricted)};
  33. };
  34. RCT_REMAP_METHOD(canOpenSettings, canOpenSettings:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
  35. resolve(@([PermissionsChecker canOpenSettings]));
  36. }
  37. RCT_EXPORT_METHOD(openSettings) {
  38. [PermissionsChecker openSettings];
  39. }
  40. RCT_REMAP_METHOD(getPermissionStatus, getPermissionStatus:(NSString *)permission resolve:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
  41. SEL s = NSSelectorFromString([NSString stringWithFormat:@"%@PermissionStatus", permission]);
  42. RNPermissionsStatus status = (RNPermissionsStatus)[PermissionsChecker performSelector:s];
  43. resolve([self stringForStatus:status]);
  44. }
  45. - (NSString *)stringForStatus:(RNPermissionsStatus) status{
  46. switch (status) {
  47. case RNPermissionsStatusAuthorized:
  48. return @"authorized";
  49. case RNPermissionsStatusDenied:
  50. return @"denied";
  51. case RNPermissionsStatusRestricted:
  52. return @"restricted";
  53. case RNPermissionsStatusUndetermined:
  54. default:
  55. return @"undetermined";
  56. }
  57. }
  58. @end