LibraryPresenter.java 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package eu.kanade.mangafeed.ui.library;
  2. import android.os.Bundle;
  3. import android.util.Pair;
  4. import java.util.List;
  5. import java.util.Map;
  6. import javax.inject.Inject;
  7. import eu.kanade.mangafeed.data.cache.CoverCache;
  8. import eu.kanade.mangafeed.data.database.DatabaseHelper;
  9. import eu.kanade.mangafeed.data.database.models.Manga;
  10. import eu.kanade.mangafeed.data.preference.PreferencesHelper;
  11. import eu.kanade.mangafeed.data.source.SourceManager;
  12. import eu.kanade.mangafeed.ui.base.presenter.BasePresenter;
  13. import rx.Observable;
  14. import rx.android.schedulers.AndroidSchedulers;
  15. import rx.schedulers.Schedulers;
  16. public class LibraryPresenter extends BasePresenter<LibraryFragment> {
  17. @Inject DatabaseHelper db;
  18. @Inject PreferencesHelper prefs;
  19. @Inject CoverCache coverCache;
  20. @Inject SourceManager sourceManager;
  21. private static final int GET_MANGAS = 1;
  22. @Override
  23. protected void onCreate(Bundle savedState) {
  24. super.onCreate(savedState);
  25. restartableLatestCache(GET_MANGAS,
  26. () -> db.getFavoriteMangasWithUnread().createObservable()
  27. .observeOn(AndroidSchedulers.mainThread()),
  28. LibraryFragment::onNextMangas);
  29. start(GET_MANGAS);
  30. }
  31. public void deleteMangas(Observable<Manga> selectedMangas) {
  32. add(selectedMangas
  33. .subscribeOn(Schedulers.io())
  34. .doOnNext(manga -> manga.favorite = false)
  35. .toList()
  36. .flatMap(mangas -> db.insertMangas(mangas).createObservable())
  37. .subscribe());
  38. }
  39. public Observable<Map<Long, List<Manga>>> getLibraryMangasObservable() {
  40. return db.getLibraryMangas().createObservable()
  41. .flatMap(mangas -> Observable.from(mangas)
  42. .groupBy(manga -> manga.category)
  43. .flatMap(group -> group.toList().map(list -> new Pair<>(group.getKey(), list)))
  44. .toMap(pair -> pair.first, pair -> pair.second));
  45. }
  46. }