memphis
05/23/2018, 9:20 AMreturn data.flatMapCompletable{...}.andThen(mObservableData)
gildor
05/23/2018, 9:28 AM.andThen { someLazyObservable }
memphis
05/23/2018, 9:29 AMgildor
05/23/2018, 9:30 AMandThen
has different overloaded versions including one for Observable, eager and lazymemphis
05/23/2018, 9:31 AMandThen(Observable)
gildor
05/23/2018, 9:32 AMarekolek
05/23/2018, 9:33 AMObservable.just(1, 2, 3)
.flatMapCompletable {
Completable.complete()
}
.andThen(Observable.just(3, 4, 6))
.test()
.assertValues(3, 4, 6)
worked for megildor
05/23/2018, 9:35 AMandThen
memphis
05/23/2018, 9:40 AMfun getUsers(): Observable<User> {
return getUserInfo()
.map { ... }
.flatMapCompletable { it.saveToRealm() }
.andThen (usersFromRealm())
}
usersFromRealm()
arekolek
05/23/2018, 9:42 AMsaveToRealm()
?memphis
05/23/2018, 9:42 AMarekolek
05/23/2018, 9:44 AMgetUserInfo
emitted anything?memphis
05/23/2018, 9:45 AMarekolek
05/23/2018, 9:46 AMsaveToRealm
signal onSuccess
when that happens? 🙂it.saveToRealm()
with Completable.complete()
2. replace usersFromRealm()
with Observable.just(User(/*...*/))
memphis
05/23/2018, 9:48 AMonComplete
saveToRealm()
:
return userInfoObservable.flatMapCompletable { Completable.fromCallable { it.save() }
arekolek
05/23/2018, 9:51 AMgetUsers
I'd change that, just to check if it's correctmemphis
05/23/2018, 9:51 AMObservable.just(User())
and got nothingarekolek
05/23/2018, 9:52 AMmemphis
05/23/2018, 9:53 AMarekolek
05/23/2018, 9:55 AMgetUsers().test().assertValue(User())
(with 1. and 2.)?memphis
05/23/2018, 9:57 AMmGetUsersUseCase.execute()
.doOnNext {
mUserLiveData.value = it
}
.doOnCompleteLog()
.autoDisposable(this)
.subscribeWith(RxLogSubscriber(UserViewModel::class.java.simpleName))
doOnCompleteLog
is just an extensionarekolek
05/23/2018, 10:00 AMLiveDataReactiveStreams.fromPublisher
the same as what you are trying to achieve here with liveData.value = it
and autoDisposable
?gildor
05/23/2018, 10:04 AMuserInfoObservable.flatMap { it.apply { save() } }
I just not sure how realm works, maybe there is no data in databaase yet, or some cache or any other issue.
Probably you could reproduce your problem on some self-contained samplememphis
05/23/2018, 10:52 AMgetUsers().test().assertValue(User())
and got an NPELiveDataReactiveStreams.fromPublisher
is a good practice? Because I heard it’s notarekolek
05/23/2018, 10:57 AMgetUserInfo
to return some observable, but that's a guessfromPublisher
I'd be interested to hear about any problems with it, but I don't know about anymemphis
05/23/2018, 11:15 AMCompletable
that’s why I’m using flatMapCompletable
gildor
05/23/2018, 11:16 AMmemphis
05/23/2018, 11:19 AMit.save()
doesn’t return an observablegildor
05/23/2018, 11:21 AMmemphis
05/23/2018, 11:24 AMgildor
05/23/2018, 11:24 AMmemphis
05/23/2018, 11:30 AMgildor
05/23/2018, 2:25 PMmemphis
05/23/2018, 3:13 PMDavor Maric
05/25/2018, 4:00 PMgildor
05/26/2018, 1:17 PMDavor Maric
05/26/2018, 3:06 PMgildor
05/27/2018, 7:12 AMDavor Maric
05/28/2018, 5:45 PMoverride fun validateAdminWithCredentials(username: String, password: String): Single<Authenticator> {
return Single.zip(checkIfPopulated(), findAdministratorInDatabase(username, password), BiFunction<Boolean, Boolean, Pair<Boolean, Boolean>>
{ t1, t2 -> Pair(t1, t2) })
.flatMap { pair ->
val returnValue = if (pair.first) {
Single.just(Pair(pair.second, false))
} else {
Single.fromCallable { local.adminDao().insert(createDefaultAdmin()) }.map { Pair(pair.second, true) }
}
returnValue
}
.map { Authenticator(it.first, it.second) }.subscribeOn(<http://Schedulers.io|Schedulers.io>())
}