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