Skip to content

Instantly share code, notes, and snippets.

@mayowa-egbewunmi
Last active August 1, 2022 02:03
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/f1328a4514ab1952c97c37f602950842 to your computer and use it in GitHub Desktop.
Save mayowa-egbewunmi/f1328a4514ab1952c97c37f602950842 to your computer and use it in GitHub Desktop.
class PermissionsHandler {
private val _state = MutableStateFlow(State())
val state: StateFlow<State> = _state
fun onEvent(event: Event) {
when (event) {
Event.PermissionDenied -> onPermissionDenied()
Event.PermissionDismissTapped -> onPermissionDismissTapped()
Event.PermissionNeverAskAgain -> onPermissionNeverShowAgain()
Event.PermissionRationaleOkTapped -> onPermissionRationaleOkTapped()
Event.PermissionRequired -> onPermissionRequired()
Event.PermissionSettingsTapped -> onPermissionSettingsTapped()
Event.PermissionsGranted -> onPermissionGranted()
is Event.PermissionsStateUpdated -> onPermissionsStateUpdated(event.permissionsState)
}
}
data class State(
val multiplePermissionsState: MultiplePermissionsState? = null,
val permissionAction: Action = Action.NO_ACTION
)
sealed class Event {
object PermissionDenied : Event()
object PermissionsGranted : Event()
object PermissionSettingsTapped : Event()
object PermissionNeverAskAgain : Event()
object PermissionDismissTapped : Event()
object PermissionRationaleOkTapped : Event()
object PermissionRequired : Event()
data class PermissionsStateUpdated(val permissionsState: MultiplePermissionsState) :
Event()
}
enum class Action {
REQUEST_PERMISSION, SHOW_RATIONALE, SHOW_NEVER_ASK_AGAIN, NO_ACTION
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment