Skip to content

Commit 96d4e00

Browse files
tomaszrybakiewiczabhishek1508
authored andcommitted
Updated PermissionsLauncherFragment to only request permissions that are missing.
1 parent 530f99b commit 96d4e00

2 files changed

Lines changed: 8 additions & 8 deletions

File tree

libnavui-dropin/src/main/java/com/mapbox/navigation/dropin/permission/LocationPermissionComponent.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ internal class LocationPermissionComponent(
6666
} else {
6767
val fragActivity = componentActivityRef.get() as? FragmentActivity
6868
if (fragActivity != null) {
69-
PermissionsLauncherFragment.create(fragActivity, LOCATION_PERMISSIONS, callback)
69+
PermissionsLauncherFragment.install(fragActivity, LOCATION_PERMISSIONS, callback)
7070
} else {
7171
launcher?.launch(LOCATION_PERMISSIONS)
7272
}
@@ -99,7 +99,7 @@ internal class LocationPermissionComponent(
9999
super.onDetached(mapboxNavigation)
100100

101101
(componentActivityRef.get() as? FragmentActivity)?.also {
102-
PermissionsLauncherFragment.destroy(it)
102+
PermissionsLauncherFragment.uninstall(it)
103103
}
104104
launcher?.unregister()
105105
}

libnavui-dropin/src/main/java/com/mapbox/navigation/dropin/permission/PermissionsLauncherFragment.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ internal class PermissionsLauncherFragment(
2222

2323
override fun onAttach(context: Context) {
2424
super.onAttach(context)
25-
val areGranted = permissions.fold(false) { acc, permission ->
26-
acc && checkSelfPermission(context, permission) == PERMISSION_GRANTED
25+
val missingPermissions = permissions.filter { permission ->
26+
checkSelfPermission(context, permission) != PERMISSION_GRANTED
2727
}
28-
if (!areGranted) {
28+
if (missingPermissions.isNotEmpty()) {
2929
launcher = registerForActivityResult(RequestMultiplePermissions(), onResult)
30-
launcher?.launch(permissions)
30+
launcher?.launch(missingPermissions.toTypedArray())
3131
}
3232
}
3333

@@ -39,7 +39,7 @@ internal class PermissionsLauncherFragment(
3939
companion object {
4040
const val TAG = "MapboxPermissionsLauncherFragment"
4141

42-
fun create(
42+
fun install(
4343
fragActivity: FragmentActivity,
4444
permissions: Array<String>,
4545
onResult: ActivityResultCallback<Map<String, Boolean>>
@@ -52,7 +52,7 @@ internal class PermissionsLauncherFragment(
5252
}
5353
}
5454

55-
fun destroy(fragActivity: FragmentActivity) {
55+
fun uninstall(fragActivity: FragmentActivity) {
5656
if (!fragActivity.isFinishing) {
5757
fragActivity.supportFragmentManager.apply {
5858
findFragmentByTag(TAG)?.also {

0 commit comments

Comments
 (0)