Skip to content

Commit 2237b3d

Browse files
committed
fix: Prevent "Comparison method violates its general contract!" crashes
1 parent 09bd1a9 commit 2237b3d

File tree

1 file changed

+19
-15
lines changed

1 file changed

+19
-15
lines changed

app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -640,20 +640,6 @@ class LibraryPresenter(
640640
val sortFn: (LibraryItem, LibraryItem) -> Int = { i1, i2 ->
641641
if (i1.header.category.id == i2.header.category.id) {
642642
val category = i1.header.category
643-
if (category.mangaOrder.isEmpty() && category.mangaSort == null) {
644-
category.changeSortTo(preferences.librarySortingMode().get())
645-
if (category.id == 0) {
646-
preferences.defaultMangaOrder()
647-
.set(category.mangaSort.toString())
648-
} else if (!category.isDynamic) {
649-
onCategoryUpdate(
650-
CategoryUpdate(
651-
id = category.id!!.toLong(),
652-
mangaOrder = category.mangaOrderToString(),
653-
)
654-
)
655-
}
656-
}
657643
val compare = when {
658644
category.mangaSort != null -> {
659645
var sort = when (category.sortingMode() ?: LibrarySort.Title) {
@@ -717,7 +703,25 @@ class LibraryPresenter(
717703
}
718704
}
719705

720-
return this.sortedWith(Comparator(sortFn))
706+
return this
707+
.map {
708+
val category = it.header.category
709+
if (category.mangaOrder.isEmpty() && category.mangaSort == null) {
710+
category.changeSortTo(preferences.librarySortingMode().get())
711+
if (category.id == 0) {
712+
preferences.defaultMangaOrder()
713+
.set(category.mangaSort.toString())
714+
} else if (!category.isDynamic) {
715+
onCategoryUpdate(
716+
CategoryUpdate(
717+
id = category.id!!.toLong(),
718+
mangaOrder = category.mangaOrderToString(),
719+
)
720+
)
721+
}
722+
}
723+
}
724+
.sortedWith(Comparator(sortFn))
721725
}
722726

723727
/** Gets the category by id

0 commit comments

Comments
 (0)