Только начал изучать RxJava и пытаюсь реализовать проверку на офлайн. Когда есть сеть, должно выдавать от ретрофита, при офлайне - из БД.
Код из Repository:
public Observable<List<Category>> getCategories() {
return App.getInstance().isConnectionAvailable()
.filter(connection -> connection)
.switchMap(connection -> remoteDataSource.getCategories()
.doOnNext(categories -> localDataSource.insertCategories(categories)))
.switchIfEmpty(observer -> localDataSource.getCategories());
}
при сети работает корректно, а без сети из БД не выдает почему-то. Но при этом метод localDataSource.getCategories() вызывается.
Когда оставляю return localDataSource.getCategories() вместо тела вышеприведенного метода, данные из БД приходят и отображаются.
И вызов в презентере:
disposable.add(repository.getCategories()
.compose(RxUtils.async()) // subscribeOn.io/observeOn
.subscribe(view::showCategories, t -> ErrorHandler.handleError(view, t)));
При первом варианте в view::showCategories и ErrorHandler.handleError ничего не попадает, не вызываются.
В чем может быть дело?