diff options
author | Saturneric <[email protected]> | 2022-01-04 08:20:35 +0000 |
---|---|---|
committer | Saturneric <[email protected]> | 2022-01-04 08:20:35 +0000 |
commit | 14c5e000141360e19a067f0385dc43569fb73cc6 (patch) | |
tree | dc0ef189cf4e1b435536291d6730df35da892e16 /src | |
parent | <chore>(project): version 2.0.4-beta.1 (diff) | |
download | GpgFrontend-14c5e000141360e19a067f0385dc43569fb73cc6.tar.gz GpgFrontend-14c5e000141360e19a067f0385dc43569fb73cc6.zip |
<fix>(core): fix windows build problem
1.fix libintl_snprintf bugs.
2. improve VersionCheckThread.
Diffstat (limited to 'src')
-rw-r--r-- | src/GpgFrontend.h.in | 1 | ||||
-rw-r--r-- | src/ui/function/VersionCheckThread.cpp | 119 |
2 files changed, 59 insertions, 61 deletions
diff --git a/src/GpgFrontend.h.in b/src/GpgFrontend.h.in index 497db495..11934550 100644 --- a/src/GpgFrontend.h.in +++ b/src/GpgFrontend.h.in @@ -40,6 +40,7 @@ #include <clocale> #undef vsnprintf #undef sprintf +#undef snprintf #endif // logging diff --git a/src/ui/function/VersionCheckThread.cpp b/src/ui/function/VersionCheckThread.cpp index e038ab97..091f7cd2 100644 --- a/src/ui/function/VersionCheckThread.cpp +++ b/src/ui/function/VersionCheckThread.cpp @@ -36,77 +36,76 @@ void VersionCheckThread::run() { "." + std::to_string(VERSION_MINOR) + "." + std::to_string(VERSION_PATCH); - auto manager = new QNetworkAccessManager(nullptr); - - LOG(INFO) << "current version" << current_version; - - std::string latest_version_url = - "https://api.github.com/repos/saturneric/gpgfrontend/releases/latest"; - - std::string current_version_url = - "https://api.github.com/repos/saturneric/gpgfrontend/releases/tags/" + - current_version; - - QNetworkRequest latest_request, current_request; - latest_request.setUrl(QUrl(latest_version_url.c_str())); - current_request.setUrl(QUrl(current_version_url.c_str())); - auto reply = manager->get(latest_request); - while (reply->isRunning()) QApplication::processEvents(); - if (reply->error() != QNetworkReply::NoError) { - LOG(ERROR) << "network error"; - manager->deleteLater(); - return; - } - - latest_reply_bytes_ = reply->readAll(); - reply = manager->get(current_request); - while (reply->isRunning()) QApplication::processEvents(); - current_reply_bytes_ = reply->readAll(); - if (reply->error() != QNetworkReply::NoError) { - LOG(ERROR) << "network error"; - manager->deleteLater(); - return; - } - SoftwareVersion version; version.current_version = current_version; + auto manager = new QNetworkAccessManager(nullptr); + try { using namespace nlohmann; - auto latest_reply_json = - nlohmann::json::parse(latest_reply_bytes_.toStdString()); - auto current_reply_json = - nlohmann::json::parse(current_reply_bytes_.toStdString()); + LOG(INFO) << "current version" << current_version; - std::string latest_version = latest_reply_json["tag_name"]; + std::string latest_version_url = + "https://api.github.com/repos/saturneric/gpgfrontend/releases/latest"; - LOG(INFO) << "latest version from Github" << latest_version; + std::string current_version_url = + "https://api.github.com/repos/saturneric/gpgfrontend/releases/tags/" + + current_version; - QRegularExpression re(R"(^[vV](\d+\.)?(\d+\.)?(\*|\d+))"); - auto version_match = re.match(latest_version.c_str()); - if (version_match.hasMatch()) { - latest_version = version_match.captured(0).toStdString(); - LOG(INFO) << "latest version matched" << latest_version; + QNetworkRequest latest_request, current_request; + latest_request.setUrl(QUrl(latest_version_url.c_str())); + current_request.setUrl(QUrl(current_version_url.c_str())); + auto reply = manager->get(latest_request); + while (reply->isRunning()) QApplication::processEvents(); + if (reply->error() != QNetworkReply::NoError) { + LOG(ERROR) << "network error"; + version.latest_version = current_version; } else { - latest_version = current_version; - LOG(WARNING) << "latest version unknown"; + auto latest_reply_json = + nlohmann::json::parse(latest_reply_bytes_.toStdString()); + + std::string latest_version = latest_reply_json["tag_name"]; + + LOG(INFO) << "latest version from Github" << latest_version; + + QRegularExpression re(R"(^[vV](\d+\.)?(\d+\.)?(\*|\d+))"); + auto version_match = re.match(latest_version.c_str()); + if (version_match.hasMatch()) { + latest_version = version_match.captured(0).toStdString(); + LOG(INFO) << "latest version matched" << latest_version; + } else { + latest_version = current_version; + LOG(WARNING) << "latest version unknown"; + } + + bool prerelease = latest_reply_json["prerelease"], + draft = latest_reply_json["draft"]; + 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.publish_date = publish_date; + version.release_note = release_note; } - bool prerelease = latest_reply_json["prerelease"], - draft = latest_reply_json["draft"]; - 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.publish_date = publish_date; - version.release_note = release_note; - - bool current_prerelease = current_reply_json["prerelease"], - current_draft = current_reply_json["draft"]; - version.latest_prerelease = current_prerelease; - version.latest_draft = current_draft; + latest_reply_bytes_ = reply->readAll(); + reply = manager->get(current_request); + while (reply->isRunning()) QApplication::processEvents(); + current_reply_bytes_ = reply->readAll(); + if (reply->error() != QNetworkReply::NoError) { + LOG(ERROR) << "network error"; + manager->deleteLater(); + return; + } else { + 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; + } // loading done version.load_info_done = true; @@ -115,9 +114,7 @@ void VersionCheckThread::run() { LOG(INFO) << "error occurred"; version.load_info_done = false; } - manager->deleteLater(); - emit upgradeVersion(version); } |