Add option to order history and favorites by new chapters

pull/362/merge
Koitharu 3 years ago
parent 97524d66f2
commit 35baf4b58d
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -16,8 +16,8 @@ android {
applicationId 'org.koitharu.kotatsu' applicationId 'org.koitharu.kotatsu'
minSdk = 21 minSdk = 21
targetSdk = 34 targetSdk = 34
versionCode = 584 versionCode = 585
versionName = '6.1.6' versionName = '6.2-a1'
generatedDensities = [] generatedDensities = []
testInstrumentationRunner "org.koitharu.kotatsu.HiltTestRunner" testInstrumentationRunner "org.koitharu.kotatsu.HiltTestRunner"
ksp { ksp {

@ -83,8 +83,9 @@ abstract class FavouritesDao {
@Language("RoomSql") @Language("RoomSql")
val query = SimpleSQLiteQuery( val query = SimpleSQLiteQuery(
"SELECT m.cover_url AS url, m.source AS source FROM favourites AS f LEFT JOIN manga AS m ON f.manga_id = m.manga_id " + "SELECT manga.cover_url AS url, manga.source AS source FROM favourites " +
"WHERE f.category_id = ? AND deleted_at = 0 ORDER BY $orderBy", "LEFT JOIN manga ON favourites.manga_id = manga.manga_id " +
"WHERE favourites.category_id = ? AND deleted_at = 0 ORDER BY $orderBy",
arrayOf<Any>(categoryId), arrayOf<Any>(categoryId),
) )
return findCoversImpl(query) return findCoversImpl(query)
@ -164,12 +165,10 @@ abstract class FavouritesDao {
protected abstract suspend fun setDeletedAtAll(categoryId: Long, deletedAt: Long) protected abstract suspend fun setDeletedAtAll(categoryId: Long, deletedAt: Long)
private fun getOrderBy(sortOrder: ListSortOrder) = when (sortOrder) { private fun getOrderBy(sortOrder: ListSortOrder) = when (sortOrder) {
ListSortOrder.RATING -> "rating DESC" ListSortOrder.RATING -> "manga.rating DESC"
ListSortOrder.NEWEST, ListSortOrder.NEWEST -> "favourites.created_at DESC"
ListSortOrder.UPDATED, ListSortOrder.ALPHABETIC -> "manga.title ASC"
-> "created_at DESC" ListSortOrder.NEW_CHAPTERS -> "(SELECT chapters_new FROM tracks WHERE tracks.manga_id = manga.manga_id) DESC"
ListSortOrder.ALPHABETIC -> "title ASC"
else -> throw IllegalArgumentException("Sort order $sortOrder is not supported") else -> throw IllegalArgumentException("Sort order $sortOrder is not supported")
} }
} }

@ -39,6 +39,7 @@ abstract class HistoryDao {
ListSortOrder.NEWEST -> "history.created_at DESC" ListSortOrder.NEWEST -> "history.created_at DESC"
ListSortOrder.PROGRESS -> "history.percent DESC" ListSortOrder.PROGRESS -> "history.percent DESC"
ListSortOrder.ALPHABETIC -> "manga.title" ListSortOrder.ALPHABETIC -> "manga.title"
ListSortOrder.NEW_CHAPTERS -> "(SELECT chapters_new FROM tracks WHERE tracks.manga_id = manga.manga_id) DESC"
else -> throw IllegalArgumentException("Sort order $order is not supported") else -> throw IllegalArgumentException("Sort order $order is not supported")
} }

@ -178,6 +178,7 @@ class HistoryListViewModel @Inject constructor(
ListSortOrder.ALPHABETIC, ListSortOrder.ALPHABETIC,
ListSortOrder.RELEVANCE, ListSortOrder.RELEVANCE,
ListSortOrder.NEW_CHAPTERS,
ListSortOrder.RATING -> null ListSortOrder.RATING -> null
} }

@ -15,15 +15,16 @@ enum class ListSortOrder(
ALPHABETIC(R.string.by_name), ALPHABETIC(R.string.by_name),
RATING(R.string.by_rating), RATING(R.string.by_rating),
RELEVANCE(R.string.by_relevance), RELEVANCE(R.string.by_relevance),
NEW_CHAPTERS(R.string.new_chapters),
; ;
fun isGroupingSupported() = this == UPDATED || this == NEWEST || this == PROGRESS fun isGroupingSupported() = this == UPDATED || this == NEWEST || this == PROGRESS
companion object { companion object {
val HISTORY = EnumSet.of(UPDATED, NEWEST, PROGRESS, ALPHABETIC) val HISTORY: Set<ListSortOrder> = EnumSet.of(UPDATED, NEWEST, PROGRESS, ALPHABETIC, NEW_CHAPTERS)
val FAVORITES = EnumSet.of(ALPHABETIC, NEWEST, RATING) val FAVORITES: Set<ListSortOrder> = EnumSet.of(ALPHABETIC, NEWEST, RATING, NEW_CHAPTERS)
val SUGGESTIONS = EnumSet.of(RELEVANCE) val SUGGESTIONS: Set<ListSortOrder> = EnumSet.of(RELEVANCE)
operator fun invoke(value: String, fallback: ListSortOrder) = entries.find(value) ?: fallback operator fun invoke(value: String, fallback: ListSortOrder) = entries.find(value) ?: fallback
} }

Loading…
Cancel
Save