Skip to content

Instantly share code, notes, and snippets.

@mayowa-egbewunmi
Last active August 1, 2022 01:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mayowa-egbewunmi/9a26240e3b0f64a9d58cc756c9a83a97 to your computer and use it in GitHub Desktop.
Save mayowa-egbewunmi/9a26240e3b0f64a9d58cc756c9a83a97 to your computer and use it in GitHub Desktop.
@Composable
fun HandlePermissionsRequest(permissions: List<String>, permissionsHandler: PermissionsHandler) {
val state by permissionHandler.state.collectAsState()
val permissionsState = rememberMultiplePermissionsState(permissions)
LaunchedEffect(permissionsState) {
permissionHandler.onEvent(PermissionHandler.Event.PermissionsStateUpdated(permissionsState))
when {
permissionsState.allPermissionsGranted -> {
permissionsHandler.onEvent(PermissionsHandler.Event.PermissionsGranted)
}
permissionsState.permissionRequested && !permissionsState.shouldShowRationale -> {
permissionsHandler.onEvent(PermissionsHandler.Event.PermissionNeverAskAgain)
}
else -> {
permissionsHandler.onEvent(PermissionsHandler.Event.PermissionDenied)
}
}
}
HandlePermissionAction(
action = state.permissionAction,
permissionStates = state.multiplePermissionsState,
rationaleText = R.string.permission_rationale,
neverAskAgainText = R.string.permission_rationale,
onOkTapped = { permissionsHandler.onEvent(PermissionsHandler.Event.PermissionRationaleOkTapped) },
onSettingsTapped = { permissionsHandler.onEvent(PermissionsHandler.Event.PermissionSettingsTapped) },
)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment