Skip to content

Instantly share code, notes, and snippets.

@digitalbuddha
Last active May 24, 2020 22:42
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 digitalbuddha/d1976a7d6fb48e3ba84acc4d6c733051 to your computer and use it in GitHub Desktop.
Save digitalbuddha/d1976a7d6fb48e3ba84acc4d6c733051 to your computer and use it in GitHub Desktop.
MyMvrxViewModel<State, Rendering>(services:Services, userId:String, loadingVM: LoadingViewModel, dataVM:DataViewModel){
sealed class State{
object Loading():State
data class Data(value:String)
}
override fun render(context:RenderScope, state:State):{
return when(state)
is Loading -> renderChild(loadingVM){ setState{State.Data} }
is Data -> renderChild(dataVM) { setState{State.Detail)}
is Detail -> renderChild(detailVM) {setState{//next screen}
}
}
LoadingViewModel<State, Rendering>(service:Service){
sealed class State{
object Loading():State
}
sealed class Rendering{
data class Loading(message:String="Loading"):Rendering
}
override fun render(context:RenderScope, state:State):{
return when(state)
is Loading -> {
context.execute(service.getSuspendedData){ setOutput(it)} //output goes back to parent to render something else
Rendering.Loading
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment