Aug 23, 2017 · 1 min read
Why do we need two doOnNext inside of Program?:
.doOnNext { (state, cmd) ->
//draw UI component.render(state)
}
.doOnNext{ (state, cmd) ->
this.state = state //remove current message from queue
if (msgQueue.size > 0) { msgQueue.removeFirst() }
//and send a new msg to relay if any
loop()
}Wouldn’t it better to make Component generic so we don’t have to cast our state inside of Component?:
interface Component<T : State> {
fun update(msg: Msg, state: T): Pair<T, Cmd>
fun render(state: T)
fun call(cmd: Cmd): Single<Msg>
}In overall, I really like this way to architect apps, and will definitely try it in my next projects. Can’t wait for part 3 ❤
