ursus
04/18/2018, 3:11 PM-- Basic usecase --
fooManager.fooObservable()
.someOtherObservable()
.flatMap(other -> barManager.barObservable())
.subscribe(...)
-- Bar is now mapped to events --
fun barObservable() : Observable<BarEvent> {
whatEverObservable()
.map { bar -> BarEvent.Success(bar) }
.onErrorReturn { t -> BarEvent.Error(t) }
.startWith(BarEvent.Started())
}
-- Foo want to be mapped aswell, not looks like this
fun fooObservable() : Observable<FooEvent> {
.someOtherObservable()
.flatMap { other -> barManager.barObservable() }
// this is gross
.filter { barEvent -> barEvent is not BarEvent.Started }
.map { barEvent ->
if barEvent is BarEvent.Error {
FooEvent.Error(barEvent.t)
} else {
FooEvent.Success(barEvent.bar)
}
})
//
// .map { _ -> FooEvent.Success() }
.onErrorReturn { t -> FooEvent.Error(t) }
.startWith(FooEvent.Started())
.subscribe(...)
}