Browse Source

Added missing sorting cases handling

Previous commit missed some cases resulting in errors at runtime
Lautaro Martin Emanuel 4 năm trước cách đây
mục cha
commit
9e830f1c55

+ 9 - 0
app/src/main/java/eu/kanade/tachiyomi/ui/reader/ChapterLoadStrategy.kt

@@ -35,3 +35,12 @@ class ChapterLoadByNumber {
         return chapters.sortedBy { it.chapter_number }
     }
 }
+
+/**
+ * Load strategy using the chapter upload date. This ordering ignores scanlators
+ */
+class ChapterLoadByUploadDate() {
+    fun get(allChapters: List<Chapter>): List<Chapter> {
+        return allChapters.sortedBy { it.date_upload }
+    }
+}

+ 1 - 0
app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt

@@ -129,6 +129,7 @@ class ReaderPresenter(
         when (manga.sorting) {
             Manga.SORTING_SOURCE -> ChapterLoadBySource().get(chaptersForReader)
             Manga.SORTING_NUMBER -> ChapterLoadByNumber().get(chaptersForReader, selectedChapter)
+            Manga.SORTING_UPLOAD_DATE -> ChapterLoadByUploadDate().get(chaptersForReader)
             else -> error("Unknown sorting method")
         }.map(::ReaderChapter)
     }

+ 7 - 0
app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryPresenter.kt

@@ -98,6 +98,7 @@ class HistoryPresenter : BasePresenter<HistoryController>() {
         val sortFunction: (Chapter, Chapter) -> Int = when (manga.sorting) {
             Manga.SORTING_SOURCE -> { c1, c2 -> c2.source_order.compareTo(c1.source_order) }
             Manga.SORTING_NUMBER -> { c1, c2 -> c1.chapter_number.compareTo(c2.chapter_number) }
+            Manga.SORTING_UPLOAD_DATE -> { c1, c2 -> c1.date_upload.compareTo(c2.date_upload) }
             else -> throw NotImplementedError("Unknown sorting method")
         }
 
@@ -117,6 +118,12 @@ class HistoryPresenter : BasePresenter<HistoryController>() {
                             it.chapter_number <= chapterNumber + 1
                     }
             }
+            Manga.SORTING_UPLOAD_DATE -> {
+                val dateUpload = chapter.date_upload
+                ((currChapterIndex + 1) until chapters.size)
+                    .map { chapters[it] }
+                    .firstOrNull { it.date_upload > dateUpload }
+            }
             else -> throw NotImplementedError("Unknown sorting method")
         }
     }