Как проверить Observable <Boolean>? - PullRequest
       16

Как проверить Observable <Boolean>?

0 голосов
/ 28 октября 2018

К сожалению, я не могу понять, как проверить 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)
                            }
                        }
    }
    )

enter image description here

Может ли кто-нибудь помочь мне с этим?

ОБНОВЛЕНИЕ

Так что проблема была в обнуляемом объекте interactor.

МожетКто-нибудь, пожалуйста, предложите лучший способ не использовать !! для interactor объекта?

enter image description here

...