From 17bc2d23318b6b92da23feaaa2b50b7badd9b828 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Tue, 31 Oct 2023 00:46:43 +0100 Subject: [PATCH] Fetch mangas during the update (#729) * Optionally fetch mangas during the update The update only fetched the chapter list of a manga but never the manga itself. Thus, e.g. unless the manga got online fetched via the ui, it would never get recognized if it is completed or not. This would e.g. prevent the update setting, to not update completed mangas, from working as intended * Make settings required --- .../tachidesk/graphql/mutations/SettingsMutation.kt | 1 + .../suwayomi/tachidesk/graphql/types/SettingsType.kt | 10 +++++++--- .../suwayomi/tachidesk/manga/impl/update/Updater.kt | 4 ++++ .../kotlin/suwayomi/tachidesk/server/ServerConfig.kt | 1 + server/src/main/resources/server-reference.conf | 1 + server/src/test/resources/server-reference.conf | 1 + 6 files changed, 15 insertions(+), 3 deletions(-) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/SettingsMutation.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/SettingsMutation.kt index 0017fd16..e56d45b6 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/SettingsMutation.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/SettingsMutation.kt @@ -63,6 +63,7 @@ class SettingsMutation { updateSetting(settings.excludeNotStarted, serverConfig.excludeNotStarted) updateSetting(settings.excludeCompleted, serverConfig.excludeCompleted) updateSetting(settings.globalUpdateInterval, serverConfig.globalUpdateInterval) + updateSetting(settings.updateMangas, serverConfig.updateMangas) // Authentication updateSetting(settings.basicAuthEnabled, serverConfig.basicAuthEnabled) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/SettingsType.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/SettingsType.kt index 3c866143..c848a1c0 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/SettingsType.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/SettingsType.kt @@ -48,6 +48,7 @@ interface Settings : Node { val excludeNotStarted: Boolean? val excludeCompleted: Boolean? val globalUpdateInterval: Double? + val updateMangas: Boolean? // Authentication val basicAuthEnabled: Boolean? @@ -96,6 +97,7 @@ data class PartialSettingsType( override val excludeNotStarted: Boolean?, override val excludeCompleted: Boolean?, override val globalUpdateInterval: Double?, + override val updateMangas: Boolean?, // Authentication override val basicAuthEnabled: Boolean?, override val basicAuthUsername: String?, @@ -131,8 +133,8 @@ class SettingsType( override val downloadAsCbz: Boolean, override val downloadsPath: String, override val autoDownloadNewChapters: Boolean, - override val excludeEntryWithUnreadChapters: Boolean?, - override val autoDownloadAheadLimit: Int?, + override val excludeEntryWithUnreadChapters: Boolean, + override val autoDownloadAheadLimit: Int, // requests override val maxSourcesInParallel: Int, // updater @@ -140,13 +142,14 @@ class SettingsType( override val excludeNotStarted: Boolean, override val excludeCompleted: Boolean, override val globalUpdateInterval: Double, + override val updateMangas: Boolean, // Authentication override val basicAuthEnabled: Boolean, override val basicAuthUsername: String, override val basicAuthPassword: String, // misc override val debugLogsEnabled: Boolean, - override val gqlDebugLogsEnabled: Boolean?, + override val gqlDebugLogsEnabled: Boolean, override val systemTrayEnabled: Boolean, // backup override val backupPath: String, @@ -183,6 +186,7 @@ class SettingsType( config.excludeNotStarted.value, config.excludeCompleted.value, config.globalUpdateInterval.value, + config.updateMangas.value, // Authentication config.basicAuthEnabled.value, config.basicAuthUsername.value, diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/update/Updater.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/update/Updater.kt index 32ec00a5..f591cb53 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/update/Updater.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/update/Updater.kt @@ -23,6 +23,7 @@ import mu.KotlinLogging import suwayomi.tachidesk.manga.impl.Category import suwayomi.tachidesk.manga.impl.CategoryManga import suwayomi.tachidesk.manga.impl.Chapter +import suwayomi.tachidesk.manga.impl.Manga import suwayomi.tachidesk.manga.model.dataclass.CategoryDataClass import suwayomi.tachidesk.manga.model.dataclass.IncludeInUpdate import suwayomi.tachidesk.manga.model.dataclass.MangaDataClass @@ -166,6 +167,9 @@ class Updater : IUpdater { tracker[job.manga.id] = try { logger.info { "Updating \"${job.manga.title}\" (source: ${job.manga.sourceId})" } + if (serverConfig.updateMangas.value) { + Manga.getManga(job.manga.id, true) + } Chapter.getChapterList(job.manga.id, true) job.copy(status = JobStatus.COMPLETE) } catch (e: Exception) { diff --git a/server/src/main/kotlin/suwayomi/tachidesk/server/ServerConfig.kt b/server/src/main/kotlin/suwayomi/tachidesk/server/ServerConfig.kt index 91e41feb..f1ae3d0a 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/server/ServerConfig.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/server/ServerConfig.kt @@ -92,6 +92,7 @@ class ServerConfig(getConfig: () -> Config, val moduleName: String = SERVER_CONF val excludeNotStarted: MutableStateFlow by OverrideConfigValue(BooleanConfigAdapter) val excludeCompleted: MutableStateFlow by OverrideConfigValue(BooleanConfigAdapter) val globalUpdateInterval: MutableStateFlow by OverrideConfigValue(DoubleConfigAdapter) + val updateMangas: MutableStateFlow by OverrideConfigValue(BooleanConfigAdapter) // Authentication val basicAuthEnabled: MutableStateFlow by OverrideConfigValue(BooleanConfigAdapter) diff --git a/server/src/main/resources/server-reference.conf b/server/src/main/resources/server-reference.conf index 46cfb0e9..49ef89ae 100644 --- a/server/src/main/resources/server-reference.conf +++ b/server/src/main/resources/server-reference.conf @@ -31,6 +31,7 @@ server.excludeUnreadChapters = true server.excludeNotStarted = true server.excludeCompleted = true server.globalUpdateInterval = 12 # time in hours - 0 to disable it - (doesn't have to be full hours e.g. 12.5) - range: 6 <= n < ∞ - default: 12 hours - interval in which the global update will be automatically triggered +server.updateMangas = false # if the mangas should be updated along with the chapter list during a library/category update # Authentication server.basicAuthEnabled = false diff --git a/server/src/test/resources/server-reference.conf b/server/src/test/resources/server-reference.conf index f524e773..028cd4d4 100644 --- a/server/src/test/resources/server-reference.conf +++ b/server/src/test/resources/server-reference.conf @@ -21,6 +21,7 @@ server.excludeUnreadChapters = true server.excludeNotStarted = true server.excludeCompleted = true server.globalUpdateInterval = 12 +server.updateMangas = false # misc server.debugLogsEnabled = true