diff --git a/app/src/main/java/eu/kanade/mangafeed/event/LibraryMangasEvent.java b/app/src/main/java/eu/kanade/mangafeed/event/LibraryMangasEvent.java index 329b6a764e..29dc63a0d0 100644 --- a/app/src/main/java/eu/kanade/mangafeed/event/LibraryMangasEvent.java +++ b/app/src/main/java/eu/kanade/mangafeed/event/LibraryMangasEvent.java @@ -1,8 +1,11 @@ package eu.kanade.mangafeed.event; +import android.support.annotation.Nullable; + import java.util.List; import java.util.Map; +import eu.kanade.mangafeed.data.database.models.Category; import eu.kanade.mangafeed.data.database.models.Manga; public class LibraryMangasEvent { @@ -16,4 +19,9 @@ public class LibraryMangasEvent { public Map> getMangas() { return mangas; } + + @Nullable + public List getMangasForCategory(Category category) { + return mangas.get(category.id); + } } diff --git a/app/src/main/java/eu/kanade/mangafeed/ui/library/LibraryAdapter.java b/app/src/main/java/eu/kanade/mangafeed/ui/library/LibraryAdapter.java index 39d8fdc6ad..688b3c0ea4 100644 --- a/app/src/main/java/eu/kanade/mangafeed/ui/library/LibraryAdapter.java +++ b/app/src/main/java/eu/kanade/mangafeed/ui/library/LibraryAdapter.java @@ -42,8 +42,4 @@ public class LibraryAdapter extends SmartFragmentStatePagerAdapter { } } - public boolean hasDefaultCategory() { - return categories.get(0).id == 0; - } - } \ No newline at end of file diff --git a/app/src/main/java/eu/kanade/mangafeed/ui/library/LibraryCategoryFragment.java b/app/src/main/java/eu/kanade/mangafeed/ui/library/LibraryCategoryFragment.java index 6aa0b89684..6c26c011b9 100644 --- a/app/src/main/java/eu/kanade/mangafeed/ui/library/LibraryCategoryFragment.java +++ b/app/src/main/java/eu/kanade/mangafeed/ui/library/LibraryCategoryFragment.java @@ -108,7 +108,7 @@ public class LibraryCategoryFragment extends BaseFragment return; Category category = categories.get(position); - List mangas = event.getMangas().get(category.id); + List mangas = event.getMangasForCategory(category); if (mangas == null) { mangas = new ArrayList<>(); } diff --git a/app/src/main/java/eu/kanade/mangafeed/ui/library/LibraryFragment.java b/app/src/main/java/eu/kanade/mangafeed/ui/library/LibraryFragment.java index 97cb2ddd0e..5c3f2067ff 100644 --- a/app/src/main/java/eu/kanade/mangafeed/ui/library/LibraryFragment.java +++ b/app/src/main/java/eu/kanade/mangafeed/ui/library/LibraryFragment.java @@ -7,7 +7,6 @@ import android.support.design.widget.AppBarLayout; import android.support.design.widget.TabLayout; import android.support.v4.view.ViewPager; import android.support.v7.view.ActionMode; -import android.util.Pair; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -119,26 +118,20 @@ public class LibraryFragment extends BaseRxFragment startActivity(intent); } - public void onNextLibraryUpdate(Pair, Map>> pair) { - boolean mangasInDefaultCategory = pair.second.get(0) != null; - boolean initialized = adapter.categories != null; + public void onNextLibraryUpdate(List categories, Map> mangas) { + boolean hasMangasInDefaultCategory = mangas.get(0) != null; + int activeCat = adapter.categories != null ? viewPager.getCurrentItem() : activeCategory; - // If there are mangas in the default category and the adapter doesn't have it, - // create the default category - if (mangasInDefaultCategory && (!initialized || !adapter.hasDefaultCategory())) { - setCategoriesWithDefault(pair.first); - } - // If there aren't mangas in the default category and the adapter have it, - // remove the default category - else if (!mangasInDefaultCategory && (!initialized || adapter.hasDefaultCategory())) { - setCategories(pair.first); + if (hasMangasInDefaultCategory) { + setCategoriesWithDefault(categories); + } else { + setCategories(categories); } // Restore active category - if (!initialized) { - viewPager.setCurrentItem(activeCategory, false); - } + viewPager.setCurrentItem(activeCat, false); + // Send the mangas to child fragments after the adapter is updated - EventBus.getDefault().postSticky(new LibraryMangasEvent(pair.second)); + EventBus.getDefault().postSticky(new LibraryMangasEvent(mangas)); } private void setCategoriesWithDefault(List categories) { diff --git a/app/src/main/java/eu/kanade/mangafeed/ui/library/LibraryPresenter.java b/app/src/main/java/eu/kanade/mangafeed/ui/library/LibraryPresenter.java index 423a12ac4b..e5d547fa0c 100644 --- a/app/src/main/java/eu/kanade/mangafeed/ui/library/LibraryPresenter.java +++ b/app/src/main/java/eu/kanade/mangafeed/ui/library/LibraryPresenter.java @@ -42,7 +42,7 @@ public class LibraryPresenter extends BasePresenter { restartableLatestCache(GET_LIBRARY, this::getLibraryObservable, - LibraryFragment::onNextLibraryUpdate); + (view, pair) -> view.onNextLibraryUpdate(pair.first, pair.second)); start(GET_LIBRARY); }