mirror of
https://github.com/Suwayomi/Suwayomi-Server.git
synced 2026-07-04 11:24:35 -05:00
Feat: Adds OPDS Chapter Filtering/Ordering (#1392)
* Adds server level configs for OPDS * PR comments * Refactor server-reference.conf (itemsPerPage range) * Coerce itemsPerPage (10, 5000) and default invalid sort orders to DESC * Coerce itemsPerPage (10, 5000) and default invalid sort orders to DESC * Change opdsChapterSortOrder type to Enum(SortOrder) * Fix serialization of SortOrderEnum & Add `opdsShowOnlyDownloadedChapters` config
This commit is contained in:
@@ -94,6 +94,9 @@ class SettingsMutation {
|
||||
|
||||
// local source
|
||||
validateFilePath(settings.localSourcePath, "localSourcePath")
|
||||
|
||||
// opds
|
||||
validateValue(settings.opdsItemsPerPage, "opdsItemsPerPage") { it in 10..5000 }
|
||||
}
|
||||
|
||||
private fun <SettingType : Any> updateSetting(
|
||||
@@ -177,6 +180,14 @@ class SettingsMutation {
|
||||
updateSetting(settings.flareSolverrSessionName, serverConfig.flareSolverrSessionName)
|
||||
updateSetting(settings.flareSolverrSessionTtl, serverConfig.flareSolverrSessionTtl)
|
||||
updateSetting(settings.flareSolverrAsResponseFallback, serverConfig.flareSolverrAsResponseFallback)
|
||||
|
||||
// opds
|
||||
updateSetting(settings.opdsItemsPerPage, serverConfig.opdsItemsPerPage)
|
||||
updateSetting(settings.opdsEnablePageReadProgress, serverConfig.opdsEnablePageReadProgress)
|
||||
updateSetting(settings.opdsMarkAsReadOnDownload, serverConfig.opdsMarkAsReadOnDownload)
|
||||
updateSetting(settings.opdsShowOnlyUnreadChapters, serverConfig.opdsShowOnlyUnreadChapters)
|
||||
updateSetting(settings.opdsShowOnlyDownloadedChapters, serverConfig.opdsShowOnlyDownloadedChapters)
|
||||
updateSetting(settings.opdsChapterSortOrder, serverConfig.opdsChapterSortOrder)
|
||||
}
|
||||
|
||||
fun setSettings(input: SetSettingsInput): SetSettingsPayload {
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
package suwayomi.tachidesk.graphql.types
|
||||
|
||||
import com.expediagroup.graphql.generator.annotations.GraphQLDeprecated
|
||||
import org.jetbrains.exposed.sql.SortOrder
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Node
|
||||
import suwayomi.tachidesk.server.ServerConfig
|
||||
import suwayomi.tachidesk.server.serverConfig
|
||||
@@ -92,6 +93,14 @@ interface Settings : Node {
|
||||
val flareSolverrSessionName: String?
|
||||
val flareSolverrSessionTtl: Int?
|
||||
val flareSolverrAsResponseFallback: Boolean?
|
||||
|
||||
// opds
|
||||
val opdsItemsPerPage: Int?
|
||||
val opdsEnablePageReadProgress: Boolean?
|
||||
val opdsMarkAsReadOnDownload: Boolean?
|
||||
val opdsShowOnlyUnreadChapters: Boolean?
|
||||
val opdsShowOnlyDownloadedChapters: Boolean?
|
||||
val opdsChapterSortOrder: SortOrder?
|
||||
}
|
||||
|
||||
data class PartialSettingsType(
|
||||
@@ -159,6 +168,13 @@ data class PartialSettingsType(
|
||||
override val flareSolverrSessionName: String?,
|
||||
override val flareSolverrSessionTtl: Int?,
|
||||
override val flareSolverrAsResponseFallback: Boolean?,
|
||||
// opds
|
||||
override val opdsItemsPerPage: Int?,
|
||||
override val opdsEnablePageReadProgress: Boolean?,
|
||||
override val opdsMarkAsReadOnDownload: Boolean?,
|
||||
override val opdsShowOnlyUnreadChapters: Boolean?,
|
||||
override val opdsShowOnlyDownloadedChapters: Boolean?,
|
||||
override val opdsChapterSortOrder: SortOrder?,
|
||||
) : Settings
|
||||
|
||||
class SettingsType(
|
||||
@@ -226,6 +242,13 @@ class SettingsType(
|
||||
override val flareSolverrSessionName: String,
|
||||
override val flareSolverrSessionTtl: Int,
|
||||
override val flareSolverrAsResponseFallback: Boolean,
|
||||
// opds
|
||||
override val opdsItemsPerPage: Int,
|
||||
override val opdsEnablePageReadProgress: Boolean,
|
||||
override val opdsMarkAsReadOnDownload: Boolean,
|
||||
override val opdsShowOnlyUnreadChapters: Boolean,
|
||||
override val opdsShowOnlyDownloadedChapters: Boolean,
|
||||
override val opdsChapterSortOrder: SortOrder,
|
||||
) : Settings {
|
||||
constructor(config: ServerConfig = serverConfig) : this(
|
||||
config.ip.value,
|
||||
@@ -287,5 +310,12 @@ class SettingsType(
|
||||
config.flareSolverrSessionName.value,
|
||||
config.flareSolverrSessionTtl.value,
|
||||
config.flareSolverrAsResponseFallback.value,
|
||||
// opds
|
||||
config.opdsItemsPerPage.value,
|
||||
config.opdsEnablePageReadProgress.value,
|
||||
config.opdsMarkAsReadOnDownload.value,
|
||||
config.opdsShowOnlyUnreadChapters.value,
|
||||
config.opdsShowOnlyDownloadedChapters.value,
|
||||
config.opdsChapterSortOrder.value,
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user