From 8bdce956bf1d3b5fb847d4d503c17dd6cbc7ee8f Mon Sep 17 00:00:00 2001
From: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
Date: Fri, 7 Apr 2023 12:11:08 -0400
Subject: [PATCH] auto-updater(Windows): fix failed connection

Now that the settings are not loaded on start, the updatemanager signals need to be moved to the main window component.

Gitlab: #1056
Change-Id: I17e750ef1417e8bfca7d06976f14a1d75492cec5
---
 src/app/MainApplicationWindow.qml             | 66 +++++++++++++++++++
 .../components/UpdateSettingsPage.qml         | 61 ++++-------------
 src/app/updatemanager.cpp                     |  5 +-
 src/app/updatemanager.h                       |  3 +-
 4 files changed, 82 insertions(+), 53 deletions(-)

diff --git a/src/app/MainApplicationWindow.qml b/src/app/MainApplicationWindow.qml
index 46d995cd6..c141bb0ca 100644
--- a/src/app/MainApplicationWindow.qml
+++ b/src/app/MainApplicationWindow.qml
@@ -260,6 +260,72 @@ ApplicationWindow {
         }
     }
 
+    function presentUpdateInfoDialog(infoText) {
+        viewCoordinator.presentDialog(
+            appWindow,
+            "commoncomponents/SimpleMessageDialog.qml",
+            {
+                title: JamiStrings.updateDialogTitle,
+                infoText: infoText,
+                buttonTitles: [JamiStrings.optionOk],
+                buttonStyles: [SimpleMessageDialog.ButtonStyle.TintedBlue],
+                buttonCallBacks: []
+            })
+    }
+
+    Connections {
+        target: UpdateManager
+
+        function onUpdateDownloadStarted() {
+            viewCoordinator.presentDialog(
+                appWindow,
+                "settingsview/components/UpdateDownloadDialog.qml",
+                {title: JamiStrings.updateDialogTitle})
+        }
+
+        function onUpdateCheckReplyReceived(ok, found) {
+            if (!ok) {
+                presentUpdateInfoDialog(JamiStrings.updateCheckError)
+                return
+            }
+            if (!found) {
+                presentUpdateInfoDialog(JamiStrings.updateNotFound)
+            } else {
+                viewCoordinator.presentDialog(
+                    appWindow,
+                    "commoncomponents/SimpleMessageDialog.qml",
+                    {
+                        title: JamiStrings.updateDialogTitle,
+                        infoText: JamiStrings.updateFound,
+                        buttonTitles: [JamiStrings.optionUpgrade, JamiStrings.optionLater],
+                        buttonStyles: [
+                            SimpleMessageDialog.ButtonStyle.TintedBlue,
+                            SimpleMessageDialog.ButtonStyle.TintedBlue
+                        ],
+                        buttonCallBacks: [function() {UpdateManager.applyUpdates()}]
+                    })
+            }
+        }
+
+        function onUpdateErrorOccurred(error) {
+            presentUpdateInfoDialog((function () {
+                switch(error){
+                case NetWorkManager.ACCESS_DENIED:
+                    return JamiStrings.genericError
+                case NetWorkManager.DISCONNECTED:
+                    return JamiStrings.networkDisconnected
+                case NetWorkManager.NETWORK_ERROR:
+                    return JamiStrings.updateNetworkError
+                case NetWorkManager.SSL_ERROR:
+                    return JamiStrings.updateSSLError
+                case NetWorkManager.CANCELED:
+                    return JamiStrings.updateDownloadCanceled
+                default: return {}
+                }
+            })())
+        }
+    }
+
     onClosing: root.close()
 
     Component.onCompleted: {
diff --git a/src/app/settingsview/components/UpdateSettingsPage.qml b/src/app/settingsview/components/UpdateSettingsPage.qml
index 35155d008..fa3ae6184 100644
--- a/src/app/settingsview/components/UpdateSettingsPage.qml
+++ b/src/app/settingsview/components/UpdateSettingsPage.qml
@@ -133,54 +133,19 @@ SettingsPageBase {
             toolTipText: JamiStrings.betaInstall
             text: JamiStrings.betaInstall
 
-            onClicked: presentConfirmInstallDialog(JamiStrings.confirmBeta, true)
-        }
-
-        Connections {
-            target: UpdateManager
-
-            function errorToString(error) {
-                switch(error){
-                case NetWorkManager.ACCESS_DENIED:
-                    return JamiStrings.genericError
-                case NetWorkManager.DISCONNECTED:
-                    return JamiStrings.networkDisconnected
-                case NetWorkManager.NETWORK_ERROR:
-                    return JamiStrings.updateNetworkError
-                case NetWorkManager.SSL_ERROR:
-                    return JamiStrings.updateSSLError
-                case NetWorkManager.CANCELED:
-                    return JamiStrings.updateDownloadCanceled
-                default: return {}
-                }
-            }
-
-            function onUpdateDownloadStarted() {
-                viewCoordinator.presentDialog(
-                            appWindow,
-                            "settingsview/components/UpdateDownloadDialog.qml",
-                            {title: JamiStrings.updateDialogTitle})
-            }
-
-            function onUpdateCheckReplyReceived(ok, found) {
-                if (!ok) {
-                    presentInfoDialog(JamiStrings.updateCheckError)
-                    return
-                }
-                if (!found) {
-                    presentInfoDialog(JamiStrings.updateNotFound)
-                } else {
-                    presentConfirmInstallDialog(JamiStrings.updateFound, false)
-                }
-            }
-
-            function onUpdateDownloadErrorOccurred(error) {
-                presentInfoDialog(errorToString(error))
-            }
-
-            function onUpdateCheckErrorOccurred(error) {
-                presentInfoDialog(errorToString(error))
-            }
+            onClicked: viewCoordinator.presentDialog(
+                       appWindow,
+                       "commoncomponents/SimpleMessageDialog.qml",
+                       {
+                           title: JamiStrings.updateDialogTitle,
+                           infoText: JamiStrings.confirmBeta,
+                           buttonTitles: [JamiStrings.optionUpgrade, JamiStrings.optionLater],
+                           buttonStyles: [
+                               SimpleMessageDialog.ButtonStyle.TintedBlue,
+                               SimpleMessageDialog.ButtonStyle.TintedBlue
+                           ],
+                           buttonCallBacks: [function() {UpdateManager.applyUpdates(true)}]
+                       })
         }
     }
 }
