From eea8e291d327baae30adbeefc5f2bb12e38b8689 Mon Sep 17 00:00:00 2001 From: Ming Rui Zhang <mingrui.zhang@savoirfairelinux.com> Date: Thu, 15 Oct 2020 13:17:08 -0400 Subject: [PATCH] update: improvement for update mechanism 1. Distinguish SSL error and network error 2. Cancel request when connectivity is changed 3. Cancel request when download box is closed Change-Id: I155ef5d97017c61d164f64ade513cfe37d5dc8bc --- src/constant/JamiStrings.qml | 3 ++- src/networkmanager.cpp | 7 +++++++ src/settingsview/components/UpdateSettings.qml | 7 ++++++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/constant/JamiStrings.qml b/src/constant/JamiStrings.qml index 1278f35c3..c21518ca4 100644 --- a/src/constant/JamiStrings.qml +++ b/src/constant/JamiStrings.qml @@ -282,7 +282,8 @@ Item { property string updateFound: qsTr("A new version of Jami was found\n Would you like to update now?") property string updateNotFound: qsTr("No new version of Jami was found") property string updateCheckError: qsTr("An error occured when checking for a new version") - property string updateDownloadNetworkError: qsTr("Installer download failed due to a network error") + property string updateNetworkError: qsTr("Network error") + property string updateSSLError: qsTr("SSL error") property string updateDownloadCanceled: qsTr("Installer download canceled") property string updateDownloading: "Downloading" property string confirmBeta: qsTr("This will uninstall your current Release version and you can always download the latest Release version on our website") diff --git a/src/networkmanager.cpp b/src/networkmanager.cpp index 9f4a3f733..7239d326e 100644 --- a/src/networkmanager.cpp +++ b/src/networkmanager.cpp @@ -30,9 +30,13 @@ NetWorkManager::NetWorkManager(ConnectivityMonitor* cm, QObject* parent) , manager_(new QNetworkAccessManager(this)) , reply_(nullptr) , connectivityMonitor_(cm) + , lastConnectionState_(cm->isOnline()) { emit statusChanged(GetStatus::IDLE); + connect(connectivityMonitor_, &ConnectivityMonitor::connectivityChanged, [this] { + cancelRequest(); + auto connected = connectivityMonitor_->isOnline(); if (connected && !lastConnectionState_) { manager_->deleteLater(); @@ -129,6 +133,9 @@ void NetWorkManager::onSslErrors(const QList<QSslError>& sslErrors) { #if QT_CONFIG(ssl) + reply_->disconnect(); + reset(true); + QString errorsString; for (const QSslError& error : sslErrors) { if (errorsString.length() > 0) { diff --git a/src/settingsview/components/UpdateSettings.qml b/src/settingsview/components/UpdateSettings.qml index 69f4282ce..b3d9c4a3c 100644 --- a/src/settingsview/components/UpdateSettings.qml +++ b/src/settingsview/components/UpdateSettings.qml @@ -121,8 +121,9 @@ ColumnLayout { case NetWorkManager.DISCONNECTED: return JamiStrings.networkDisconnected case NetWorkManager.NETWORK_ERROR: + return JamiStrings.updateNetworkError case NetWorkManager.SSL_ERROR: - return JamiStrings.updateDownloadNetworkError + return JamiStrings.updateSSLError case NetWorkManager.CANCELED: return JamiStrings.updateDownloadCanceled default: return {} @@ -248,5 +249,9 @@ ColumnLayout { buttonTitles: [JamiStrings.optionCancel] buttonStyles: [SimpleMessageDialog.ButtonStyle.TintedBlue] buttonCallBacks: [function() {UpdateManager.cancelUpdate()}] + onVisibilityChanged: { + if (!visible) + UpdateManager.cancelUpdate() + } } } -- GitLab