BasePermissionStateRepo

abstract class BasePermissionStateRepo<P : Permission>(createUninitializedState: () -> PermissionState.Uninitialized<P>, createInitializingState: suspend ColdStateFlowRepo<PermissionState<P>>.(PermissionState.Inactive<P>) -> suspend () -> PermissionState.Initializing<P>, createDeinitializedState: suspend ColdStateFlowRepo<PermissionState<P>>.(PermissionState.Active<P>) -> suspend () -> PermissionState.Deinitialized<P> = { it.deinitialize }, coroutineContext: CoroutineContext) : ColdStateFlowRepo<PermissionState<P>>

An abstract ColdStateFlowRepo for managing PermissionState

Parameters

P

the type of Permission of the PermissionState

createUninitializedState

method for creating the initial PermissionState.Uninitialized State

createInitializingState

method for transitioning from a PermissionState.Inactive into a PermissionState.Initializing given an implementation of this ColdStateFlowRepo

createDeinitializedState

method for transitioning from a PermissionState.Active into a PermissionState.Deinitialized given an implementation of this ColdStateFlowRepo

coroutineContext

the CoroutineContext the CoroutineContext used to create a coroutine scope for this state machine.

Inheritors

Constructors

Link copied to clipboard
constructor(createUninitializedState: () -> PermissionState.Uninitialized<P>, createInitializingState: suspend ColdStateFlowRepo<PermissionState<P>>.(PermissionState.Inactive<P>) -> suspend () -> PermissionState.Initializing<P>, createDeinitializedState: suspend ColdStateFlowRepo<PermissionState<P>>.(PermissionState.Active<P>) -> suspend () -> PermissionState.Deinitialized<P> = { it.deinitialize }, coroutineContext: CoroutineContext)

Properties

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override val lazyMutableFlow: Lazy<MutableStateFlow<PermissionState<P>>>
Link copied to clipboard
open override val stateFlow: StateFlow<PermissionState<P>>
Link copied to clipboard
val subscriptionCount: StateFlow<Int>

Functions

Link copied to clipboard
open suspend override fun collect(collector: FlowCollector<PermissionState<P>>): Nothing
Link copied to clipboard
open suspend override fun firstCollection()
Link copied to clipboard
suspend override fun initialValue(): PermissionState<P>
Link copied to clipboard
open suspend override fun laterCollections(): PermissionState<P>
Link copied to clipboard
fun launchTakeAndChangeState(context: CoroutineContext, action: suspend (PermissionState<P>) -> suspend () -> PermissionState<P>): Job
fun <K : PermissionState<P>> launchTakeAndChangeState(context: CoroutineContext, remainIfStateNot: KClass<K>, action: suspend (K) -> suspend () -> PermissionState<P>): Job
Link copied to clipboard
fun <Result> launchUseState(context: CoroutineContext, action: suspend (PermissionState<P>) -> Result): Job
Link copied to clipboard
suspend override fun noMoreCollections(): PermissionState<P>
Link copied to clipboard
Link copied to clipboard
suspend fun <P : Permission> Flow<PermissionState<out P>>.request(): Boolean

Requests a Permission on a Flow of PermissionState

Link copied to clipboard
suspend fun takeAndChangeState(action: suspend (PermissionState<P>) -> suspend () -> PermissionState<P>): PermissionState<P>
suspend fun <K : PermissionState<P>> takeAndChangeState(remainIfStateNot: KClass<K>, action: suspend (K) -> suspend () -> PermissionState<P>): PermissionState<P>
Link copied to clipboard
suspend fun <Result> useState(action: suspend (PermissionState<P>) -> Result): Result