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); | |
}) | |
) | |
) |