From d31cebfdfdbe2fb95d88799efe18ccbf902f3ab4 Mon Sep 17 00:00:00 2001 From: Ahmad Ansori Palembani Date: Mon, 2 Jun 2025 09:43:26 +0700 Subject: [PATCH] fix: More "Comparison method violates its general contract!" prevention --- .../kanade/tachiyomi/ui/library/LibraryPresenter.kt | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) 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 94fd1c594a..2cc65bb3ad 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 @@ -637,6 +637,9 @@ class LibraryPresenter( * @param itemList the map to sort. */ private fun List.applySort(): List { + // Making sure `allCategories` is stable for `.sort()`Add commentMore actions + val categoryOrderMap = allCategories.associate { it.id to it.order } + val sortFn: (LibraryItem, LibraryItem) -> Int = { i1, i2 -> if (i1.header.category.id == i2.header.category.id) { val category = i1.header.category @@ -663,12 +666,8 @@ class LibraryPresenter( LibrarySort.DateAdded -> i2.manga.date_added.compareTo(i1.manga.date_added) LibrarySort.DragAndDrop -> { if (category.isDynamic) { - val category1 = - allCategories.find { i1.manga.category == it.id }?.order - ?: 0 - val category2 = - allCategories.find { i2.manga.category == it.id }?.order - ?: 0 + val category1 = categoryOrderMap[i1.manga.category] ?: 0 + val category2 = categoryOrderMap[i2.manga.category] ?: 0 category1.compareTo(category2) } else { sortAlphabetical(i1, i2)