LibraryPresenter.java 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package eu.kanade.mangafeed.presenter;
  2. import android.os.Bundle;
  3. import android.util.SparseBooleanArray;
  4. import javax.inject.Inject;
  5. import eu.kanade.mangafeed.data.helpers.DatabaseHelper;
  6. import eu.kanade.mangafeed.data.helpers.PreferencesHelper;
  7. import eu.kanade.mangafeed.ui.adapter.LibraryAdapter;
  8. import eu.kanade.mangafeed.ui.fragment.LibraryFragment;
  9. import rx.Observable;
  10. import rx.Subscription;
  11. import rx.android.schedulers.AndroidSchedulers;
  12. import rx.schedulers.Schedulers;
  13. public class LibraryPresenter extends BasePresenter<LibraryFragment> {
  14. @Inject DatabaseHelper db;
  15. @Inject PreferencesHelper prefs;
  16. private Subscription mFavoriteMangasSubscription;
  17. private Subscription mDeleteMangaSubscription;
  18. @Override
  19. protected void onCreate(Bundle savedState) {
  20. super.onCreate(savedState);
  21. }
  22. @Override
  23. protected void onTakeView(LibraryFragment view) {
  24. super.onTakeView(view);
  25. getFavoriteMangas();
  26. }
  27. public void getFavoriteMangas() {
  28. if (mFavoriteMangasSubscription != null)
  29. return;
  30. add(mFavoriteMangasSubscription = db.getMangasWithUnread()
  31. .subscribeOn(Schedulers.io())
  32. .observeOn(AndroidSchedulers.mainThread())
  33. .compose(deliverLatestCache())
  34. .subscribe(this.split(LibraryFragment::onNextMangas)));
  35. }
  36. public void onDelete(SparseBooleanArray checkedItems, LibraryAdapter adapter) {
  37. if (mDeleteMangaSubscription != null)
  38. remove(mDeleteMangaSubscription);
  39. add(mDeleteMangaSubscription = Observable.range(0, checkedItems.size())
  40. .observeOn(Schedulers.io())
  41. .map(checkedItems::keyAt)
  42. .map(adapter::getItem)
  43. .toList()
  44. .flatMap(db::deleteMangas)
  45. .subscribe());
  46. }
  47. }