aboutsummaryrefslogtreecommitdiffstats
path: root/src/module
diff options
context:
space:
mode:
Diffstat (limited to 'src/module')
-rw-r--r--src/module/integrated/version_checking_module/SoftwareVersion.cpp16
-rw-r--r--src/module/integrated/version_checking_module/SoftwareVersion.h24
-rw-r--r--src/module/integrated/version_checking_module/VersionCheckTask.cpp25
-rw-r--r--src/module/integrated/version_checking_module/VersionCheckingModule.cpp50
-rw-r--r--src/module/integrated/version_checking_module/VersionCheckingModule.h13
5 files changed, 94 insertions, 34 deletions
diff --git a/src/module/integrated/version_checking_module/SoftwareVersion.cpp b/src/module/integrated/version_checking_module/SoftwareVersion.cpp
index f77687d5..23b50dae 100644
--- a/src/module/integrated/version_checking_module/SoftwareVersion.cpp
+++ b/src/module/integrated/version_checking_module/SoftwareVersion.cpp
@@ -79,18 +79,20 @@ bool VersionCheckingModule::SoftwareVersion::NeedUpgrade() const {
current_version, latest_version,
version_compare(current_version, latest_version));
- MODULE_LOG_DEBUG("load done: {}, pre-release: {}, draft: {}", load_info_done,
- latest_prerelease, latest_draft);
- return load_info_done && !latest_prerelease && !latest_draft &&
+ MODULE_LOG_DEBUG("load done: {}, pre-release: {}, draft: {}", loading_done,
+ latest_prerelease_version_from_remote,
+ latest_draft_from_remote);
+ return loading_done && !latest_prerelease_version_from_remote &&
+ !latest_draft_from_remote &&
version_compare(current_version, latest_version) < 0;
}
-bool VersionCheckingModule::SoftwareVersion::VersionWithDrawn() const {
- return load_info_done && !current_version_found && current_prerelease &&
- !current_draft;
+bool VersionCheckingModule::SoftwareVersion::VersionWithdrawn() const {
+ return loading_done && !current_version_publish_in_remote &&
+ current_version_is_a_prerelease && !current_version_is_drafted;
}
bool VersionCheckingModule::SoftwareVersion::CurrentVersionReleased() const {
- return load_info_done && current_version_found;
+ return loading_done && current_version_publish_in_remote;
}
} // namespace GpgFrontend::Module::Integrated::VersionCheckingModule \ No newline at end of file
diff --git a/src/module/integrated/version_checking_module/SoftwareVersion.h b/src/module/integrated/version_checking_module/SoftwareVersion.h
index a95c8b20..513ab1b9 100644
--- a/src/module/integrated/version_checking_module/SoftwareVersion.h
+++ b/src/module/integrated/version_checking_module/SoftwareVersion.h
@@ -36,16 +36,16 @@ namespace GpgFrontend::Module::Integrated::VersionCheckingModule {
*
*/
struct SoftwareVersion {
- std::string latest_version; ///<
- std::string current_version; ///<
- bool latest_prerelease = false; ///<
- bool latest_draft = false; ///<
- bool current_prerelease = false; ///<
- bool current_draft = false; ///<
- bool load_info_done = false; ///<
- bool current_version_found = false; ///<
- std::string publish_date; ///<
- std::string release_note; ///<
+ std::string latest_version; ///<
+ std::string current_version; ///<
+ bool latest_prerelease_version_from_remote = false; ///<
+ bool latest_draft_from_remote = false; ///<
+ bool current_version_is_a_prerelease = false; ///<
+ bool current_version_is_drafted = false; ///<
+ bool loading_done = false; ///<
+ bool current_version_publish_in_remote = false; ///<
+ std::string publish_date; ///<
+ std::string release_note; ///<
/**
* @brief
@@ -53,7 +53,7 @@ struct SoftwareVersion {
* @return true
* @return false
*/
- [[nodiscard]] bool InfoValid() const { return load_info_done; }
+ [[nodiscard]] bool InfoValid() const { return loading_done; }
/**
* @brief
@@ -69,7 +69,7 @@ struct SoftwareVersion {
* @return true
* @return false
*/
- [[nodiscard]] bool VersionWithDrawn() const;
+ [[nodiscard]] bool VersionWithdrawn() const;
/**
* @brief
diff --git a/src/module/integrated/version_checking_module/VersionCheckTask.cpp b/src/module/integrated/version_checking_module/VersionCheckTask.cpp
index 163bae6f..c3b61339 100644
--- a/src/module/integrated/version_checking_module/VersionCheckTask.cpp
+++ b/src/module/integrated/version_checking_module/VersionCheckTask.cpp
@@ -62,7 +62,7 @@ void VersionCheckTask::Run() {
&VersionCheckTask::slot_parse_latest_version_info);
// loading done
- version_.load_info_done = true;
+ version_.loading_done = true;
} catch (...) {
MODULE_LOG_ERROR("unknown error occurred");
@@ -103,14 +103,14 @@ void VersionCheckTask::slot_parse_latest_version_info() {
std::string publish_date = latest_reply_json["published_at"];
std::string release_note = latest_reply_json["body"];
version_.latest_version = latest_version;
- version_.latest_prerelease = prerelease;
- version_.latest_draft = draft;
+ version_.latest_prerelease_version_from_remote = prerelease;
+ version_.latest_draft_from_remote = draft;
version_.publish_date = publish_date;
version_.release_note = release_note;
}
} catch (...) {
MODULE_LOG_ERROR("unknown error occurred");
- version_.load_info_done = false;
+ version_.loading_done = false;
}
if (latest_reply_ != nullptr) {
@@ -145,28 +145,27 @@ void VersionCheckTask::slot_parse_current_version_info() {
MODULE_LOG_ERROR(
"current version request network error, null reply object");
}
-
- version_.current_version_found = false;
- version_.load_info_done = false;
+ version_.current_version_publish_in_remote = false;
+ version_.loading_done = false;
} else {
- version_.current_version_found = true;
+ version_.current_version_publish_in_remote = true;
current_reply_bytes_ = current_reply_->readAll();
MODULE_LOG_DEBUG("current version: {}", current_reply_bytes_.size());
auto current_reply_json =
nlohmann::json::parse(current_reply_bytes_.toStdString());
bool current_prerelease = current_reply_json["prerelease"],
current_draft = current_reply_json["draft"];
- version_.latest_prerelease = current_prerelease;
- version_.latest_draft = current_draft;
- version_.load_info_done = true;
+ version_.latest_prerelease_version_from_remote = current_prerelease;
+ version_.latest_draft_from_remote = current_draft;
+ version_.loading_done = true;
}
} catch (...) {
MODULE_LOG_ERROR("unknown error occurred");
- version_.load_info_done = false;
+ version_.loading_done = false;
}
MODULE_LOG_DEBUG("current version parse done: {}",
- version_.current_version_found);
+ version_.current_version_publish_in_remote);
if (current_reply_ != nullptr) {
current_reply_->deleteLater();
diff --git a/src/module/integrated/version_checking_module/VersionCheckingModule.cpp b/src/module/integrated/version_checking_module/VersionCheckingModule.cpp
index 7ab02ef2..233b4225 100644
--- a/src/module/integrated/version_checking_module/VersionCheckingModule.cpp
+++ b/src/module/integrated/version_checking_module/VersionCheckingModule.cpp
@@ -28,14 +28,25 @@
#include "VersionCheckingModule.h"
+#include <qobject.h>
+
+#include "Log.h"
+#include "SoftwareVersion.h"
#include "VersionCheckTask.h"
+#include "core/module/Module.h"
+#include "core/module/ModuleManager.h"
namespace GpgFrontend::Module::Integrated::VersionCheckingModule {
VersionCheckingModule::VersionCheckingModule()
: Module("com.bktus.gpgfrontend.module.integrated.versionchecking", "1.0.0",
ModuleMetaData{{"description", "try to check gpgfrontend version"},
- {"author", "saturneric"}}) {}
+ {"author", "saturneric"}}) {
+ connect(this, &VersionCheckingModule::SignalVersionCheckDone, this,
+ &VersionCheckingModule::SlotVersionCheckDone);
+}
+
+VersionCheckingModule::~VersionCheckingModule() = default;
bool VersionCheckingModule::Register() {
MODULE_LOG_INFO("version checking module registering");
@@ -52,9 +63,44 @@ int VersionCheckingModule::Exec(EventRefrernce event) {
MODULE_LOG_INFO("version checking module executing, event id: {}",
event->GetIdentifier());
- getTaskRunner()->PostTask(new VersionCheckTask());
+ auto* task = new VersionCheckTask();
+ connect(task, &VersionCheckTask::SignalUpgradeVersion, this,
+ &VersionCheckingModule::SignalVersionCheckDone);
+ getTaskRunner()->PostTask(task);
return 0;
}
bool VersionCheckingModule::Deactive() { return true; }
+
+void VersionCheckingModule::SlotVersionCheckDone(SoftwareVersion version) {
+ MODULE_LOG_DEBUG("registering software information info to rt");
+ ModuleManager::GetInstance()->UpsertRTValue(GetModuleIdentifier(),
+ "version.current_version",
+ version.current_version);
+ ModuleManager::GetInstance()->UpsertRTValue(
+ GetModuleIdentifier(), "version.loading_done", version.loading_done);
+ ModuleManager::GetInstance()->UpsertRTValue(
+ GetModuleIdentifier(), "version.latest_version", version.latest_version);
+ ModuleManager::GetInstance()->UpsertRTValue(
+ GetModuleIdentifier(), "version.current_version_is_drafted",
+ version.current_version_is_drafted);
+ ModuleManager::GetInstance()->UpsertRTValue(
+ GetModuleIdentifier(), "version.current_version_is_a_prerelease",
+ version.current_version_is_a_prerelease);
+ ModuleManager::GetInstance()->UpsertRTValue(
+ GetModuleIdentifier(), "version.current_version_publish_in_remote",
+ version.current_version_publish_in_remote);
+ ModuleManager::GetInstance()->UpsertRTValue(
+ GetModuleIdentifier(), "version.latest_prerelease_version_from_remote",
+ version.latest_prerelease_version_from_remote);
+ ModuleManager::GetInstance()->UpsertRTValue(
+ GetModuleIdentifier(), "version.need_upgrade", version.NeedUpgrade());
+ ModuleManager::GetInstance()->UpsertRTValue(
+ GetModuleIdentifier(), "version.current_version_released",
+ version.CurrentVersionReleased());
+ ModuleManager::GetInstance()->UpsertRTValue(
+ GetModuleIdentifier(), "version.current_a_withdrawn_version",
+ version.VersionWithdrawn());
+ MODULE_LOG_DEBUG("register software information to rt done");
+}
} // namespace GpgFrontend::Module::Integrated::VersionCheckingModule
diff --git a/src/module/integrated/version_checking_module/VersionCheckingModule.h b/src/module/integrated/version_checking_module/VersionCheckingModule.h
index 83775541..53119529 100644
--- a/src/module/integrated/version_checking_module/VersionCheckingModule.h
+++ b/src/module/integrated/version_checking_module/VersionCheckingModule.h
@@ -30,14 +30,19 @@
#include <module/sdk/GpgFrontendModuleSDK.h>
+#include <memory>
+
#include "SoftwareVersion.h"
namespace GpgFrontend::Module::Integrated::VersionCheckingModule {
class GPGFRONTEND_MODULE_SDK_EXPORT VersionCheckingModule : public Module {
+ Q_OBJECT
public:
VersionCheckingModule();
+ ~VersionCheckingModule();
+
virtual bool Register() override;
virtual bool Active() override;
@@ -45,5 +50,13 @@ class GPGFRONTEND_MODULE_SDK_EXPORT VersionCheckingModule : public Module {
virtual int Exec(EventRefrernce) override;
virtual bool Deactive() override;
+
+ signals:
+
+ void SignalVersionCheckDone(SoftwareVersion);
+
+ public slots:
+
+ void SlotVersionCheckDone(SoftwareVersion);
};
} // namespace GpgFrontend::Module::Integrated::VersionCheckingModule