Fixed latest version number check bug

This commit is contained in:
Nav
2022-09-18 18:16:52 +01:00
parent 294e49df08
commit 851a2b7cd7
4 changed files with 22 additions and 80 deletions

View File

@@ -27,7 +27,6 @@ target_sources(
${CMAKE_CURRENT_SOURCE_DIR}/InsightWorker/Tasks/SetTargetPinState.cpp ${CMAKE_CURRENT_SOURCE_DIR}/InsightWorker/Tasks/SetTargetPinState.cpp
${CMAKE_CURRENT_SOURCE_DIR}/InsightWorker/Tasks/ReadTargetMemory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/InsightWorker/Tasks/ReadTargetMemory.cpp
${CMAKE_CURRENT_SOURCE_DIR}/InsightWorker/Tasks/ReadStackPointer.cpp ${CMAKE_CURRENT_SOURCE_DIR}/InsightWorker/Tasks/ReadStackPointer.cpp
${CMAKE_CURRENT_SOURCE_DIR}/InsightWorker/Tasks/QueryLatestVersionNumber.cpp
${CMAKE_CURRENT_SOURCE_DIR}/InsightWorker/Tasks/ReadProgramCounter.cpp ${CMAKE_CURRENT_SOURCE_DIR}/InsightWorker/Tasks/ReadProgramCounter.cpp
${CMAKE_CURRENT_SOURCE_DIR}/InsightWorker/Tasks/GetTargetState.cpp ${CMAKE_CURRENT_SOURCE_DIR}/InsightWorker/Tasks/GetTargetState.cpp
${CMAKE_CURRENT_SOURCE_DIR}/InsightWorker/Tasks/GetTargetDescriptor.cpp ${CMAKE_CURRENT_SOURCE_DIR}/InsightWorker/Tasks/GetTargetDescriptor.cpp

View File

@@ -2,6 +2,12 @@
#include <QTimer> #include <QTimer>
#include <QFontDatabase> #include <QFontDatabase>
#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkReply>
#include <QUrl>
#include <QUrlQuery>
#include <QJsonDocument>
#include "src/Helpers/Paths.hpp" #include "src/Helpers/Paths.hpp"
#include "src/Logger/Logger.hpp" #include "src/Logger/Logger.hpp"
@@ -9,7 +15,6 @@
#include "src/Application.hpp" #include "src/Application.hpp"
#include "InsightWorker/Tasks/QueryLatestVersionNumber.hpp"
#include "InsightWorker/Tasks/GetTargetState.hpp" #include "InsightWorker/Tasks/GetTargetState.hpp"
#include "InsightWorker/Tasks/GetTargetDescriptor.hpp" #include "InsightWorker/Tasks/GetTargetDescriptor.hpp"
@@ -191,17 +196,12 @@ namespace Bloom
this->insightWorkersById[insightWorker->id] = std::pair(insightWorker, workerThread); this->insightWorkersById[insightWorker->id] = std::pair(insightWorker, workerThread);
// TODO: Remove this hack. Find a better way to trigger the latest version check.
if (i == 0) {
QObject::connect(insightWorker, &InsightWorker::ready, this, [this] {
this->checkBloomVersion();
});
}
Logger::debug("Starting InsightWorker" + std::to_string(insightWorker->id)); Logger::debug("Starting InsightWorker" + std::to_string(insightWorker->id));
workerThread->start(); workerThread->start();
} }
this->checkBloomVersion();
this->mainWindow->init(this->targetControllerConsole.getTargetDescriptor()); this->mainWindow->init(this->targetControllerConsole.getTargetDescriptor());
this->mainWindow->show(); this->mainWindow->show();
} }
@@ -231,17 +231,23 @@ namespace Bloom
} }
void Insight::checkBloomVersion() { void Insight::checkBloomVersion() {
auto currentVersionNumber = Application::VERSION; const auto currentVersionNumber = Application::VERSION;
auto* versionQueryTask = new QueryLatestVersionNumber( auto* networkAccessManager = new QNetworkAccessManager(this);
currentVersionNumber auto queryVersionEndpointUrl = QUrl(QString::fromStdString(Paths::homeDomainName() + "/latest-version"));
); queryVersionEndpointUrl.setScheme("http");
queryVersionEndpointUrl.setQuery(QUrlQuery({
{"currentVersionNumber", QString::fromStdString(currentVersionNumber.toString())}
}));
QObject::connect( QObject::connect(
versionQueryTask, networkAccessManager,
&QueryLatestVersionNumber::latestVersionNumberRetrieved, &QNetworkAccessManager::finished,
this, this,
[this, currentVersionNumber] (const VersionNumber& latestVersionNumber) { [this, currentVersionNumber] (QNetworkReply* response) {
const auto jsonResponseObject = QJsonDocument::fromJson(response->readAll()).object();
const auto latestVersionNumber = VersionNumber(jsonResponseObject.value("latestVersionNumber").toString());
if (latestVersionNumber > currentVersionNumber) { if (latestVersionNumber > currentVersionNumber) {
Logger::warning( Logger::warning(
"Bloom v" + latestVersionNumber.toString() "Bloom v" + latestVersionNumber.toString()
@@ -251,7 +257,7 @@ namespace Bloom
} }
); );
InsightWorker::queueTask(versionQueryTask); networkAccessManager->get(QNetworkRequest(queryVersionEndpointUrl));
} }
void Insight::onInsightWindowActivated() { void Insight::onInsightWindowActivated() {

View File

@@ -1,37 +0,0 @@
#include "QueryLatestVersionNumber.hpp"
#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkReply>
#include <QUrl>
#include <QUrlQuery>
#include <QJsonDocument>
#include "src/Helpers/Paths.hpp"
namespace Bloom
{
using TargetController::TargetControllerConsole;
void QueryLatestVersionNumber::run(TargetControllerConsole& targetControllerConsole) {
auto* networkAccessManager = new QNetworkAccessManager(this);
auto queryVersionEndpointUrl = QUrl(QString::fromStdString(Paths::homeDomainName() + "/latest-version"));
queryVersionEndpointUrl.setScheme("http");
queryVersionEndpointUrl.setQuery(QUrlQuery({
{"currentVersionNumber", QString::fromStdString(this->currentVersionNumber.toString())}
}));
auto* response = networkAccessManager->get(QNetworkRequest(queryVersionEndpointUrl));
QObject::connect(response, &QNetworkReply::finished, this, [this, response] {
const auto jsonResponseObject = QJsonDocument::fromJson(response->readAll()).object();
if (jsonResponseObject.contains("latestVersionNumber")) {
emit this->latestVersionNumberRetrieved(
VersionNumber(
jsonResponseObject.value("latestVersionNumber").toString()
)
);
}
});
}
}

View File

@@ -1,26 +0,0 @@
#pragma once
#include "InsightWorkerTask.hpp"
#include "src/VersionNumber.hpp"
namespace Bloom
{
class QueryLatestVersionNumber: public InsightWorkerTask
{
Q_OBJECT
public:
explicit QueryLatestVersionNumber(const VersionNumber& currentVersionNumber):
currentVersionNumber(currentVersionNumber) {}
signals:
void latestVersionNumberRetrieved(const VersionNumber& latestVersionNumber);
protected:
void run(TargetController::TargetControllerConsole& targetControllerConsole) override;
private:
VersionNumber currentVersionNumber;
};
}