Skip to content

Instantly share code, notes, and snippets.

@motorro
Last active August 11, 2022 09:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save motorro/862224cc34a7350ce718a80a3ff3e17d to your computer and use it in GitHub Desktop.
Save motorro/862224cc34a7350ce718a80a3ff3e17d to your computer and use it in GitHub Desktop.
Flow state machine
open class FlowStateMachine<G: Any, U: Any>(
init: () -> CommonMachineState<G, U>
) : CommonStateMachine.Base<G, U>(init) {
private val mediator = MutableSharedFlow<U>(
replay = 1,
onBufferOverflow = BufferOverflow.DROP_OLDEST
)
init {
start()
}
/**
* ExportedUI state
*/
val uiState: SharedFlow<U> = mediator.asSharedFlow()
final override fun setUiState(uiState: U) {
mediator.tryEmit(uiState)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment