-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathupdatechecker.cpp
67 lines (56 loc) · 2.26 KB
/
updatechecker.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include "updatechecker.h"
#include <QDate>
#include <QDateTime>
#include <QJsonDocument>
#include <QJsonObject>
#include <QNetworkReply>
#include <QNetworkRequest>
#include <QVersionNumber>
#include <coreplugin/icore.h>
#include "cheatshconstants.h"
#include "settings.h"
using namespace Core;
namespace CheatSh {
namespace Internal {
UpdateChecker::UpdateChecker(Settings *settigns, QObject *parent) :
QObject(parent),
settings_(settigns),
network_manager_(std::make_unique<QNetworkAccessManager>(this))
{
connect(network_manager_.get(), &QNetworkAccessManager::finished, [this](QNetworkReply* reply){
QJsonDocument jsdoc = QJsonDocument::fromJson(reply->readAll());
reply->deleteLater();
if(jsdoc.isNull())
return;
settings_->last_check_date = QDate::currentDate();
QJsonObject jsobj = jsdoc.object();
const QLocale locale(ICore::userInterfaceLanguage());
QString version = jsobj.value("tag_name").toString();
QVersionNumber remote_version = QVersionNumber::fromString(version);
QVersionNumber local_version = QVersionNumber::fromString(GIT_VERSION);
// qDebug() << local_version << remote_version;
if(local_version >= remote_version)
return;
QString update_string = tr("<b>Cheat.sh plugin update avaliable.</b>"
"<br />New version: %1 from %2"
"<br />Description: <br />%3"
"<br /><br /><b><a href=\"%4\">Download here</a></b>")
.arg(version,
locale.toString(QDateTime::fromString(jsobj.value("published_at").toString(), Qt::ISODate), QLocale::ShortFormat),
jsobj.value("body").toString().replace('\n', "<br />"),
jsobj.value("html_url").toString());
emit updateAvaliable(update_string);
});
}
UpdateChecker::~UpdateChecker()
{
}
void UpdateChecker::checkUpdatesIfPossible()
{
if(settings_->check_updates &&
settings_->last_check_date.daysTo(QDate::currentDate()) >= CheatSh::Constants::UPDATE_INTERVAL ) {
network_manager_->get(QNetworkRequest(QUrl(CheatSh::Constants::UPDATES_URL)));
}
}
} // namespace Internal
} // namespace CheatSh