From 906225293977b7f1c74715d8abd7d9392702527a Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Mon, 29 Sep 2025 17:24:26 +0200 Subject: [PATCH] Fix/server config duplicated types (#1672) * Move "serverConfig" to "server-config" module * Remove duplicated types Unintentionally introduced with 8ef2877040349531328b46fa8911fa580e9924e2 --- server/server-config/build.gradle.kts | 6 ++ .../tachidesk/graphql/types/WebUITypes.kt | 23 +++++-- .../impl/extension/ExtensionConstants.kt | 12 ++-- .../suwayomi/tachidesk/server/ServerConfig.kt | 5 +- .../graphql/types/WebUIUpdateType.kt | 60 ------------------- .../BackupSettingsDownloadConversionType.kt | 12 ---- .../manga/impl/extension/ExtensionsList.kt | 6 -- .../suwayomi/tachidesk/server/ServerSetup.kt | 3 - 8 files changed, 34 insertions(+), 93 deletions(-) delete mode 100644 server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/models/BackupSettingsDownloadConversionType.kt diff --git a/server/server-config/build.gradle.kts b/server/server-config/build.gradle.kts index 24fc8901..bbd67dff 100644 --- a/server/server-config/build.gradle.kts +++ b/server/server-config/build.gradle.kts @@ -4,6 +4,12 @@ plugins { .get() .pluginId, ) + id( + libs.plugins.kotlin.serialization + .get() + .pluginId, + ) + } dependencies { diff --git a/server/server-config/src/main/kotlin/suwayomi/tachidesk/graphql/types/WebUITypes.kt b/server/server-config/src/main/kotlin/suwayomi/tachidesk/graphql/types/WebUITypes.kt index c57aab63..24621790 100644 --- a/server/server-config/src/main/kotlin/suwayomi/tachidesk/graphql/types/WebUITypes.kt +++ b/server/server-config/src/main/kotlin/suwayomi/tachidesk/graphql/types/WebUITypes.kt @@ -1,5 +1,7 @@ package suwayomi.tachidesk.graphql.types +import suwayomi.tachidesk.server.serverConfig + enum class WebUIInterface { BROWSER, ELECTRON, @@ -30,17 +32,30 @@ enum class WebUIFlavor( "https://api.github.com/repos/Suwayomi/Suwayomi-WebUI-preview/releases/latest", "Suwayomi-WebUI", ), + VUI( "VUI", "https://github.com/Suwayomi/Suwayomi-VUI", - "https://raw.githubusercontent.com/Suwayomi/Suwayomi-VUI/master/versionToServerVersionMapping.json", + "https://raw.githubusercontent.com/Suwayomi/Suwayomi-VUI/main/versionToServerVersionMapping.json", "https://api.github.com/repos/Suwayomi/Suwayomi-VUI/releases/latest", - "Suwayomi-VUI", + "Suwayomi-VUI-Web", + ), + + CUSTOM( + "Custom", + "repoURL", + "versionMappingUrl", + "latestReleaseInfoURL", + "baseFileName", ), - CUSTOM("Custom", "", "", "", ""), ; companion object { - fun from(flavor: String): WebUIFlavor = entries.find { it.name.lowercase() == flavor.lowercase() } ?: WEBUI + val default: WebUIFlavor = WEBUI + + fun from(value: String): WebUIFlavor = entries.find { it.uiName == value } ?: default + + val current: WebUIFlavor + get() = serverConfig.webUIFlavor.value } } diff --git a/server/server-config/src/main/kotlin/suwayomi/tachidesk/manga/impl/extension/ExtensionConstants.kt b/server/server-config/src/main/kotlin/suwayomi/tachidesk/manga/impl/extension/ExtensionConstants.kt index 2b4b7394..e936941f 100644 --- a/server/server-config/src/main/kotlin/suwayomi/tachidesk/manga/impl/extension/ExtensionConstants.kt +++ b/server/server-config/src/main/kotlin/suwayomi/tachidesk/manga/impl/extension/ExtensionConstants.kt @@ -1,9 +1,7 @@ package suwayomi.tachidesk.manga.impl.extension -object ExtensionsList { - val repoMatchRegex = - ( - "https:\\/\\/(?>www\\.|raw\\.)?(github|githubusercontent)\\.com" + - "\\/([^\\/]+)\\/([^\\/]+)(?>(?>\\/tree|\\/blob)?\\/([^\\/\\n]*))?(?>\\/([^\\/\\n]*\\.json)?)?" - ).toRegex() -} \ No newline at end of file +val repoMatchRegex = + ( + "https:\\/\\/(?>www\\.|raw\\.)?(github|githubusercontent)\\.com" + + "\\/([^\\/]+)\\/([^\\/]+)(?>(?>\\/tree|\\/blob)?\\/([^\\/\\n]*))?(?>\\/([^\\/\\n]*\\.json)?)?" + ).toRegex() diff --git a/server/server-config/src/main/kotlin/suwayomi/tachidesk/server/ServerConfig.kt b/server/server-config/src/main/kotlin/suwayomi/tachidesk/server/ServerConfig.kt index a56e53f4..19399983 100644 --- a/server/server-config/src/main/kotlin/suwayomi/tachidesk/server/ServerConfig.kt +++ b/server/server-config/src/main/kotlin/suwayomi/tachidesk/server/ServerConfig.kt @@ -35,7 +35,7 @@ import suwayomi.tachidesk.graphql.types.WebUIChannel import suwayomi.tachidesk.graphql.types.WebUIFlavor import suwayomi.tachidesk.graphql.types.WebUIInterface import suwayomi.tachidesk.manga.impl.backup.proto.models.BackupSettingsDownloadConversionType -import suwayomi.tachidesk.manga.impl.extension.ExtensionsList.repoMatchRegex +import suwayomi.tachidesk.manga.impl.extension.repoMatchRegex import suwayomi.tachidesk.server.settings.BooleanSetting import suwayomi.tachidesk.server.settings.DisableableDoubleSetting import suwayomi.tachidesk.server.settings.DisableableIntSetting @@ -50,6 +50,7 @@ import suwayomi.tachidesk.server.settings.PathSetting import suwayomi.tachidesk.server.settings.SettingGroup import suwayomi.tachidesk.server.settings.SettingsRegistry import suwayomi.tachidesk.server.settings.StringSetting +import xyz.nulldev.ts.config.GlobalConfigManager import xyz.nulldev.ts.config.SystemPropertyOverridableConfigModule import kotlin.collections.associate import kotlin.time.Duration @@ -62,6 +63,8 @@ val mutableConfigValueScope = CoroutineScope(SupervisorJob() + Dispatchers.Defau const val SERVER_CONFIG_MODULE_NAME = "server" +val serverConfig: ServerConfig by lazy { GlobalConfigManager.module() } + // Settings are ordered by "protoNumber". class ServerConfig( getConfig: () -> Config, diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/WebUIUpdateType.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/WebUIUpdateType.kt index 2378cfa0..309cac9f 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/WebUIUpdateType.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/WebUIUpdateType.kt @@ -1,7 +1,5 @@ package suwayomi.tachidesk.graphql.types -import suwayomi.tachidesk.server.serverConfig - data class AboutWebUI( val channel: WebUIChannel, val tag: String, @@ -30,61 +28,3 @@ data class WebUIUpdateStatus( val state: UpdateState, val progress: Int, ) - -enum class WebUIInterface { - BROWSER, - ELECTRON, -} - -enum class WebUIChannel { - BUNDLED, // the default webUI version bundled with the server release - STABLE, - PREVIEW, - ; - - companion object { - fun from(channel: String): WebUIChannel = entries.find { it.name.lowercase() == channel.lowercase() } ?: STABLE - } -} - -enum class WebUIFlavor( - val uiName: String, - val repoUrl: String, - val versionMappingUrl: String, - val latestReleaseInfoUrl: String, - val baseFileName: String, -) { - WEBUI( - "WebUI", - "https://github.com/Suwayomi/Suwayomi-WebUI-preview", - "https://raw.githubusercontent.com/Suwayomi/Suwayomi-WebUI/master/versionToServerVersionMapping.json", - "https://api.github.com/repos/Suwayomi/Suwayomi-WebUI-preview/releases/latest", - "Suwayomi-WebUI", - ), - - VUI( - "VUI", - "https://github.com/Suwayomi/Suwayomi-VUI", - "https://raw.githubusercontent.com/Suwayomi/Suwayomi-VUI/main/versionToServerVersionMapping.json", - "https://api.github.com/repos/Suwayomi/Suwayomi-VUI/releases/latest", - "Suwayomi-VUI-Web", - ), - - CUSTOM( - "Custom", - "repoURL", - "versionMappingUrl", - "latestReleaseInfoURL", - "baseFileName", - ), - ; - - companion object { - val default: WebUIFlavor = WEBUI - - fun from(value: String): WebUIFlavor = entries.find { it.uiName == value } ?: default - - val current: WebUIFlavor - get() = serverConfig.webUIFlavor.value - } -} diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/models/BackupSettingsDownloadConversionType.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/models/BackupSettingsDownloadConversionType.kt deleted file mode 100644 index c25aea92..00000000 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/models/BackupSettingsDownloadConversionType.kt +++ /dev/null @@ -1,12 +0,0 @@ -package suwayomi.tachidesk.manga.impl.backup.proto.models - -import kotlinx.serialization.Serializable -import kotlinx.serialization.protobuf.ProtoNumber -import suwayomi.tachidesk.graphql.types.SettingsDownloadConversion - -@Serializable -class BackupSettingsDownloadConversionType( - @ProtoNumber(1) override val mimeType: String, - @ProtoNumber(2) override val target: String, - @ProtoNumber(3) override val compressionLevel: Double?, -) : SettingsDownloadConversion diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/extension/ExtensionsList.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/extension/ExtensionsList.kt index 219697bc..16742c72 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/extension/ExtensionsList.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/extension/ExtensionsList.kt @@ -223,10 +223,4 @@ object ExtensionsList { } else { this } - - val repoMatchRegex = - ( - "https:\\/\\/(?>www\\.|raw\\.)?(github|githubusercontent)\\.com" + - "\\/([^\\/]+)\\/([^\\/]+)(?>(?>\\/tree|\\/blob)?\\/([^\\/\\n]*))?(?>\\/([^\\/\\n]*\\.json)?)?" - ).toRegex() } diff --git a/server/src/main/kotlin/suwayomi/tachidesk/server/ServerSetup.kt b/server/src/main/kotlin/suwayomi/tachidesk/server/ServerSetup.kt index 1e159987..04b9e3aa 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/server/ServerSetup.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/server/ServerSetup.kt @@ -19,7 +19,6 @@ import eu.kanade.tachiyomi.App import eu.kanade.tachiyomi.createAppModule import eu.kanade.tachiyomi.network.NetworkHelper import eu.kanade.tachiyomi.source.local.LocalSource -import io.github.config4k.getValue import io.github.config4k.toConfig import io.github.oshai.kotlinlogging.KotlinLogging import io.javalin.json.JavalinJackson @@ -125,8 +124,6 @@ data class DatabaseSettings( val databasePassword: String, ) -val serverConfig: ServerConfig by lazy { GlobalConfigManager.module() } - val androidCompat by lazy { AndroidCompat() } fun setupLogLevelUpdating(