Actually compare chapter numbers as numbers when sorting (fixes #7247)

(cherry picked from commit da8669c826e6575a76751842bda3da59dc2f07c7)
(cherry picked from commit 4b7b710b7cc2e3526de176eb0eb72d763b32bcd7)

# Conflicts:
#	app/src/test/java/eu/kanade/tachiyomi/util/chapter/ChapterRecognitionTest.kt
This commit is contained in:
arkon 2022-06-10 09:49:50 -04:00 committed by Jobobby04
parent f322a7e660
commit 85bd12e731
2 changed files with 5 additions and 19 deletions

View File

@ -2,7 +2,6 @@ package eu.kanade.tachiyomi.util.chapter
import eu.kanade.tachiyomi.data.database.models.Chapter
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.util.lang.compareToCaseInsensitiveNaturalOrder
fun getChapterSort(manga: Manga, sortDescending: Boolean = manga.sortDescending()): (Chapter, Chapter) -> Int {
return when (manga.sorting) {
@ -11,13 +10,13 @@ fun getChapterSort(manga: Manga, sortDescending: Boolean = manga.sortDescending(
false -> { c1, c2 -> c2.source_order.compareTo(c1.source_order) }
}
Manga.CHAPTER_SORTING_NUMBER -> when (sortDescending) {
true -> { c1, c2 -> c2.chapter_number.toString().compareToCaseInsensitiveNaturalOrder(c1.chapter_number.toString()) }
false -> { c1, c2 -> c1.chapter_number.toString().compareToCaseInsensitiveNaturalOrder(c2.chapter_number.toString()) }
true -> { c1, c2 -> c2.chapter_number.compareTo(c1.chapter_number) }
false -> { c1, c2 -> c1.chapter_number.compareTo(c2.chapter_number) }
}
Manga.CHAPTER_SORTING_UPLOAD_DATE -> when (sortDescending) {
true -> { c1, c2 -> c2.date_upload.compareTo(c1.date_upload) }
false -> { c1, c2 -> c1.date_upload.compareTo(c2.date_upload) }
}
else -> throw NotImplementedError("Unimplemented sorting method")
else -> throw NotImplementedError("Invalid chapter sorting method: ${manga.sorting}")
}
}

View File

@ -256,20 +256,7 @@ class ChapterRecognitionTest {
}
private fun assertChapter(mangaTitle: String, name: String, expected: Float) {
val chapter = createChapter(name)
ChapterRecognition.parseChapterNumber(chapter, createManga(mangaTitle))
assertEquals(expected, chapter.chapter_number)
}
private fun createManga(title: String): Manga {
val manga = Manga.create(0)
manga.title = title
return manga
}
private fun createChapter(name: String): Chapter {
val chapter = Chapter.create()
chapter.name = name
return chapter
val chapterNumber = parseChapterNumber(mangaTitle, name)
assertEquals(chapterNumber, expected)
}
}