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 a61ddd072b..daa00e65da 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 @@ -208,24 +208,23 @@ class LibraryPresenter( listOf(default) + db.getCategories().executeAsBlocking() } + val ascending = preferences.librarySortingAscending().getOrDefault() val sortFn: (LibraryItem, LibraryItem) -> Int = { i1, i2 -> - when (sortingMode) { + val compare = when (sortingMode) { LibrarySort.ALPHA -> sortAlphabetical(i1, i2) LibrarySort.LAST_READ -> { // Get index of manga, set equal to list if size unknown. val manga1LastRead = lastReadManga[i1.manga.id!!] ?: lastReadManga.size val manga2LastRead = lastReadManga[i2.manga.id!!] ?: lastReadManga.size - val mangaCompare = manga1LastRead.compareTo(manga2LastRead) - if (mangaCompare == 0) sortAlphabetical(i1, i2) else mangaCompare + manga1LastRead.compareTo(manga2LastRead) } LibrarySort.LAST_UPDATED -> i2.manga.last_update.compareTo(i1.manga.last_update) LibrarySort.UNREAD -> i1.manga.unread.compareTo(i2.manga.unread) LibrarySort.TOTAL -> { val manga1TotalChapter = totalChapterManga[i1.manga.id!!] ?: 0 val mange2TotalChapter = totalChapterManga[i2.manga.id!!] ?: 0 - val mangaCompare = manga1TotalChapter.compareTo(mange2TotalChapter) - if (mangaCompare == 0) sortAlphabetical(i1, i2) else mangaCompare + manga1TotalChapter.compareTo(mange2TotalChapter) } LibrarySort.DRAG_AND_DROP -> { if (i1.manga.category == i2.manga.category) { @@ -258,9 +257,14 @@ class LibraryPresenter( } else -> 0 } + if (compare == 0) { + if (ascending) sortAlphabetical(i1, i2) + else sortAlphabetical(i2, i1) + } + else compare } - val comparator = if (preferences.librarySortingAscending().getOrDefault()) + val comparator = if (ascending) Comparator(sortFn) else Collections.reverseOrder(sortFn)