From a80f65439b60e6f49f15ebe6db253970321bf7d9 Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Tue, 26 Nov 2024 21:05:18 +0000 Subject: [PATCH] Do not inform of mod update if remote version is older than local --- launcher/modManager/modstate.cpp | 2 +- lib/modding/ModDescription.cpp | 14 ++++++++++++++ lib/modding/ModDescription.h | 1 + 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/launcher/modManager/modstate.cpp b/launcher/modManager/modstate.cpp index 7f1ec22d5..61b17b613 100644 --- a/launcher/modManager/modstate.cpp +++ b/launcher/modManager/modstate.cpp @@ -217,7 +217,7 @@ bool ModState::isInstalled() const bool ModState::isUpdateAvailable() const { - return getInstalledVersion() != getRepositoryVersion() && !getRepositoryVersion().isEmpty() && !getInstalledVersion().isEmpty(); + return impl.isUpdateAvailable(); } bool ModState::isCompatible() const diff --git a/lib/modding/ModDescription.cpp b/lib/modding/ModDescription.cpp index 32e035283..d27253ea3 100644 --- a/lib/modding/ModDescription.cpp +++ b/lib/modding/ModDescription.cpp @@ -216,4 +216,18 @@ bool ModDescription::affectsGameplay() const return false; } +bool ModDescription::isUpdateAvailable() const +{ + if (getRepositoryValue("version").isNull()) + return false; + + if (getLocalValue("version").isNull()) + return false; + + auto localVersion = CModVersion::fromString(getLocalValue("version").String()); + auto repositoryVersion = CModVersion::fromString(getRepositoryValue("version").String()); + + return localVersion < repositoryVersion; +} + VCMI_LIB_NAMESPACE_END diff --git a/lib/modding/ModDescription.h b/lib/modding/ModDescription.h index 0f7324a6a..225cf953e 100644 --- a/lib/modding/ModDescription.h +++ b/lib/modding/ModDescription.h @@ -58,6 +58,7 @@ public: ModVerificationInfo getVerificationInfo() const; bool isCompatible() const; + bool isUpdateAvailable() const; bool affectsGameplay() const; bool isCompatibility() const;