diff --git a/src/app/updatemanager.cpp b/src/app/updatemanager.cpp
index d81383ce7..652fbaca1 100644
--- a/src/app/updatemanager.cpp
+++ b/src/app/updatemanager.cpp
@@ -1,6 +1,5 @@
 /*
  * Copyright (C) 2020-2023 Savoir-faire Linux Inc.
- * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -63,7 +62,7 @@ struct UpdateManager::Impl : public QObject
             connect(&parent_,
                     &NetWorkManager::errorOccured,
                     &parent_,
-                    &UpdateManager::updateCheckErrorOccurred);
+                    &UpdateManager::updateErrorOccurred);
 
         cleanUpdateFiles();
         QUrl versionUrl {isBeta ? QUrl::fromUserInput(baseUrlString_ + betaVersionSubUrl)
@@ -95,7 +94,7 @@ struct UpdateManager::Impl : public QObject
         connect(&parent_,
                 &NetWorkManager::errorOccured,
                 &parent_,
-                &UpdateManager::updateDownloadErrorOccurred);
+                &UpdateManager::updateErrorOccurred);
         connect(&parent_, &NetWorkManager::statusChanged, this, [this](GetStatus status) {
             switch (status) {
             case GetStatus::STARTED:
diff --git a/src/app/updatemanager.h b/src/app/updatemanager.h
index 8e42328b6..ab4f19d12 100644
--- a/src/app/updatemanager.h
+++ b/src/app/updatemanager.h
@@ -46,10 +46,9 @@ public:
 
 Q_SIGNALS:
     void updateCheckReplyReceived(bool ok, bool found = false);
-    void updateCheckErrorOccurred(GetError error);
+    void updateErrorOccurred(const NetWorkManager::GetError& error);
     void updateDownloadStarted();
     void updateDownloadProgressChanged(qint64 bytesRead, qint64 totalBytes);
-    void updateDownloadErrorOccurred(GetError error);
     void updateDownloadFinished();
     void appCloseRequested();
 
-- 
GitLab