| 
				
			 | 
			
			
				@@ -6,6 +6,8 @@ 
			 | 
		
	
		
			
			| 
				6
			 | 
			
				6
			 | 
			
			
				 //  Copyright © 2016 Yonah Forst. All rights reserved. 
			 | 
		
	
		
			
			| 
				7
			 | 
			
				7
			 | 
			
			
				 // 
			 | 
		
	
		
			
			| 
				8
			 | 
			
				8
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				
			 | 
			
				9
			 | 
			
			
				+@import Contacts; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				10
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				9
			 | 
			
				11
			 | 
			
			
				 #import "ReactNativePermissions.h" 
			 | 
		
	
		
			
			| 
				10
			 | 
			
				12
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				11
			 | 
			
				13
			 | 
			
			
				 #import "RCTBridge.h" 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -26,6 +28,11 @@ 
			 | 
		
	
		
			
			| 
				26
			 | 
			
				28
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				27
			 | 
			
				29
			 | 
			
			
				 @implementation ReactNativePermissions 
			 | 
		
	
		
			
			| 
				28
			 | 
			
				30
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				
			 | 
			
				31
			 | 
			
			
				++ (BOOL)useContactsFramework 
			 | 
		
	
		
			
			| 
				
			 | 
			
				32
			 | 
			
			
				+{ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				33
			 | 
			
			
				+    return [[CNContactStore alloc] init] != nil; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				34
			 | 
			
			
				+} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				35
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				29
			 | 
			
				36
			 | 
			
			
				 RCT_EXPORT_MODULE(); 
			 | 
		
	
		
			
			| 
				30
			 | 
			
				37
			 | 
			
			
				 @synthesize bridge = _bridge; 
			 | 
		
	
		
			
			| 
				31
			 | 
			
				38
			 | 
			
			
				  
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -136,19 +143,38 @@ RCT_REMAP_METHOD(photoPermissionStatus, photoPermission:(RCTPromiseResolveBlock) 
			 | 
		
	
		
			
			| 
				136
			 | 
			
				143
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				137
			 | 
			
				144
			 | 
			
			
				 RCT_REMAP_METHOD(contactsPermissionStatus, contactsPermission:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) 
			 | 
		
	
		
			
			| 
				138
			 | 
			
				145
			 | 
			
			
				 { 
			 | 
		
	
		
			
			| 
				139
			 | 
			
				
			 | 
			
			
				-    int status = ABAddressBookGetAuthorizationStatus(); 
			 | 
		
	
		
			
			| 
				140
			 | 
			
				
			 | 
			
			
				-    switch (status) { 
			 | 
		
	
		
			
			| 
				141
			 | 
			
				
			 | 
			
			
				-        case kABAuthorizationStatusAuthorized: 
			 | 
		
	
		
			
			| 
				142
			 | 
			
				
			 | 
			
			
				-            return resolve(@(RNPermissionsStatusAuthorized)); 
			 | 
		
	
		
			
			| 
				143
			 | 
			
				
			 | 
			
			
				-             
			 | 
		
	
		
			
			| 
				144
			 | 
			
				
			 | 
			
			
				-        case kABAuthorizationStatusDenied: 
			 | 
		
	
		
			
			| 
				145
			 | 
			
				
			 | 
			
			
				-            return resolve(@(RNPermissionsStatusDenied)); 
			 | 
		
	
		
			
			| 
				146
			 | 
			
				
			 | 
			
			
				-             
			 | 
		
	
		
			
			| 
				147
			 | 
			
				
			 | 
			
			
				-        case kABAuthorizationStatusRestricted: 
			 | 
		
	
		
			
			| 
				148
			 | 
			
				
			 | 
			
			
				-            return resolve(@(RNPermissionsStatusRestricted)); 
			 | 
		
	
		
			
			| 
				149
			 | 
			
				
			 | 
			
			
				-             
			 | 
		
	
		
			
			| 
				150
			 | 
			
				
			 | 
			
			
				-        default: 
			 | 
		
	
		
			
			| 
				151
			 | 
			
				
			 | 
			
			
				-            return resolve(@(RNPermissionsStatusUndetermined)); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				146
			 | 
			
			
				+    if ([ReactNativePermissions useContactsFramework]) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				147
			 | 
			
			
				+    { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				148
			 | 
			
			
				+        int status = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts]; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				149
			 | 
			
			
				+        switch (status) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				150
			 | 
			
			
				+            case CNAuthorizationStatusAuthorized: 
			 | 
		
	
		
			
			| 
				
			 | 
			
				151
			 | 
			
			
				+                return resolve(@(RNPermissionsStatusAuthorized)); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				152
			 | 
			
			
				+                 
			 | 
		
	
		
			
			| 
				
			 | 
			
				153
			 | 
			
			
				+            case CNAuthorizationStatusDenied: 
			 | 
		
	
		
			
			| 
				
			 | 
			
				154
			 | 
			
			
				+                return resolve(@(RNPermissionsStatusDenied)); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				155
			 | 
			
			
				+                 
			 | 
		
	
		
			
			| 
				
			 | 
			
				156
			 | 
			
			
				+            case CNAuthorizationStatusRestricted: 
			 | 
		
	
		
			
			| 
				
			 | 
			
				157
			 | 
			
			
				+                return resolve(@(RNPermissionsStatusRestricted)); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				158
			 | 
			
			
				+                 
			 | 
		
	
		
			
			| 
				
			 | 
			
				159
			 | 
			
			
				+            default: 
			 | 
		
	
		
			
			| 
				
			 | 
			
				160
			 | 
			
			
				+                return resolve(@(RNPermissionsStatusUndetermined)); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				161
			 | 
			
			
				+        } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				162
			 | 
			
			
				+    } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				163
			 | 
			
			
				+    else { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				164
			 | 
			
			
				+        int status = ABAddressBookGetAuthorizationStatus(); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				165
			 | 
			
			
				+        switch (status) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				166
			 | 
			
			
				+            case kABAuthorizationStatusAuthorized: 
			 | 
		
	
		
			
			| 
				
			 | 
			
				167
			 | 
			
			
				+                return resolve(@(RNPermissionsStatusAuthorized)); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				168
			 | 
			
			
				+                 
			 | 
		
	
		
			
			| 
				
			 | 
			
				169
			 | 
			
			
				+            case kABAuthorizationStatusDenied: 
			 | 
		
	
		
			
			| 
				
			 | 
			
				170
			 | 
			
			
				+                return resolve(@(RNPermissionsStatusDenied)); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				171
			 | 
			
			
				+                 
			 | 
		
	
		
			
			| 
				
			 | 
			
				172
			 | 
			
			
				+            case kABAuthorizationStatusRestricted: 
			 | 
		
	
		
			
			| 
				
			 | 
			
				173
			 | 
			
			
				+                return resolve(@(RNPermissionsStatusRestricted)); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				174
			 | 
			
			
				+                 
			 | 
		
	
		
			
			| 
				
			 | 
			
				175
			 | 
			
			
				+            default: 
			 | 
		
	
		
			
			| 
				
			 | 
			
				176
			 | 
			
			
				+                return resolve(@(RNPermissionsStatusUndetermined)); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				177
			 | 
			
			
				+        } 
			 | 
		
	
		
			
			| 
				152
			 | 
			
				178
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				153
			 | 
			
				179
			 | 
			
			
				 } 
			 | 
		
	
		
			
			| 
				154
			 | 
			
				180
			 | 
			
			
				  
			 |