ui: add PermissionViewModel with three-state machine
This commit is contained in:
@@ -0,0 +1,7 @@
|
|||||||
|
package de.jeanlucmakiola.calendula.ui.permission
|
||||||
|
|
||||||
|
sealed interface PermissionUiState {
|
||||||
|
data object Rationale : PermissionUiState
|
||||||
|
data object Denied : PermissionUiState
|
||||||
|
data object Granted : PermissionUiState
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package de.jeanlucmakiola.calendula.ui.permission
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
|
import kotlinx.coroutines.flow.asStateFlow
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@HiltViewModel
|
||||||
|
class PermissionViewModel @Inject constructor() : ViewModel() {
|
||||||
|
|
||||||
|
private val _state = MutableStateFlow<PermissionUiState>(PermissionUiState.Rationale)
|
||||||
|
val state: StateFlow<PermissionUiState> = _state.asStateFlow()
|
||||||
|
|
||||||
|
fun onGranted() {
|
||||||
|
_state.value = PermissionUiState.Granted
|
||||||
|
}
|
||||||
|
|
||||||
|
fun onDenied() {
|
||||||
|
_state.value = PermissionUiState.Denied
|
||||||
|
}
|
||||||
|
|
||||||
|
fun onRetry() {
|
||||||
|
_state.value = PermissionUiState.Rationale
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user