Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class ProjectsViewModel {
- private Disposable mDisposable;
- @Inject
- Storage mStorage;
- @Inject
- BehanceApi mApi;
- private ProjectsAdapter.OnItemClickListener mOnItemClickListener;
- private String mQuery;
- private ObservableBoolean mIsLoading = new ObservableBoolean(false);
- private ObservableBoolean mIsErrorVisible = new ObservableBoolean(false);
- private ObservableArrayList<Project> mProjects = new ObservableArrayList<>();
- private SwipeRefreshLayout.OnRefreshListener mOnRefreshListener = new SwipeRefreshLayout.OnRefreshListener() {
- @Override
- public void onRefresh() {
- loadProjects(mQuery);
- }
- };
- ProjectsViewModel(ProjectsAdapter.OnItemClickListener onItemClickListener) {
- mOnItemClickListener = onItemClickListener;
- }
- void loadProjects(String querry) {
- mDisposable = mApi.getProjects(querry)
- .doOnSuccess(projectResponse -> mStorage.insertProjectsToBaseFromResponse(projectResponse))
- .onErrorReturn(throwable -> ApiUtils.NETWORK_EXCEPTIONS.contains(throwable.getClass()) ?
- mStorage.getProjectResponseFromStorage() : null)
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .doOnSubscribe(disposable -> mIsLoading.set(true))
- .doFinally(() -> mIsLoading.set(false))
- .subscribe(response -> {
- mIsErrorVisible.set(false);
- mQuery = querry;
- mProjects.clear();
- mProjects.addAll(response.getProjects());
- },
- throwable -> mIsErrorVisible.set(true));
- }
- void dispatchDetach() {
- mStorage = null;
- if (mDisposable != null) mDisposable.dispose();
- }
- public ProjectsAdapter.OnItemClickListener getOnItemClickListener() {
- return mOnItemClickListener;
- }
- public ObservableBoolean getIsLoading() {
- return mIsLoading;
- }
- public ObservableBoolean getIsErrorVisible() {
- return mIsErrorVisible;
- }
- public ObservableArrayList<Project> getProjects() {
- return mProjects;
- }
- public SwipeRefreshLayout.OnRefreshListener getOnRefreshListener() {
- return mOnRefreshListener;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement