zak.taccardi
04/19/2017, 7:09 PM.flatMap()
? So an operator like .distinctUntilChanged()
still works?
sealed class State {
object Loading : State()
data class Loaded(val value: Int) : State()
}
@Test fun distinctTest() {
val relay = PublishRelay.create<State>()
relay.flatMap {
fun handle(state: State): Observable<*> = when (state) {
State.Loading -> Observable.just(state)
.distinctUntilChanged()
.doOnNext { println("loading") }
is State.Loaded -> Observable.just(state)
.distinctUntilChanged()
.doOnNext { println(it.value) }
}
handle(it)
}
.subscribe()
relay.accept(State.Loading)
relay.accept(State.Loaded(1))
relay.accept(State.Loaded(2))
relay.accept(State.Loaded(3))
relay.accept(State.Loaded(3))
//expected: loading, 1, 2, 3
//actual: loading, 1, 2, 3, 3
}