Skip to content

//reactivestate-core/com.ensody.reactivestate/CoroutineLauncher

CoroutineLauncher

interface CoroutineLauncher

Interface for launching coroutines with error handling and loading state tracking.

You can track multiple different kinds of loading states by defining separate MutableValueFlow.

See also

ReactiveState for a full implementation that you’ll usually want to use.

Inheritors

ReactiveState
SimpleCoroutineLauncher

Properties

Name Summary
launcherScope [common]
abstract val launcherScope: CoroutineScope
The underlying CoroutineScope of this launcher.
loading [common]
abstract val loading: MutableValueFlow<Int>
The default loading tracker.

Functions

Name Summary
autoRun [common]
fun CoroutineLauncher.autoRun(onChange: AutoRunOnChangeCallback<Unit>? = null, observer: AutoRunCallback<Unit>): AutoRunner<Unit>
Watches observables for changes. Often useful to keep things in sync (e.g. CoroutineLauncher -> UI).
coAutoRun [common]
fun CoroutineLauncher.coAutoRun(onChange: CoAutoRunOnChangeCallback<Unit>? = null, flowTransformer: AutoRunFlowTransformer = { conflatedWorker(transform = it) }, dispatcher: CoroutineDispatcher = dispatchers.main, withLoading: MutableValueFlow<Int>? = loading, observer: CoAutoRunCallback<Unit>): CoAutoRunner<Unit>
Watches observables for changes. Often useful to keep things in sync (e.g. CoroutineLauncher -> UI).
derived [common]
fun <T> CoroutineLauncher.derived(synchronous: Boolean = true, cache: Boolean = synchronous, observer: AutoRunCallback<T>): StateFlow<T>
Creates a StateFlow that computes its value based on other StateFlows via an autoRun block.
[common]
fun <T> CoroutineLauncher.derived(initial: T, started: SharingStarted = SharingStarted.Eagerly, flowTransformer: AutoRunFlowTransformer = { conflatedWorker(transform = it) }, dispatcher: CoroutineDispatcher = dispatchers.main, withLoading: MutableValueFlow<Int>? = loading, observer: CoAutoRunCallback<T>): StateFlow<T>
Creates a StateFlow that computes its value based on other StateFlows via a suspendable coAutoRun block.
invokeOnCompletion [common]
fun CoroutineLauncher.invokeOnCompletion(handler: CompletionHandler): Disposable
Helper for adding a completion handler to a CoroutineLauncher.
launch [common]
open fun launch(context: CoroutineContext = EmptyCoroutineContext, start: CoroutineStart = CoroutineStart.DEFAULT, withLoading: MutableValueFlow<Int>? = loading, onError: suspend (Throwable) -> Unit? = null, block: suspend CoroutineScope.() -> Unit): Job
Launches a coroutine. Mark long-running coroutines by setting withLoading to loading state.
onError [common]
open fun onError(error: Throwable)
rawLaunch [common]
open fun rawLaunch(context: CoroutineContext, start: CoroutineStart, block: suspend CoroutineScope.() -> Unit): Job
Launches a coroutine without any error handling or loading state tracking.
track [common]
open suspend fun track(withLoading: MutableValueFlow<Int>? = loading, onError: suspend (Throwable) -> Unit? = null, block: suspend () -> Unit)
Tracks a suspension block’s loading state and errors.