Fixed latest version number check bug
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
@@ -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()
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user