@Override public Single<ArrayList<GroupList>> getGroupList() { Single<ArrayList<GroupList>> localGroups = mGroupManageLocalDataSource.getGroupList(); Single<ArrayList<GroupList>> remoteGroups = mGroupManageRemoteDataSource.getGroupList(); return RxUtil.filterEmpty(localGroups, remoteGroups); }
@Override public Single<ArrayList<GroupList>> refreshGroupList() { return mGroupManageRemoteDataSource .getGroupList() .doOnSuccess( new Consumer<ArrayList<GroupList>>() { @Override public void accept(ArrayList<GroupList> groupLists) { RxUtil.subscribeIgnoreAll(mGroupManageLocalDataSource.updateGroupList(groupLists)); } }); }
@Override public Observable<Boolean> updateGroupList(List<GroupList> groupLists) { final Observable<Boolean> localResult = mGroupManageLocalDataSource.updateGroupList(groupLists); Observable<Boolean> remoteResult = mGroupManageRemoteDataSource.updateGroupList(groupLists); return remoteResult.flatMap( new Function<Boolean, Observable<Boolean>>() { @Override public Observable<Boolean> apply(Boolean isSuccess) { if (isSuccess) { return localResult; } return ObservableHelper.just(false); } }); }