From 6376972130e6babb5b65e62634435ce07edbc4b8 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Wed, 10 Jan 2024 01:38:21 +0100 Subject: [PATCH] Remove caching of extensions for gql mutation (#806) The client should use the extension query to get "cached" extensions and the mutation to update the extensions --- .../manga/impl/extension/ExtensionsList.kt | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) 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 14fe11158c..a3d9985609 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 @@ -34,30 +34,35 @@ object ExtensionsList { var updateMap = ConcurrentHashMap() suspend fun fetchExtensions() { + // update if 60 seconds has passed or requested offline and database is empty + val extensions = + (listOf(ExtensionGithubApi.REPO_URL_PREFIX) + serverConfig.extensionRepos.value).map { repo -> + kotlin.runCatching { + ExtensionGithubApi.findExtensions(repo) + }.onFailure { + logger.warn(it) { + "Failed to fetch extensions for repo: $repo" + } + } + } + val foundExtensions = extensions.mapNotNull { it.getOrNull() }.flatten() + updateExtensionDatabase(foundExtensions) + } + + suspend fun fetchExtensionsCached() { // update if 60 seconds has passed or requested offline and database is empty if (lastUpdateCheck + 60.seconds.inWholeMilliseconds < System.currentTimeMillis()) { logger.debug("Getting extensions list from the internet") lastUpdateCheck = System.currentTimeMillis() - val extensions = - (listOf(ExtensionGithubApi.REPO_URL_PREFIX) + serverConfig.extensionRepos.value).map { repo -> - kotlin.runCatching { - ExtensionGithubApi.findExtensions(repo) - }.onFailure { - logger.warn(it) { - "Failed to fetch extensions for repo: $repo" - } - } - } - val foundExtensions = extensions.mapNotNull { it.getOrNull() }.flatten() - updateExtensionDatabase(foundExtensions) + fetchExtensions() } else { logger.debug("used cached extension list") } } suspend fun getExtensionList(): List { - fetchExtensions() + fetchExtensionsCached() return extensionTableAsDataClass() }