Slide 59
Slide 59 text
MainViewModel - logic
init {
val error = PublishSubject.create()
val userName = Observable.just(searchedUserName).share()
val requestListData = userName.flatMapMaybe {
getUserData.get(it).neverError(error)
}.share()
compositeDisposable.addAll(
Observables
.combineLatest(
Observable.merge(
requestListData.map { false },
error.map { false }
).startWith(true),
userName,
::MainViewState
).subscribe(state::setValue, logger::d),
requestListData.subscribe(refreshListData::setValue, logger::d),
error.map {
if (it is Error)
it.errorText
else UnExpected.errorText
}.subscribe(showErrorToast::setValue, logger::d),
clickUser.map { it.name }.subscribe(goProfileActivity::setValue, logger::d),
clickHomeButton.subscribe(finish::call, logger::d)
)