diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/model/SortOrder.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/model/SortOrder.kt index 7ef35ddd..9d743ae2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/model/SortOrder.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/model/SortOrder.kt @@ -2,9 +2,13 @@ package org.koitharu.kotatsu.parsers.model enum class SortOrder { UPDATED, + UPDATED_ASC, POPULARITY, + POPULARITY_ASC, RATING, + RATING_ASC, NEWEST, + NEWEST_ASC, ALPHABETICAL, - ALPHABETICAL_DESC + ALPHABETICAL_DESC, } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaDexParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaDexParser.kt index ff33c2f3..3f7980f2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaDexParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaDexParser.kt @@ -85,11 +85,15 @@ internal class MangaDexParser(context: MangaLoaderContext) : MangaParser(context append( when (filter.sortOrder) { SortOrder.UPDATED -> "[latestUploadedChapter]=desc" + SortOrder.UPDATED_ASC -> "[latestUploadedChapter]=asc" SortOrder.RATING -> "[rating]=desc" + SortOrder.RATING_ASC -> "[rating]=asc" SortOrder.ALPHABETICAL -> "[title]=asc" SortOrder.ALPHABETICAL_DESC -> "[title]=desc" SortOrder.NEWEST -> "[createdAt]=desc" + SortOrder.NEWEST_ASC -> "[createdAt]=asc" SortOrder.POPULARITY -> "[followedCount]=desc" + SortOrder.POPULARITY_ASC -> "[followedCount]=asc" }, ) filter.states.forEach { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Manhwa18Parser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Manhwa18Parser.kt index 1e43bce2..11ebaebe 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Manhwa18Parser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Manhwa18Parser.kt @@ -87,6 +87,7 @@ class Manhwa18Parser(context: MangaLoaderContext) : SortOrder.UPDATED -> "update" SortOrder.NEWEST -> "new" SortOrder.RATING -> "like" + else -> null }, ) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/es/TuMangaOnlineParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/es/TuMangaOnlineParser.kt index 013e73f1..7b3220fc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/es/TuMangaOnlineParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/es/TuMangaOnlineParser.kt @@ -57,11 +57,15 @@ class TuMangaOnlineParser(context: MangaLoaderContext) : PagedMangaParser( append( when (filter.sortOrder) { SortOrder.POPULARITY -> "likes_count&order_dir=desc" + SortOrder.POPULARITY_ASC -> "likes_count&order_dir=asc" SortOrder.UPDATED -> "release_date&order_dir=desc" + SortOrder.UPDATED_ASC -> "release_date&order_dir=asc" SortOrder.NEWEST -> "creation&order_dir=desc" + SortOrder.NEWEST_ASC -> "creation&order_dir=asc" SortOrder.ALPHABETICAL -> "alphabetically&order_dir=asc" SortOrder.ALPHABETICAL_DESC -> "alphabetically&order_dir=desc" SortOrder.RATING -> "score&order_dir=desc" + SortOrder.RATING_ASC -> "score&order_dir=asc" }, ) append("&filter_by=title") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/en/Manhwa18Com.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/en/Manhwa18Com.kt index d6044a8c..f8afd14f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/en/Manhwa18Com.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/en/Manhwa18Com.kt @@ -52,6 +52,7 @@ internal class Manhwa18Com(context: MangaLoaderContext) : SortOrder.UPDATED -> "update" SortOrder.NEWEST -> "new" SortOrder.RATING -> "like" + else -> null }, ) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/BentomangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/BentomangaParser.kt index 1d20bf56..eb14491d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/BentomangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/BentomangaParser.kt @@ -77,6 +77,9 @@ internal class BentomangaParser(context: MangaLoaderContext) : SortOrder.ALPHABETICAL_DESC -> url.addQueryParameter("order_by", "name") .addQueryParameter("order", "desc") + + else -> url.addQueryParameter("order_by", "update") + .addQueryParameter("order", "desc") } if (filter.tags.isNotEmpty()) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/MangaWtfParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/MangaWtfParser.kt index 27b1715f..dfbafffb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/MangaWtfParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/MangaWtfParser.kt @@ -69,6 +69,10 @@ class MangaWtfParser( SortOrder.NEWEST -> "createdAt,desc" SortOrder.ALPHABETICAL, SortOrder.ALPHABETICAL_DESC, + SortOrder.UPDATED_ASC, + SortOrder.POPULARITY_ASC, + SortOrder.RATING_ASC, + SortOrder.NEWEST_ASC, -> throw IllegalArgumentException("Unsupported ${filter.sortOrder}") }, ) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/rulib/LibSocialParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/rulib/LibSocialParser.kt index c4f3fe3e..579831a8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/rulib/LibSocialParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/rulib/LibSocialParser.kt @@ -21,7 +21,7 @@ internal abstract class LibSocialParser( protected val siteId: Int, ) : PagedMangaParser(context, source, pageSize = 60) { - override val availableSortOrders: Set = EnumSet.allOf(SortOrder::class.java) + override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED, SortOrder.POPULARITY, SortOrder.RATING, SortOrder.NEWEST, SortOrder.ALPHABETICAL, SortOrder.ALPHABETICAL_DESC) final override val configKeyDomain = ConfigKey.Domain("lib.social") override val availableStates: Set = EnumSet.allOf(MangaState::class.java) @@ -88,6 +88,7 @@ internal abstract class LibSocialParser( SortOrder.ALPHABETICAL, SortOrder.ALPHABETICAL_DESC, -> "rus_name" + else -> null }, ) urlBuilder.addQueryParameter( @@ -101,6 +102,7 @@ internal abstract class LibSocialParser( -> "desc" SortOrder.ALPHABETICAL -> "asc" + else -> null }, ) val json = webClient.httpGet(urlBuilder.build()).parseJson() diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenLL.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenLL.kt index eb551160..bb03d206 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenLL.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenLL.kt @@ -24,7 +24,7 @@ internal class NetTruyenLL(context: MangaLoaderContext) : override val listUrl = "/tim-kiem-nang-cao" override val availableStates: Set = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.PAUSED, MangaState.ABANDONED) - override val availableSortOrders: Set = EnumSet.allOf(SortOrder::class.java) + override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED, SortOrder.POPULARITY, SortOrder.RATING, SortOrder.NEWEST, SortOrder.ALPHABETICAL, SortOrder.ALPHABETICAL_DESC) override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { val response = @@ -93,6 +93,7 @@ internal class NetTruyenLL(context: MangaLoaderContext) : SortOrder.RATING -> "score" SortOrder.ALPHABETICAL -> "az" SortOrder.ALPHABETICAL_DESC -> "za" + else -> null }, ) } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenSSR.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenSSR.kt index 2ba18284..1748c1a8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenSSR.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenSSR.kt @@ -24,7 +24,7 @@ internal class NetTruyenSSR(context: MangaLoaderContext) : override val listUrl = "/tim-kiem-nang-cao" override val availableStates: Set = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.PAUSED, MangaState.ABANDONED) - override val availableSortOrders: Set = EnumSet.allOf(SortOrder::class.java) + override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED, SortOrder.POPULARITY, SortOrder.RATING, SortOrder.NEWEST, SortOrder.ALPHABETICAL, SortOrder.ALPHABETICAL_DESC) override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { val response = @@ -93,6 +93,7 @@ internal class NetTruyenSSR(context: MangaLoaderContext) : SortOrder.RATING -> "score" SortOrder.ALPHABETICAL -> "az" SortOrder.ALPHABETICAL_DESC -> "za" + else -> null }, ) } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/ZMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/ZMangaParser.kt index 681433cb..d2f72daf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/ZMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/ZMangaParser.kt @@ -26,7 +26,7 @@ internal abstract class ZMangaParser( keys.add(userAgentKey) } - override val availableSortOrders: Set = EnumSet.allOf(SortOrder::class.java) + override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED, SortOrder.POPULARITY, SortOrder.RATING, SortOrder.NEWEST, SortOrder.ALPHABETICAL, SortOrder.ALPHABETICAL_DESC) override val availableStates: Set = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED) @@ -80,6 +80,7 @@ internal abstract class ZMangaParser( SortOrder.ALPHABETICAL_DESC -> append("titlereverse") SortOrder.NEWEST -> append("latest") SortOrder.RATING -> append("rating") + else -> null } filter.tags.forEach {