diff --git a/app/src/main/java/com/readrops/app/activities/MainActivity.java b/app/src/main/java/com/readrops/app/activities/MainActivity.java index 5542fd65..1bbe0947 100644 --- a/app/src/main/java/com/readrops/app/activities/MainActivity.java +++ b/app/src/main/java/com/readrops/app/activities/MainActivity.java @@ -43,6 +43,10 @@ import java.util.ArrayList; import java.util.List; import java.util.TreeMap; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.observers.DisposableCompletableObserver; +import io.reactivex.schedulers.Schedulers; + public class MainActivity extends AppCompatActivity implements SimpleCallback, SwipeRefreshLayout.OnRefreshListener { public static final String TAG = MainActivity.class.getSimpleName(); @@ -214,7 +218,23 @@ public class MainActivity extends AppCompatActivity implements SimpleCallback, S @Override public void onRefresh() { Log.d(TAG, "syncing started"); - viewModel.sync(); + + viewModel.sync() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new DisposableCompletableObserver() { + @Override + public void onComplete() { + refreshLayout.setRefreshing(false); + adapter.submitList(newItems); + } + + @Override + public void onError(Throwable e) { + refreshLayout.setRefreshing(false); + Toast.makeText(getApplication(), e.getMessage(), Toast.LENGTH_LONG).show(); + } + }); } public void displayAddFeedDialog(View view) { diff --git a/app/src/main/java/com/readrops/app/repositories/ARepository.java b/app/src/main/java/com/readrops/app/repositories/ARepository.java index 79bf6bf9..2f12223b 100644 --- a/app/src/main/java/com/readrops/app/repositories/ARepository.java +++ b/app/src/main/java/com/readrops/app/repositories/ARepository.java @@ -32,7 +32,7 @@ public abstract class ARepository { this.callback = callback; } - public abstract void sync(); + public abstract Completable sync(); public abstract void addFeed(ParsingResult result); diff --git a/app/src/main/java/com/readrops/app/repositories/LocalFeedRepository.java b/app/src/main/java/com/readrops/app/repositories/LocalFeedRepository.java index 2ad990c7..df7aee64 100644 --- a/app/src/main/java/com/readrops/app/repositories/LocalFeedRepository.java +++ b/app/src/main/java/com/readrops/app/repositories/LocalFeedRepository.java @@ -1,5 +1,6 @@ package com.readrops.app.repositories; +import android.annotation.SuppressLint; import android.app.Application; import android.arch.lifecycle.LiveData; import android.graphics.Bitmap; @@ -50,8 +51,8 @@ public class LocalFeedRepository extends ARepository implements QueryCallback { } @Override - public void sync() { - executor.execute(() -> { + public Completable sync() { + return Completable.create(emitter -> { RSSNetwork rssNet = new RSSNetwork(); rssNet.setCallback(this); List feedList = database.feedDao().getAllFeeds(); @@ -66,11 +67,11 @@ public class LocalFeedRepository extends ARepository implements QueryCallback { rssNet.requestUrl(feed.getUrl(), headers); } catch (Exception e) { - failureCallBackInMainThread(e); + emitter.onError(e); } } - postCallBackSuccess(); + emitter.onComplete(); }); } diff --git a/app/src/main/java/com/readrops/app/viewmodels/MainViewModel.java b/app/src/main/java/com/readrops/app/viewmodels/MainViewModel.java index 068fcf91..2d18543e 100644 --- a/app/src/main/java/com/readrops/app/viewmodels/MainViewModel.java +++ b/app/src/main/java/com/readrops/app/viewmodels/MainViewModel.java @@ -12,6 +12,8 @@ import com.readrops.readropslibrary.ParsingResult; import java.util.List; +import io.reactivex.Completable; + public class MainViewModel extends AndroidViewModel { private LiveData> itemsWithFeed; @@ -33,8 +35,8 @@ public class MainViewModel extends AndroidViewModel { repository.setCallback(simpleCallback); } - public void sync() { - repository.sync(); + public Completable sync() { + return repository.sync(); } public void addFeed(ParsingResult parsingResult) {