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