Skip to content

Instantly share code, notes, and snippets.

@GuilhE

GuilhE/FSM.kt Secret

Last active February 6, 2022 22:53
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 GuilhE/0c979cd8ccedd2adc349b94059929d71 to your computer and use it in GitHub Desktop.
Save GuilhE/0c979cd8ccedd2adc349b94059929d71 to your computer and use it in GitHub Desktop.
Medium articles - MVI+FSM
StateMachine.create<TimerState.State, TimerState.Event, TimerState.SideEffect> {
initialState(TimerState.State.Idle)
state<TimerState.State.Idle> {
on<TimerState.Event.OnSetTimer> {
transitionTo(TimerState.State.SettingTimer, TimerState.SideEffect.SetTimer)
}
}
state<TimerState.State.SettingTimer> {
on<TimerState.Event.OnTimerSet> {
transitionTo(TimerState.State.Idle, TimerState.SideEffect.TimerReady(it.value))
}
}
onTransition {
val validTransition = it as? StateMachine.Transition.Valid ?: return@onTransition
//emit ui state changes
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment