Advertisement
Guest User

Untitled

a guest
May 23rd, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.41 KB | None | 0 0
  1. public class ProjectsViewModel {
  2.  
  3.     private Disposable mDisposable;
  4.     @Inject
  5.     Storage mStorage;
  6.     @Inject
  7.     BehanceApi mApi;
  8.     private ProjectsAdapter.OnItemClickListener mOnItemClickListener;
  9.     private String mQuery;
  10.  
  11.     private ObservableBoolean mIsLoading = new ObservableBoolean(false);
  12.     private ObservableBoolean mIsErrorVisible = new ObservableBoolean(false);
  13.     private ObservableArrayList<Project> mProjects = new ObservableArrayList<>();
  14.     private SwipeRefreshLayout.OnRefreshListener mOnRefreshListener = new SwipeRefreshLayout.OnRefreshListener() {
  15.         @Override
  16.         public void onRefresh() {
  17.             loadProjects(mQuery);
  18.         }
  19.     };
  20.  
  21.     ProjectsViewModel(ProjectsAdapter.OnItemClickListener onItemClickListener) {
  22.         mOnItemClickListener = onItemClickListener;
  23.     }
  24.  
  25.  
  26.     void loadProjects(String querry) {
  27.         mDisposable = mApi.getProjects(querry)
  28.                 .doOnSuccess(projectResponse -> mStorage.insertProjectsToBaseFromResponse(projectResponse))
  29.                 .onErrorReturn(throwable -> ApiUtils.NETWORK_EXCEPTIONS.contains(throwable.getClass()) ?
  30.                         mStorage.getProjectResponseFromStorage() : null)
  31.                 .subscribeOn(Schedulers.io())
  32.                 .observeOn(AndroidSchedulers.mainThread())
  33.                 .doOnSubscribe(disposable -> mIsLoading.set(true))
  34.                 .doFinally(() -> mIsLoading.set(false))
  35.                 .subscribe(response -> {
  36.                             mIsErrorVisible.set(false);
  37.                             mQuery = querry;
  38.                             mProjects.clear();
  39.                             mProjects.addAll(response.getProjects());
  40.                         },
  41.                         throwable -> mIsErrorVisible.set(true));
  42.     }
  43.  
  44.     void dispatchDetach() {
  45.         mStorage = null;
  46.         if (mDisposable != null) mDisposable.dispose();
  47.     }
  48.  
  49.     public ProjectsAdapter.OnItemClickListener getOnItemClickListener() {
  50.         return mOnItemClickListener;
  51.     }
  52.  
  53.     public ObservableBoolean getIsLoading() {
  54.         return mIsLoading;
  55.     }
  56.  
  57.     public ObservableBoolean getIsErrorVisible() {
  58.         return mIsErrorVisible;
  59.     }
  60.  
  61.     public ObservableArrayList<Project> getProjects() {
  62.         return mProjects;
  63.     }
  64.  
  65.     public SwipeRefreshLayout.OnRefreshListener getOnRefreshListener() {
  66.         return mOnRefreshListener;
  67.     }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement