From 5e79809326be5c96a3da50085003de8a445de263 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Tue, 16 Jan 2024 15:05:54 +0200 Subject: [PATCH] Support reverse alphabetic order in history and favorties --- .../org/koitharu/kotatsu/favourites/data/FavouritesDao.kt | 1 + .../kotlin/org/koitharu/kotatsu/history/data/HistoryDao.kt | 1 + .../org/koitharu/kotatsu/history/ui/HistoryListViewModel.kt | 1 + .../kotlin/org/koitharu/kotatsu/list/domain/ListSortOrder.kt | 5 +++-- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/favourites/data/FavouritesDao.kt b/app/src/main/kotlin/org/koitharu/kotatsu/favourites/data/FavouritesDao.kt index ba4180e1e..c4d8e8ed4 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/favourites/data/FavouritesDao.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/favourites/data/FavouritesDao.kt @@ -175,6 +175,7 @@ abstract class FavouritesDao { ListSortOrder.RATING -> "manga.rating DESC" ListSortOrder.NEWEST -> "favourites.created_at DESC" ListSortOrder.ALPHABETIC -> "manga.title ASC" + ListSortOrder.ALPHABETIC_REVERSE -> "manga.title DESC" ListSortOrder.NEW_CHAPTERS -> "IFNULL((SELECT chapters_new FROM tracks WHERE tracks.manga_id = manga.manga_id), 0) DESC" ListSortOrder.UPDATED, // for legacy support ListSortOrder.PROGRESS -> "IFNULL((SELECT percent FROM history WHERE history.manga_id = manga.manga_id), 0) DESC" diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/history/data/HistoryDao.kt b/app/src/main/kotlin/org/koitharu/kotatsu/history/data/HistoryDao.kt index f6fdfad90..34314f881 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/history/data/HistoryDao.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/history/data/HistoryDao.kt @@ -39,6 +39,7 @@ abstract class HistoryDao { ListSortOrder.NEWEST -> "history.created_at DESC" ListSortOrder.PROGRESS -> "history.percent DESC" ListSortOrder.ALPHABETIC -> "manga.title" + ListSortOrder.ALPHABETIC_REVERSE -> "manga.title DESC" ListSortOrder.NEW_CHAPTERS -> "IFNULL((SELECT chapters_new FROM tracks WHERE tracks.manga_id = manga.manga_id), 0) DESC" else -> throw IllegalArgumentException("Sort order $order is not supported") } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/history/ui/HistoryListViewModel.kt b/app/src/main/kotlin/org/koitharu/kotatsu/history/ui/HistoryListViewModel.kt index 62f8ed2a2..d3e0561fc 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/history/ui/HistoryListViewModel.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/history/ui/HistoryListViewModel.kt @@ -184,6 +184,7 @@ class HistoryListViewModel @Inject constructor( ) ListSortOrder.ALPHABETIC, + ListSortOrder.ALPHABETIC_REVERSE, ListSortOrder.RELEVANCE, ListSortOrder.NEW_CHAPTERS, ListSortOrder.RATING -> null diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/list/domain/ListSortOrder.kt b/app/src/main/kotlin/org/koitharu/kotatsu/list/domain/ListSortOrder.kt index 932edd88f..8142a97eb 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/list/domain/ListSortOrder.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/list/domain/ListSortOrder.kt @@ -13,6 +13,7 @@ enum class ListSortOrder( NEWEST(R.string.order_added), PROGRESS(R.string.progress), ALPHABETIC(R.string.by_name), + ALPHABETIC_REVERSE(R.string.by_name_reverse), RATING(R.string.by_rating), RELEVANCE(R.string.by_relevance), NEW_CHAPTERS(R.string.new_chapters), @@ -22,8 +23,8 @@ enum class ListSortOrder( companion object { - val HISTORY: Set = EnumSet.of(UPDATED, NEWEST, PROGRESS, ALPHABETIC, NEW_CHAPTERS) - val FAVORITES: Set = EnumSet.of(ALPHABETIC, NEWEST, RATING, NEW_CHAPTERS, PROGRESS) + val HISTORY: Set = EnumSet.of(UPDATED, NEWEST, PROGRESS, ALPHABETIC, ALPHABETIC_REVERSE, NEW_CHAPTERS) + val FAVORITES: Set = EnumSet.of(ALPHABETIC, ALPHABETIC_REVERSE, NEWEST, RATING, NEW_CHAPTERS, PROGRESS) val SUGGESTIONS: Set = EnumSet.of(RELEVANCE) operator fun invoke(value: String, fallback: ListSortOrder) = entries.find(value) ?: fallback