Skip to content

Commit 4ec58a4

Browse files
committed
fix(android): guard RNLocation against IllegalStateException
1 parent 2172696 commit 4ec58a4

File tree

1 file changed

+35
-20
lines changed

1 file changed

+35
-20
lines changed

android/src/main/java/com/rngooglemapsplus/extensions/LocationExtension.kt

Lines changed: 35 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -20,38 +20,53 @@ fun Location.toRnLocation(): RNLocation =
2020
elapsedRealtimeNanos = elapsedRealtimeNanos.toDouble(),
2121
bearingAccuracyDegrees =
2222
when {
23-
Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ->
24-
bearingAccuracyDegrees.toDouble()
25-
26-
else -> null
23+
Build.VERSION.SDK_INT < Build.VERSION_CODES.O -> null
24+
else ->
25+
try {
26+
if (hasBearingAccuracy()) bearingAccuracyDegrees.toDouble() else null
27+
} catch (_: IllegalStateException) {
28+
null
29+
}
2730
},
2831
speedAccuracyMetersPerSecond =
2932
when {
30-
Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ->
31-
speedAccuracyMetersPerSecond.toDouble()
32-
33-
else -> null
33+
Build.VERSION.SDK_INT < Build.VERSION_CODES.O -> null
34+
else ->
35+
try {
36+
if (hasSpeedAccuracy()) speedAccuracyMetersPerSecond.toDouble() else null
37+
} catch (_: IllegalStateException) {
38+
null
39+
}
3440
},
3541
verticalAccuracyMeters =
3642
when {
37-
Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ->
38-
verticalAccuracyMeters.toDouble()
39-
40-
else -> null
43+
Build.VERSION.SDK_INT < Build.VERSION_CODES.O -> null
44+
else ->
45+
try {
46+
if (hasVerticalAccuracy()) verticalAccuracyMeters.toDouble() else null
47+
} catch (_: IllegalStateException) {
48+
null
49+
}
4150
},
4251
mslAltitudeMeters =
4352
when {
44-
Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE ->
45-
mslAltitudeMeters
46-
47-
else -> null
53+
Build.VERSION.SDK_INT < Build.VERSION_CODES.UPSIDE_DOWN_CAKE -> null
54+
else ->
55+
try {
56+
if (hasMslAltitude()) mslAltitudeMeters else null
57+
} catch (_: IllegalStateException) {
58+
null
59+
}
4860
},
4961
mslAltitudeAccuracyMeters =
5062
when {
51-
Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE ->
52-
mslAltitudeAccuracyMeters.toDouble()
53-
54-
else -> null
63+
Build.VERSION.SDK_INT < Build.VERSION_CODES.UPSIDE_DOWN_CAKE -> null
64+
else ->
65+
try {
66+
if (hasMslAltitude()) mslAltitudeAccuracyMeters.toDouble() else null
67+
} catch (_: IllegalStateException) {
68+
null
69+
}
5570
},
5671
isMock =
5772
when {

0 commit comments

Comments
 (0)