PermissionStateRepo

open class PermissionStateRepo<P : Permission>(monitoringInterval: Duration = defaultMonitoringInterval, createPermissionManager: (CoroutineScope) -> PermissionManager<P>, coroutineContext: CoroutineContext) : BasePermissionStateRepo<P>

A BasePermissionStateRepo for managing PermissionState

Parameters

P

the type of Permission of the PermissionState

monitoringInterval

the Duration after which the system should poll for changes to the permission if automatic detection is impossible.

createPermissionManager

method for creating a PermissionManager associated with the Permission

coroutineContext

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

Constructors

Link copied to clipboard
constructor(monitoringInterval: Duration = defaultMonitoringInterval, createPermissionManager: (CoroutineScope) -> PermissionManager<P>, coroutineContext: CoroutineContext)

Types

Link copied to clipboard
object Companion

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