Suppress webview / checkbox permission dialog
Signed-off-by: Johannes Marbach <johannesm@element.io>
This commit is contained in:
parent
fd3b082a2c
commit
5c55263cf6
@ -298,7 +298,8 @@ class WidgetFragment @Inject constructor(
|
||||
request = request,
|
||||
context = requireContext(),
|
||||
activity = requireActivity(),
|
||||
activityResultLauncher = permissionResultLauncher
|
||||
activityResultLauncher = permissionResultLauncher,
|
||||
autoApprove = fragmentArgs.kind == WidgetKind.ELEMENT_CALL
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -41,11 +41,22 @@ class WebviewPermissionUtils @Inject constructor(
|
||||
request: PermissionRequest,
|
||||
context: Context,
|
||||
activity: FragmentActivity,
|
||||
activityResultLauncher: ActivityResultLauncher<Array<String>>
|
||||
activityResultLauncher: ActivityResultLauncher<Array<String>>,
|
||||
autoApprove: Boolean = false
|
||||
) {
|
||||
if (autoApprove) {
|
||||
onPermissionsSelected(
|
||||
permissions = request.resources.toList(),
|
||||
request = request,
|
||||
activity = activity,
|
||||
activityResultLauncher = activityResultLauncher)
|
||||
return
|
||||
}
|
||||
|
||||
val allowedPermissions = request.resources.map {
|
||||
it to false
|
||||
}.toMutableList()
|
||||
|
||||
MaterialAlertDialogBuilder(context)
|
||||
.setTitle(title)
|
||||
.setMultiChoiceItems(
|
||||
@ -54,10 +65,25 @@ class WebviewPermissionUtils @Inject constructor(
|
||||
allowedPermissions[which] = allowedPermissions[which].first to isChecked
|
||||
}
|
||||
.setPositiveButton(R.string.room_widget_resource_grant_permission) { _, _ ->
|
||||
permissionRequest = request
|
||||
selectedPermissions = allowedPermissions.mapNotNull { perm ->
|
||||
val permissions = allowedPermissions.mapNotNull { perm ->
|
||||
perm.first.takeIf { perm.second }
|
||||
}
|
||||
onPermissionsSelected(permissions, request, activity, activityResultLauncher)
|
||||
}
|
||||
.setNegativeButton(R.string.room_widget_resource_decline_permission) { _, _ ->
|
||||
request.deny()
|
||||
}
|
||||
.show()
|
||||
}
|
||||
|
||||
private fun onPermissionsSelected(
|
||||
permissions: List<String>,
|
||||
request: PermissionRequest,
|
||||
activity: FragmentActivity,
|
||||
activityResultLauncher: ActivityResultLauncher<Array<String>>,
|
||||
) {
|
||||
permissionRequest = request
|
||||
selectedPermissions = permissions
|
||||
|
||||
val requiredAndroidPermissions = selectedPermissions.mapNotNull { permission ->
|
||||
webPermissionToAndroidPermission(permission)
|
||||
@ -70,11 +96,6 @@ class WebviewPermissionUtils @Inject constructor(
|
||||
reset()
|
||||
}
|
||||
}
|
||||
.setNegativeButton(R.string.room_widget_resource_decline_permission) { _, _ ->
|
||||
request.deny()
|
||||
}
|
||||
.show()
|
||||
}
|
||||
|
||||
fun onPermissionResult(result: Map<String, Boolean>) {
|
||||
if (permissionRequest == null) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user