//reactivestate-core/com.ensody.reactivestate/ReactiveState
ReactiveState¶
interface ReactiveState<E : ErrorEvents> : CoroutineLauncher
An interface for ViewModels and any other objects that can trigger one-time events/actions and handle errors.
Make sure you always launch coroutines via launch (instead of the scope) to get automatic error handling.
See also¶
BaseReactiveState | for a ready-made base class (or delegate). |
Inheritors¶
BaseReactiveState |
Properties¶
Name | Summary |
---|---|
eventNotifier | [common] abstract val eventNotifier: EventNotifier<E> |
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 |
---|---|
attachTo | [common] fun ReactiveState<out ErrorEvents>.attachTo(owner: Any) |
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. |