@@ -23,31 +23,29 @@ + (NSString * _Nonnull)handlerUniqueId {
2323- (void )checkWithResolver : (RCTPromiseResolveBlock _Nonnull)resolve
2424 rejecter : (RCTPromiseRejectBlock _Nonnull)reject {
2525 if (@available (iOS 14 , *)) {
26- dispatch_async (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 ), ^{
27- if (![CLLocationManager locationServicesEnabled ]) {
28- return reject (@" cannot_check_location_accuracy" , @" Location services are disabled" , nil );
29- }
30-
31- switch ([CLLocationManager authorizationStatus ]) {
32- case kCLAuthorizationStatusNotDetermined :
33- return reject (@" cannot_check_location_accuracy" , @" Location permission hasn't been requested first" , nil );
34- case kCLAuthorizationStatusRestricted :
35- case kCLAuthorizationStatusDenied :
36- return reject (@" cannot_check_location_accuracy" , @" Location permission has been blocked by the user" , nil );
37- case kCLAuthorizationStatusAuthorizedWhenInUse :
38- case kCLAuthorizationStatusAuthorizedAlways :
39- break ;
40- }
41-
42- CLLocationManager *locationManager = [CLLocationManager new ];
43-
44- switch (locationManager.accuracyAuthorization ) {
45- case CLAccuracyAuthorizationFullAccuracy:
46- return resolve (@" full" );
47- case CLAccuracyAuthorizationReducedAccuracy:
48- return resolve (@" reduced" );
49- }
50- });
26+ if (![CLLocationManager locationServicesEnabled ]) {
27+ return reject (@" cannot_check_location_accuracy" , @" Location services are disabled" , nil );
28+ }
29+
30+ switch ([CLLocationManager authorizationStatus ]) {
31+ case kCLAuthorizationStatusNotDetermined :
32+ return reject (@" cannot_check_location_accuracy" , @" Location permission hasn't been requested first" , nil );
33+ case kCLAuthorizationStatusRestricted :
34+ case kCLAuthorizationStatusDenied :
35+ return reject (@" cannot_check_location_accuracy" , @" Location permission has been blocked by the user" , nil );
36+ case kCLAuthorizationStatusAuthorizedWhenInUse :
37+ case kCLAuthorizationStatusAuthorizedAlways :
38+ break ;
39+ }
40+
41+ CLLocationManager *locationManager = [CLLocationManager new ];
42+
43+ switch (locationManager.accuracyAuthorization ) {
44+ case CLAccuracyAuthorizationFullAccuracy:
45+ return resolve (@" full" );
46+ case CLAccuracyAuthorizationReducedAccuracy:
47+ return resolve (@" reduced" );
48+ }
5149 } else {
5250 reject (@" cannot_check_location_accuracy" , @" Only available on iOS 14 or higher" , nil );
5351 }
@@ -57,45 +55,43 @@ - (void)requestWithPurposeKey:(NSString * _Nonnull)purposeKey
5755 resolver : (RCTPromiseResolveBlock _Nonnull)resolve
5856 rejecter : (RCTPromiseRejectBlock _Nonnull)reject {
5957 if (@available (iOS 14 , *)) {
60- dispatch_async (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 ), ^{
61- if (![CLLocationManager locationServicesEnabled ]) {
62- return reject (@" cannot_request_location_accuracy" , @" Location services are disabled" , nil );
63- }
64-
65- switch ([CLLocationManager authorizationStatus ]) {
66- case kCLAuthorizationStatusNotDetermined :
67- return reject (@" cannot_request_location_accuracy" , @" Location permission hasn't been requested first" , nil );
68- case kCLAuthorizationStatusRestricted :
69- case kCLAuthorizationStatusDenied :
70- return reject (@" cannot_request_location_accuracy" , @" Location permission has been blocked by the user" , nil );
71- case kCLAuthorizationStatusAuthorizedWhenInUse :
72- case kCLAuthorizationStatusAuthorizedAlways :
73- break ;
74- }
75-
76- CLLocationManager *locationManager = [CLLocationManager new ];
77-
78- switch (locationManager.accuracyAuthorization ) {
79- case CLAccuracyAuthorizationFullAccuracy:
80- return resolve (@" full" ); // resolve early if full accuracy is already granted
81- case CLAccuracyAuthorizationReducedAccuracy:
82- break ;
83- }
84-
85- [locationManager requestTemporaryFullAccuracyAuthorizationWithPurposeKey: purposeKey
86- completion: ^(NSError * _Nullable error) {
87- if (error) {
88- reject ([NSString stringWithFormat: @" %ld " , (long )error.code], error.localizedDescription , error);
89- } else {
90- switch (locationManager.accuracyAuthorization ) {
91- case CLAccuracyAuthorizationFullAccuracy:
92- return resolve (@" full" );
93- case CLAccuracyAuthorizationReducedAccuracy:
94- return resolve (@" reduced" );
95- }
58+ if (![CLLocationManager locationServicesEnabled ]) {
59+ return reject (@" cannot_request_location_accuracy" , @" Location services are disabled" , nil );
60+ }
61+
62+ switch ([CLLocationManager authorizationStatus ]) {
63+ case kCLAuthorizationStatusNotDetermined :
64+ return reject (@" cannot_request_location_accuracy" , @" Location permission hasn't been requested first" , nil );
65+ case kCLAuthorizationStatusRestricted :
66+ case kCLAuthorizationStatusDenied :
67+ return reject (@" cannot_request_location_accuracy" , @" Location permission has been blocked by the user" , nil );
68+ case kCLAuthorizationStatusAuthorizedWhenInUse :
69+ case kCLAuthorizationStatusAuthorizedAlways :
70+ break ;
71+ }
72+
73+ CLLocationManager *locationManager = [CLLocationManager new ];
74+
75+ switch (locationManager.accuracyAuthorization ) {
76+ case CLAccuracyAuthorizationFullAccuracy:
77+ return resolve (@" full" ); // resolve early if full accuracy is already granted
78+ case CLAccuracyAuthorizationReducedAccuracy:
79+ break ;
80+ }
81+
82+ [locationManager requestTemporaryFullAccuracyAuthorizationWithPurposeKey: purposeKey
83+ completion: ^(NSError * _Nullable error) {
84+ if (error) {
85+ reject ([NSString stringWithFormat: @" %ld " , (long )error.code], error.localizedDescription , error);
86+ } else {
87+ switch (locationManager.accuracyAuthorization ) {
88+ case CLAccuracyAuthorizationFullAccuracy:
89+ return resolve (@" full" );
90+ case CLAccuracyAuthorizationReducedAccuracy:
91+ return resolve (@" reduced" );
9692 }
97- }];
98- }) ;
93+ }
94+ }] ;
9995 } else {
10096 reject (@" cannot_request_location_accuracy" , @" Only available on iOS 14 or higher" , nil );
10197 }
0 commit comments