From 03366ae7e5124b37ee3689f2936d651ff8fc9edb Mon Sep 17 00:00:00 2001 From: Riztard Lanthorn Date: Mon, 5 Apr 2021 04:18:28 +0700 Subject: [PATCH] add sort by date fetched in library (#4773) * add sort by date fetched in library * chapter fetch date to 8 (cherry picked from commit ddd4cc10ff12d2497a001821c678f2c1a90eef34) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySort.kt --- .../tachiyomi/data/database/queries/MangaQueries.kt | 10 ++++++++++ .../tachiyomi/data/database/queries/RawQueries.kt | 10 ++++++++++ .../kanade/tachiyomi/ui/library/LibraryPresenter.kt | 11 +++++++++++ .../tachiyomi/ui/library/LibrarySettingsSheet.kt | 6 +++++- .../eu/kanade/tachiyomi/ui/library/LibrarySort.kt | 1 + app/src/main/res/values/strings.xml | 1 + 6 files changed, 38 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt index 16f17ed82..2d543abea 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt @@ -227,6 +227,16 @@ interface MangaQueries : DbProvider { ) .prepare() + fun getChapterFetchDateManga() = db.get() + .listOfObjects(Manga::class.java) + .withQuery( + RawQuery.builder() + .query(getChapterFetchDateMangaQuery()) + .observesTables(MangaTable.TABLE) + .build() + ) + .prepare() + // SY --> fun getMangaWithMetadata() = db.get() .listOfObjects(Manga::class.java) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt index 81808b46e..3eaa654e9 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt @@ -222,6 +222,16 @@ fun getLatestChapterMangaQuery() = ORDER by max DESC """ +fun getChapterFetchDateMangaQuery() = + """ + SELECT ${Manga.TABLE}.*, MAX(${Chapter.TABLE}.${Chapter.COL_DATE_FETCH}) AS max + FROM ${Manga.TABLE} + JOIN ${Chapter.TABLE} + ON ${Manga.TABLE}.${Manga.COL_ID} = ${Chapter.TABLE}.${Chapter.COL_MANGA_ID} + GROUP BY ${Manga.TABLE}.${Manga.COL_ID} + ORDER by max DESC +""" + /** * Query to get the categories for a manga. */ 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 27a20284a..6fd58daf0 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt @@ -325,6 +325,10 @@ class LibraryPresenter( var counter = 0 db.getLatestChapterManga().executeAsBlocking().associate { it.id!! to counter++ } } + val chapterFetchDateManga by lazy { + var counter = 0 + db.getChapterFetchDateManga().executeAsBlocking().associate { it.id!! to counter++ } + } // SY --> val listOfTags by lazy { @@ -370,6 +374,13 @@ class LibraryPresenter( ?: latestChapterManga.size manga1latestChapter.compareTo(manga2latestChapter) } + LibrarySort.CHAPTER_FETCH_DATE -> { + val manga1chapterFetchDate = chapterFetchDateManga[i1.manga.id!!] + ?: chapterFetchDateManga.size + val manga2chapterFetchDate = chapterFetchDateManga[i2.manga.id!!] + ?: chapterFetchDateManga.size + manga1chapterFetchDate.compareTo(manga2chapterFetchDate) + } LibrarySort.DATE_ADDED -> i2.manga.date_added.compareTo(i1.manga.date_added) // SY --> LibrarySort.DRAG_AND_DROP -> { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt index cead6da46..04c31d58e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt @@ -190,6 +190,7 @@ class LibrarySettingsSheet( private val lastChecked = Item.MultiSort(R.string.action_sort_last_checked, this) private val unread = Item.MultiSort(R.string.action_filter_unread, this) private val latestChapter = Item.MultiSort(R.string.action_sort_latest_chapter, this) + private val chapterFetchDate = Item.MultiSort(R.string.action_sort_chapter_fetch_date, this) private val dateAdded = Item.MultiSort(R.string.action_sort_date_added, this) // SY --> @@ -200,7 +201,7 @@ class LibrarySettingsSheet( override val header = null override val items = - listOf(alphabetically, lastRead, lastChecked, unread, total, latestChapter, dateAdded /* SY --> */, dragAndDrop) + if (preferences.sortTagsForLibrary().get().isNotEmpty()) listOf(tagList) else emptyList() /* SY <-- */ + listOf(alphabetically, lastRead, lastChecked, unread, total, latestChapter, chapterFetchDate, dateAdded /* SY --> */, dragAndDrop) + if (preferences.sortTagsForLibrary().get().isNotEmpty()) listOf(tagList) else emptyList() /* SY <-- */ override val footer = null override fun initModels() { @@ -223,6 +224,8 @@ class LibrarySettingsSheet( if (sorting == LibrarySort.TOTAL) order else Item.MultiSort.SORT_NONE latestChapter.state = if (sorting == LibrarySort.LATEST_CHAPTER) order else Item.MultiSort.SORT_NONE + chapterFetchDate.state = + if (sorting == LibrarySort.CHAPTER_FETCH_DATE) order else Item.MultiSort.SORT_NONE dateAdded.state = if (sorting == LibrarySort.DATE_ADDED) order else Item.MultiSort.SORT_NONE // SY --> @@ -264,6 +267,7 @@ class LibrarySettingsSheet( unread -> LibrarySort.UNREAD total -> LibrarySort.TOTAL latestChapter -> LibrarySort.LATEST_CHAPTER + chapterFetchDate -> LibrarySort.CHAPTER_FETCH_DATE dateAdded -> LibrarySort.DATE_ADDED // SY --> dragAndDrop -> LibrarySort.DRAG_AND_DROP diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySort.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySort.kt index e99a8d651..d509fc596 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySort.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySort.kt @@ -8,6 +8,7 @@ object LibrarySort { const val UNREAD = 3 const val TOTAL = 4 const val LATEST_CHAPTER = 6 + const val CHAPTER_FETCH_DATE = 10 const val DATE_ADDED = 8 // SY --> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6f5b3a883..2d961f60d 100755 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -42,6 +42,7 @@ Last read Last checked Latest chapter + Date fetched Date added Search Search settings