RxViews:
- CacheSwitch Button
| RxCompoundButton.checkedChanges(mCacheSwitch) | |
| .compose(RxNetworkUtils.builder().sync().build()) | |
| .skip(1) | |
| .onBackpressureLatest() | |
| .debounce(250, TimeUnit.MILLISECONDS) | |
| .share() | |
| .switchMap(isChecked -> | |
| mDataPlaceRepository.isCacheAllowed() | |
| .filter(inDbIsChecked -> inDbIsChecked != isChecked) | |
| .flatMap(aBoolean -> | |
| mDataPlaceRepository.updateCache(isChecked) .compose(RxNetworkUtils.builder(getView()).async().errorToast().build())) | |
| .onErrorResumeNext(throwable -> | |
| mDataPlaceRepository.isCacheAllowed() | |
| .compose(RxNetworkUtils.builder(getView()) .async().errorToast().errorHandler().build()) | |
| .doOnNext(isCacheActivated -> { | |
| //on Error set restore state from settings | |
| getView().setCachingActivated(isCacheActivated, false); | |
| }) | |
| ) | |
| ) |