From aeb71ea840ab394d6585cbb223e6ac183940bf1a Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Sat, 7 Oct 2023 19:32:02 +0200 Subject: [PATCH 1/4] Correctly check for none PREVIEW channel latest compatible version The only working channel was the PREVIEW channel, since any other channel would have fetched the actual version of the preview and used this as the potential latest compatible version. This was caused due to incorrectly checking if the preview version should be ignored. --- .../suwayomi/tachidesk/server/util/WebInterfaceManager.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/server/util/WebInterfaceManager.kt b/server/src/main/kotlin/suwayomi/tachidesk/server/util/WebInterfaceManager.kt index 480e6290e..12c61227f 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/server/util/WebInterfaceManager.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/server/util/WebInterfaceManager.kt @@ -479,11 +479,11 @@ object WebInterfaceManager { ?: throw Exception("Invalid mappingFile") val minServerVersionNumber = extractVersion(minServerVersionString) - val ignorePreviewVersion = - !WebUIChannel.doesConfigChannelEqual(WebUIChannel.PREVIEW) && webUIVersion == WEBUI_PREVIEW_VERSION - if (ignorePreviewVersion) { + if (!WebUIChannel.doesConfigChannelEqual(WebUIChannel.from(webUIVersion))) { continue - } else { + } + + if (webUIVersion == WEBUI_PREVIEW_VERSION) { webUIVersion = fetchPreviewVersion() } From 212fe2506009b5cebed40908754f2cefb8d55950 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Sat, 7 Oct 2023 19:49:09 +0200 Subject: [PATCH 2/4] Remove PREVIEW version constant --- .../suwayomi/tachidesk/server/util/WebInterfaceManager.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/server/util/WebInterfaceManager.kt b/server/src/main/kotlin/suwayomi/tachidesk/server/util/WebInterfaceManager.kt index 12c61227f..f20aa3ddb 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/server/util/WebInterfaceManager.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/server/util/WebInterfaceManager.kt @@ -121,7 +121,6 @@ object WebInterfaceManager { private val logger = KotlinLogging.logger {} private val scope = CoroutineScope(SupervisorJob() + Dispatchers.Default) - private const val WEBUI_PREVIEW_VERSION = "PREVIEW" private const val LAST_WEBUI_UPDATE_CHECK_KEY = "lastWebUIUpdateCheckKey" private val preferences = Preferences.userNodeForPackage(WebInterfaceManager::class.java) @@ -483,7 +482,7 @@ object WebInterfaceManager { continue } - if (webUIVersion == WEBUI_PREVIEW_VERSION) { + if (webUIVersion == WebUIChannel.PREVIEW.name) { webUIVersion = fetchPreviewVersion() } From 1456cc910697b25ba4e0c6ad7b54efa1b858b878 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Sat, 7 Oct 2023 21:04:02 +0200 Subject: [PATCH 3/4] Consider versions of different channels In case the current server version isn't compatible with the latest version of the selected webUI channel, versions of other channel should be considered depending on the selected channel. E.g. PREVIEW is the latest available version and thus, any version of another channel is also compatible with the PREVIEW channel --- .../suwayomi/tachidesk/server/util/WebInterfaceManager.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/server/util/WebInterfaceManager.kt b/server/src/main/kotlin/suwayomi/tachidesk/server/util/WebInterfaceManager.kt index f20aa3ddb..0ea823cd6 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/server/util/WebInterfaceManager.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/server/util/WebInterfaceManager.kt @@ -479,7 +479,12 @@ object WebInterfaceManager { val minServerVersionNumber = extractVersion(minServerVersionString) if (!WebUIChannel.doesConfigChannelEqual(WebUIChannel.from(webUIVersion))) { - continue + // allow only STABLE versions for STABLE channel + if (WebUIChannel.doesConfigChannelEqual(WebUIChannel.STABLE)) { + continue + } + + // allow all versions for PREVIEW channel } if (webUIVersion == WebUIChannel.PREVIEW.name) { From 1b9cdc22f827dd5c4cfc0182457156b75107fd41 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Sat, 7 Oct 2023 22:39:17 +0200 Subject: [PATCH 4/4] Restrict min compatible version to the bundled version The oldest compatible version for a server is the bundled version, thus, any version that is older than the bundled one should not be considered compatible --- .../suwayomi/tachidesk/server/util/WebInterfaceManager.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/server/util/WebInterfaceManager.kt b/server/src/main/kotlin/suwayomi/tachidesk/server/util/WebInterfaceManager.kt index 0ea823cd6..94eeea4b8 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/server/util/WebInterfaceManager.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/server/util/WebInterfaceManager.kt @@ -491,7 +491,11 @@ object WebInterfaceManager { webUIVersion = fetchPreviewVersion() } - val isCompatibleVersion = minServerVersionNumber <= currentServerVersionNumber + val isCompatibleVersion = + minServerVersionNumber <= currentServerVersionNumber && minServerVersionNumber >= + extractVersion( + BuildConfig.WEBUI_TAG, + ) if (isCompatibleVersion) { return webUIVersion }