diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt index f3c1a8e740..926bb24e30 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt @@ -812,7 +812,8 @@ class LibraryController( override fun manageCategory(position: Int) { val category = (adapter.getItem(position) as? LibraryHeaderItem)?.category ?: return - ManageCategoryDialog(this, category).showDialog(router) + if (category.id ?: 0 > -1) + ManageCategoryDialog(this, category).showDialog(router) } override fun sortCategory(catId: Int, sortBy: Int) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryItem.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryItem.kt index 36c00c8710..17d419d08e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryItem.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryItem.kt @@ -29,9 +29,9 @@ class LibraryItem( private val libraryLayout: Preference, private val fixedSize: Preference, private val showFastScroll: Preference, - header: LibraryHeaderItem? + header: LibraryHeaderItem ) : - AbstractSectionableItem(header), IFilterable { + AbstractSectionableItem(header), IFilterable { var downloadCount = -1 var unreadType = 2 diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt index 275d216d04..a067e0d5ca 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt @@ -299,8 +299,7 @@ class LibraryPresenter( private fun getCategory(categoryId: Int): Category { val category = categories.find { it.id == categoryId } ?: createDefaultCategory() if (category.isFirst == null) { - category.isFirst = (category.id ?: 0 <= 0 || - (category.order == 0 && categories.none { it.id == 0 })) + category.isFirst = categories.minBy { it.order }?.id == category.id } if (category.isLast == null) category.isLast = categories.lastOrNull()?.id == category.id return category @@ -324,7 +323,7 @@ class LibraryPresenter( category.changeSortTo(preferences.librarySortingMode().getOrDefault()) if (category.id == 0) preferences.defaultMangaOrder() .set(category.mangaSort.toString()) - else db.insertCategory(category).asRxObservable().subscribe() + else if (category.id ?: 0 > 0) db.insertCategory(category).executeAsBlocking() } i1.chapterCount = -1 i2.chapterCount = -1 @@ -405,22 +404,22 @@ class LibraryPresenter( val showCategories = !preferences.hideCategories().getOrDefault() var libraryManga = db.getLibraryMangas().executeAsBlocking() val seekPref = preferences.alwaysShowSeeker() - if (!showCategories) - libraryManga = libraryManga.distinctBy { it.id } - val categoryAll = Category.createAll(context, + if (!showCategories) libraryManga = libraryManga.distinctBy { it.id } + val categoryAll = Category.createAll( + context, preferences.librarySortingMode().getOrDefault(), - preferences.librarySortingAscending().getOrDefault()) + preferences.librarySortingAscending().getOrDefault() + ) val catItemAll = LibraryHeaderItem({ categoryAll }, -1, seekPref) val categorySet = mutableSetOf() val headerItems = (categories.mapNotNull { category -> val id = category.id if (id == null) null else id to LibraryHeaderItem({ getCategory(id) }, id, seekPref) - } + (-1 to catItemAll) + - (0 to LibraryHeaderItem({ getCategory(0) }, 0, seekPref))).toMap() - val items = libraryManga.map { - val headerItem = if (!showCategories) catItemAll else - headerItems[it.category] + } + (-1 to catItemAll) + (0 to LibraryHeaderItem({ getCategory(0) }, 0, seekPref))).toMap() + val items = libraryManga.mapNotNull { + val headerItem = (if (!showCategories) catItemAll + else headerItems[it.category]) ?: return@mapNotNull null categorySet.add(it.category) LibraryItem(it, libraryLayout, preferences.uniformGrid(), seekPref, headerItem) }.toMutableList() @@ -434,23 +433,27 @@ class LibraryPresenter( val catId = category.id ?: return@forEach if (catId > 0 && !categorySet.contains(catId)) { val headerItem = headerItems[catId] - items.add(LibraryItem( - LibraryManga.createBlank(catId), - libraryLayout, - preferences.uniformGrid(), - preferences.alwaysShowSeeker(), - headerItem - )) + if (headerItem != null) items.add( + LibraryItem( + LibraryManga.createBlank(catId), + libraryLayout, + preferences.uniformGrid(), + preferences.alwaysShowSeeker(), + headerItem + ) + ) } else if (catId in categoriesHidden) { - val headerItem = headerItems[catId] items.removeAll { it.manga.category == catId } - items.add(LibraryItem( - LibraryManga.createHide(catId), - libraryLayout, - preferences.uniformGrid(), - preferences.alwaysShowSeeker(), - headerItem - )) + val headerItem = headerItems[catId] + if (headerItem != null) items.add( + LibraryItem( + LibraryManga.createHide(catId), + libraryLayout, + preferences.uniformGrid(), + preferences.alwaysShowSeeker(), + headerItem + ) + ) } } } @@ -458,8 +461,7 @@ class LibraryPresenter( if (categories.size == 1 && showCategories) categories.first().name = context.getString(R.string.library) - if (categorySet.contains(0)) - categories.add(0, createDefaultCategory()) + if (categorySet.contains(0)) categories.add(0, createDefaultCategory()) categories.forEach { it.isHidden = it.id in categoriesHidden @@ -633,12 +635,11 @@ class LibraryPresenter( val sort = category.sortingMode() ?: LibrarySort.ALPHA preferences.librarySortingMode().set(sort) preferences.librarySortingAscending().set(category.isAscending()) - requestSortUpdate() - } else { + } else if (catId > 0) { if (category.id == 0) preferences.defaultMangaOrder().set(category.mangaSort.toString()) else Injekt.get().insertCategory(category).executeAsBlocking() - requestSortUpdate() } + requestSortUpdate() } /** Update a category's order */ @@ -711,7 +712,6 @@ class LibraryPresenter( } companion object { - // var catsHidden = mutableListOf() private var lastLibraryItems: List? = null private var lastCategories: List? = null