From b6a566d13ffe632715a81d609d7734d34be5a967 Mon Sep 17 00:00:00 2001
From: Ming Rui Zhang <mingrui.zhang@savoirfairelinux.com>
Date: Thu, 29 Jul 2021 16:55:02 -0400
Subject: [PATCH] wizardview: hide back button while waiting for account
 generations

Gitlab: #470

Change-Id: I79d1b5c77ae9e983e1c264532727616afb23f3ab
---
 .../components/ConnectToAccountManagerPage.qml    |  4 ++++
 .../components/ImportFromBackupPage.qml           |  4 ++++
 .../components/ImportFromDevicePage.qml           |  4 ++++
 tests/qml/src/tst_WizardView.qml                  | 15 +++++++++++++++
 4 files changed, 27 insertions(+)

diff --git a/src/wizardview/components/ConnectToAccountManagerPage.qml b/src/wizardview/components/ConnectToAccountManagerPage.qml
index d7dcd89e4..2eda7a3af 100644
--- a/src/wizardview/components/ConnectToAccountManagerPage.qml
+++ b/src/wizardview/components/ConnectToAccountManagerPage.qml
@@ -206,10 +206,14 @@ Rectangle {
     BackButton {
         id: backButton
 
+        objectName: "connectToAccountManagerPageBackButton"
+
         anchors.left: parent.left
         anchors.top: parent.top
         anchors.margins: 20
 
+        visible: !connectBtn.spinnerTriggered
+
         preferredSize: JamiTheme.wizardViewPageBackButtonSize
 
         onClicked: WizardViewStepModel.previousStep()
diff --git a/src/wizardview/components/ImportFromBackupPage.qml b/src/wizardview/components/ImportFromBackupPage.qml
index 6ff248bf0..7ffffb038 100644
--- a/src/wizardview/components/ImportFromBackupPage.qml
+++ b/src/wizardview/components/ImportFromBackupPage.qml
@@ -215,10 +215,14 @@ Rectangle {
     BackButton {
         id: backButton
 
+        objectName: "importFromBackupPageBackButton"
+
         anchors.left: parent.left
         anchors.top: parent.top
         anchors.margins: 20
 
+        visible: !connectBtn.spinnerTriggered
+
         preferredSize: JamiTheme.wizardViewPageBackButtonSize
 
         onClicked: WizardViewStepModel.previousStep()
diff --git a/src/wizardview/components/ImportFromDevicePage.qml b/src/wizardview/components/ImportFromDevicePage.qml
index c6feb9f31..b343aa3e9 100644
--- a/src/wizardview/components/ImportFromDevicePage.qml
+++ b/src/wizardview/components/ImportFromDevicePage.qml
@@ -178,10 +178,14 @@ Rectangle {
     BackButton {
         id: backButton
 
+        objectName: "importFromDevicePageBackButton"
+
         anchors.left: parent.left
         anchors.top: parent.top
         anchors.margins: 20
 
+        visible: !connectBtn.spinnerTriggered
+
         preferredSize: JamiTheme.wizardViewPageBackButtonSize
 
         onClicked: WizardViewStepModel.previousStep()
diff --git a/tests/qml/src/tst_WizardView.qml b/tests/qml/src/tst_WizardView.qml
index 75d2e5fe7..49ada23dd 100644
--- a/tests/qml/src/tst_WizardView.qml
+++ b/tests/qml/src/tst_WizardView.qml
@@ -35,6 +35,8 @@ WizardView {
         spyAccountConfigFinalized.clear()
         spyReportFailure.clear()
         spyCloseWizardView.clear()
+
+        spyBackButtonVisible.target = undefined
     }
 
     SignalSpy {
@@ -79,6 +81,12 @@ WizardView {
         signalName: "closeWizardView"
     }
 
+    SignalSpy {
+        id: spyBackButtonVisible
+
+        signalName: "visibleChanged"
+    }
+
     TestCase {
         name: "WelcomePage to different account creation page and return back"
         when: windowShown
@@ -484,6 +492,7 @@ WizardView {
             var passwordFromBackupEdit = findChild(importFromBackupPage, "passwordFromBackupEdit")
             var connectBtn = findChild(importFromBackupPage, "connectBtn")
             var errorLabel = findChild(importFromBackupPage, "errorLabel")
+            var backButton = findChild(importFromBackupPage, "importFromBackupPageBackButton")
 
             // WelcomePage initially
             compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
@@ -492,6 +501,9 @@ WizardView {
             // Go to importFromBackup page
             WizardViewStepModel.startAccountCreationFlow(
                         WizardViewStepModel.AccountCreationOption.ImportFromBackup)
+
+            spyBackButtonVisible.target = backButton
+
             compare(passwordFromBackupEdit.focus, true)
 
             var fileName = "gz_test.gz"
@@ -505,6 +517,9 @@ WizardView {
             connectBtn.clicked()
             spyReportFailure.wait()
             verify(spyReportFailure.count >= 1)
+            spyBackButtonVisible.wait()
+            verify(spyBackButtonVisible.count >= 2)
+            spyBackButtonVisible.clear()
 
             compare(importFromBackupPage.errorText, JamiStrings.errorCreateAccount)
             compare(errorLabel.visible, true)
-- 
GitLab