К сожалению, я не могу понять, как проверить Observable.
В зависимости от соединения - я хочу получить свои данные из сети или БД.
У меня есть метод, который проверяет сетевое соединение:
companion object {
fun isConnected() : Observable<Boolean> {
val connectivityManager = MyApplication.applicationContext().getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val activeNetwork = connectivityManager.activeNetworkInfo
val isConnectedException = activeNetwork != null && activeNetwork.isConnectedOrConnecting
return Observable.just(isConnectedException)
}
}
Итак, если это правда, я хочу вызвать свой сетевой метод:
override fun searchGroups(q: String): Observable<List<Group>> {
return groupApi.searchGroups(GroupSearchRequest(q).toMap())
.flatMap { groupResponse -> Observable.just(groupResponse.response.items) }
.doOnNext{ groupList -> groupRepository.insertGroups(groupList)}
}
, а в другом случае я хочу вызвать метод БД:
override fun getGroupsFromDB(q: String): Observable<List<Group>> {
return groupRepository.findByName(q)
}
Вот моя попытка сделать это, но я думаю, что есть проблема из-за обнуляемого интерактора, но все еще не знаю, что делать.
compositeDisposable.add(
NetworkManager.isConnected()
.flatMap {
if (it) {
interactor?.searchGroups(q)
} else {
interactor?.getGroupsFromDB(q)
}
}
}
)
Может ли кто-нибудь помочь мне с этим?
ОБНОВЛЕНИЕ
Так что проблема была в обнуляемом объекте interactor
.
МожетКто-нибудь, пожалуйста, предложите лучший способ не использовать !!
для interactor
объекта?