Skip to content

Commit 3a4431d

Browse files
authored
fix: when using playServices provider the getCurrentPosition error callback is never called (#302)
1 parent 0214d5b commit 3a4431d

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

android/src/main/java/com/reactnativecommunity/geolocation/PlayServicesLocationManager.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public void getCurrentLocationData(ReadableMap options, Callback success, Callba
5252

5353
if (currentActivity == null) {
5454
mSingleLocationCallback = createSingleLocationCallback(success, error);
55-
checkLocationSettings(options, mSingleLocationCallback);
55+
checkLocationSettings(options, mSingleLocationCallback, error);
5656
return;
5757
}
5858

@@ -63,7 +63,7 @@ public void getCurrentLocationData(ReadableMap options, Callback success, Callba
6363
success.invoke(locationToMap(location));
6464
} else {
6565
mSingleLocationCallback = createSingleLocationCallback(success, error);
66-
checkLocationSettings(options, mSingleLocationCallback);
66+
checkLocationSettings(options, mSingleLocationCallback, error);
6767
}
6868
});
6969
} catch (SecurityException e) {
@@ -93,7 +93,7 @@ public void onLocationAvailability(LocationAvailability locationAvailability) {
9393
}
9494
};
9595

96-
checkLocationSettings(options, mLocationCallback);
96+
checkLocationSettings(options, mLocationCallback, null);
9797
}
9898

9999
@Override
@@ -104,7 +104,7 @@ public void stopObserving() {
104104
mFusedLocationClient.removeLocationUpdates(mLocationCallback);
105105
}
106106

107-
private void checkLocationSettings(ReadableMap options, LocationCallback locationCallback) {
107+
private void checkLocationSettings(ReadableMap options, LocationCallback locationCallback, Callback error) {
108108
LocationOptions locationOptions = LocationOptions.fromReactMap(options);
109109
LocationRequest locationRequest = LocationRequest.create();
110110
locationRequest.setInterval(locationOptions.interval);
@@ -129,6 +129,13 @@ private void checkLocationSettings(ReadableMap options, LocationCallback locatio
129129
requestLocationUpdates(locationRequest, locationCallback);
130130
return;
131131
}
132+
133+
if (error != null) {
134+
error.invoke(
135+
PositionError.buildError(PositionError.POSITION_UNAVAILABLE, "Location not available (FusedLocationProvider/settings).")
136+
);
137+
return;
138+
}
132139
emitError(PositionError.POSITION_UNAVAILABLE, "Location not available (FusedLocationProvider/settings).");
133140
});
134141
}

0 commit comments

Comments
 (0)