diff --git a/src/gui/updater/ocupdater.cpp b/src/gui/updater/ocupdater.cpp index 6c056024f..b44a0d18a 100644 --- a/src/gui/updater/ocupdater.cpp +++ b/src/gui/updater/ocupdater.cpp @@ -29,12 +29,12 @@ namespace OCC { -static const char updateAvailableC[] = "Updater/updateAvailable"; -static const char updateTargetVersionC[] = "Updater/updateTargetVersion"; -static const char updateTargetVersionStringC[] = "Updater/updateTargetVersionString"; -static const char seenVersionC[] = "Updater/seenVersion"; -static const char autoUpdateAttemptedC[] = "Updater/autoUpdateAttempted"; - +namespace { +const auto updateAvailableC = QStringLiteral("Updater/updateAvailable"); +const auto updateTargetVersionC = QStringLiteral("Updater/updateTargetVersion"); +const auto updateTargetVersionStringC = QStringLiteral("Updater/updateTargetVersionString"); +const auto autoUpdateAttemptedC = QStringLiteral("Updater/autoUpdateAttempted"); +} UpdaterScheduler::UpdaterScheduler(QObject *parent) : QObject(parent) @@ -259,6 +259,7 @@ bool OCUpdater::updateSucceeded() const void OCUpdater::slotVersionInfoArrived() { + qCDebug(lcUpdater) << "received a reply"; _timeoutWatchdog->stop(); auto *reply = qobject_cast(sender()); reply->deleteLater(); @@ -347,12 +348,9 @@ void NSISUpdater::versionInfoArrived(const UpdateInfo &info) ConfigFile cfg; QSettings settings(cfg.configFile(), QSettings::IniFormat); qint64 infoVersion = Helper::stringVersionToInt(info.version()); - auto seenString = settings.value(seenVersionC).toString(); - qint64 seenVersion = Helper::stringVersionToInt(seenString); qint64 currVersion = Helper::currentVersionToInt(); qCInfo(lcUpdater) << "Version info arrived:" << "Your version:" << currVersion - << "Skipped version:" << seenVersion << seenString << "Available version:" << infoVersion << info.version() << "Available version string:" << info.versionString() << "Web url:" << info.web() @@ -361,28 +359,32 @@ void NSISUpdater::versionInfoArrived(const UpdateInfo &info) { qCInfo(lcUpdater) << "No version information available at the moment"; setDownloadState(UpToDate); - } else if (infoVersion <= currVersion - || infoVersion <= seenVersion) { - qCInfo(lcUpdater) << "Client is on latest version!"; - setDownloadState(UpToDate); } else { - QString url = info.downloadUrl(); - if (url.isEmpty()) { - showNoUrlDialog(info); + const auto currentVer = Helper::currentVersionToInt(); + const auto remoteVer = Helper::stringVersionToInt(info.version()); + + if (info.version().isEmpty() || currentVer >= remoteVer) { + qCInfo(lcUpdater) << "Client is on latest version!"; + setDownloadState(UpToDate); } else { - _targetFile = cfg.configPath() + url.mid(url.lastIndexOf('/')+1); - if (QFile(_targetFile).exists()) { - setDownloadState(DownloadComplete); + const auto url = info.downloadUrl(); + if (url.isEmpty()) { + showNoUrlDialog(info); } else { - auto request = QNetworkRequest(QUrl(url)); - request.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy); - QNetworkReply *reply = qnam()->get(request); - connect(reply, &QIODevice::readyRead, this, &NSISUpdater::slotWriteFile); - connect(reply, &QNetworkReply::finished, this, &NSISUpdater::slotDownloadFinished); - setDownloadState(Downloading); - _file.reset(new QTemporaryFile); - _file->setAutoRemove(true); - _file->open(); + _targetFile = cfg.configPath() + url.mid(url.lastIndexOf('/')+1); + if (QFile(_targetFile).exists()) { + setDownloadState(DownloadComplete); + } else { + auto request = QNetworkRequest(QUrl(url)); + request.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy); + QNetworkReply *reply = qnam()->get(request); + connect(reply, &QIODevice::readyRead, this, &NSISUpdater::slotWriteFile); + connect(reply, &QNetworkReply::finished, this, &NSISUpdater::slotDownloadFinished); + setDownloadState(Downloading); + _file.reset(new QTemporaryFile); + _file->setAutoRemove(true); + _file->open(); + } } } } @@ -423,15 +425,12 @@ void NSISUpdater::showNoUrlDialog(const UpdateInfo &info) hlayout->addWidget(lbl); auto *bb = new QDialogButtonBox; - QPushButton *skip = bb->addButton(tr("Skip this version"), QDialogButtonBox::ResetRole); QPushButton *reject = bb->addButton(tr("Skip this time"), QDialogButtonBox::AcceptRole); QPushButton *getupdate = bb->addButton(tr("Get update"), QDialogButtonBox::AcceptRole); - connect(skip, &QAbstractButton::clicked, msgBox, &QDialog::reject); connect(reject, &QAbstractButton::clicked, msgBox, &QDialog::reject); connect(getupdate, &QAbstractButton::clicked, msgBox, &QDialog::accept); - connect(skip, &QAbstractButton::clicked, this, &NSISUpdater::slotSetSeenVersion); connect(getupdate, &QAbstractButton::clicked, this, &NSISUpdater::slotOpenUpdateUrl); layout->addWidget(bb); @@ -473,20 +472,14 @@ void NSISUpdater::showUpdateErrorDialog(const QString &targetVersion) hlayout->addWidget(lbl); auto bb = new QDialogButtonBox; - auto skip = bb->addButton(tr("Skip this version"), QDialogButtonBox::ResetRole); auto askagain = bb->addButton(tr("Ask again later"), QDialogButtonBox::ResetRole); auto retry = bb->addButton(tr("Restart and update"), QDialogButtonBox::AcceptRole); auto getupdate = bb->addButton(tr("Update manually"), QDialogButtonBox::AcceptRole); - connect(skip, &QAbstractButton::clicked, msgBox, &QDialog::reject); connect(askagain, &QAbstractButton::clicked, msgBox, &QDialog::reject); connect(retry, &QAbstractButton::clicked, msgBox, &QDialog::accept); connect(getupdate, &QAbstractButton::clicked, msgBox, &QDialog::accept); - connect(skip, &QAbstractButton::clicked, this, [this]() { - wipeUpdateData(); - slotSetSeenVersion(); - }); // askagain: do nothing connect(retry, &QAbstractButton::clicked, this, [this]() { slotStartInstaller(); @@ -531,13 +524,6 @@ bool NSISUpdater::handleStartup() return false; } -void NSISUpdater::slotSetSeenVersion() -{ - ConfigFile cfg; - QSettings settings(cfg.configFile(), QSettings::IniFormat); - settings.setValue(seenVersionC, updateInfo().version()); -} - //////////////////////////////////////////////////////////////////////// PassiveUpdateNotifier::PassiveUpdateNotifier(const QUrl &url) @@ -573,6 +559,7 @@ void PassiveUpdateNotifier::versionInfoArrived(const UpdateInfo &info) qCInfo(lcUpdater) << "Client is on latest version!"; setDownloadState(UpToDate); } else { + qCInfo(lcUpdater) << "Client is on older version. We will update!"; setDownloadState(UpdateOnlyAvailableThroughSystem); } } diff --git a/src/gui/updater/ocupdater.h b/src/gui/updater/ocupdater.h index f857bb832..1bbf8b859 100644 --- a/src/gui/updater/ocupdater.h +++ b/src/gui/updater/ocupdater.h @@ -156,7 +156,6 @@ public: explicit NSISUpdater(const QUrl &url); bool handleStartup() override; private slots: - void slotSetSeenVersion(); void slotDownloadFinished(); void slotWriteFile();