OrbitContainer

The heart of the Orbit MVI system. Represents an MVI container with its input and outputs. You can manipulate the container through the orbit function

Parameters

INTERNAL_STATE

The container's internal state type.

EXTERNAL_STATE

The container's external (exposed) state type. When the same as INTERNAL_STATE, the container exposes its internal state directly.

SIDE_EFFECT

The type of side effects posted by this container. Can be Nothing if this container never posts side effects.

Inheritors

Properties

Link copied to clipboard
abstract val externalRefCountStateFlow: StateFlow<EXTERNAL_STATE>

A version of externalStateFlow ref-counted for the Syntax.repeatOnSubscription operator. Do not use when subscribing to state updates within your OrbitContainerHost.

Link copied to clipboard
abstract val externalStateFlow: StateFlow<EXTERNAL_STATE>

A StateFlow of external state updates. Derived from stateFlow via transformState. Emits the latest state upon subscription and serves only distinct values (through equality comparison).

Link copied to clipboard

A version of sideEffectFlow ref-counted for the Syntax.repeatOnSubscription operator. Do not use when subscribing to state updates within your OrbitContainerHost.

Link copied to clipboard
abstract val refCountStateFlow: StateFlow<INTERNAL_STATE>

A version of stateFlow ref-counted for the Syntax.repeatOnSubscription operator. Do not use when subscribing to state updates within your OrbitContainerHost.

Link copied to clipboard
abstract val scope: CoroutineScope
Link copied to clipboard
abstract val settings: RealSettings

Settings that the container was set up with

Link copied to clipboard
abstract val sideEffectFlow: Flow<SIDE_EFFECT>

A Flow of one-off side effects posted from OrbitContainer. Caches side effects when there are no collectors. The size of the cache can be controlled via SettingsBuilder and determines if and when the orbit thread suspends when you post a side effect.

Link copied to clipboard
abstract val stateFlow: StateFlow<INTERNAL_STATE>

A StateFlow of internal state updates. Emits the latest state upon subscription and serves only distinct values (through equality comparison).

Functions

Link copied to clipboard
abstract fun cancel()

Cancels the container scope and all intents in progress.

Link copied to clipboard
abstract suspend fun inlineOrbit(orbitIntent: suspend ContainerContext<INTERNAL_STATE, SIDE_EFFECT>.() -> Unit)

Executes an orbit intent inline, circumventing orbit's dispatching. The intents are built in the OrbitContainerHost using your chosen syntax.

Link copied to clipboard
abstract suspend fun joinIntents()

Joins all in progress intents in the container. This suspends until all intents have completed.

Link copied to clipboard
abstract fun orbit(orbitIntent: suspend ContainerContext<INTERNAL_STATE, SIDE_EFFECT>.() -> Unit): Job

Executes an orbit intent. The intents are built in the OrbitContainerHost using your chosen syntax.