diff --git a/storybook/pages/OnboardingLayoutPage.qml b/storybook/pages/OnboardingLayoutPage.qml index 5a0336d33ee..8a160d680d0 100644 --- a/storybook/pages/OnboardingLayoutPage.qml +++ b/storybook/pages/OnboardingLayoutPage.qml @@ -5,6 +5,8 @@ import QtQuick.Window 2.15 import Qt.labs.settings 1.0 +import StatusQ 0.1 + import AppLayouts.Onboarding.enums 1.0 import AppLayouts.Onboarding2 1.0 import AppLayouts.Onboarding2.pages 1.0 diff --git a/ui/app/AppLayouts/Onboarding2/LoginWithKeycardFlow.qml b/ui/app/AppLayouts/Onboarding2/LoginWithKeycardFlow.qml index 5814659be88..c3ad00693e6 100644 --- a/ui/app/AppLayouts/Onboarding2/LoginWithKeycardFlow.qml +++ b/ui/app/AppLayouts/Onboarding2/LoginWithKeycardFlow.qml @@ -16,17 +16,15 @@ SQUtils.QObject { required property var tryToSetPinFunction required property int remainingPinAttempts required property int remainingPukAttempts - required property var isSeedPhraseValid required property int keycardPinInfoPageDelay property bool displayKeycardPromoBanner signal keycardPinEntered(string pin) - signal keycardPinCreated(string pin) - signal seedphraseSubmitted(string seedphrase) signal reloadKeycardRequested signal keycardFactoryResetRequested + signal unblockWithSeedphraseRequested signal unblockWithPukRequested signal createProfileWithEmptyKeycardRequested signal finished @@ -66,7 +64,7 @@ SQUtils.QObject { onReloadKeycardRequested: d.reload() onKeycardFactoryResetRequested: root.keycardFactoryResetRequested() - onUnblockWithSeedphraseRequested: root.stackView.push(seedphrasePage) + onUnblockWithSeedphraseRequested: root.unblockWithSeedphraseRequested() onUnblockWithPukRequested: root.unblockWithPukRequested() onEmptyKeycardDetected: root.stackView.replace(keycardEmptyPage) onNotEmptyKeycardDetected: root.stackView.replace(keycardEnterPinPage) @@ -101,34 +99,7 @@ SQUtils.QObject { onReloadKeycardRequested: d.reload() onKeycardFactoryResetRequested: root.keycardFactoryResetRequested() - onUnblockWithSeedphraseRequested: root.stackView.push(seedphrasePage) - } - } - - Component { - id: seedphrasePage - - SeedphrasePage { - title: qsTr("Unblock Keycard using the recovery phrase") - btnContinueText: qsTr("Unblock Keycard") - isSeedPhraseValid: root.isSeedPhraseValid - onSeedphraseSubmitted: (seedphrase) => { - root.seedphraseSubmitted(seedphrase) - root.stackView.push(keycardCreatePinPage) - } - } - } - - Component { - id: keycardCreatePinPage - - KeycardCreatePinPage { - onKeycardPinCreated: (pin) => { - Backpressure.debounce(root, root.keycardPinInfoPageDelay, () => { - root.keycardPinCreated(pin) - root.finished() - })() - } + onUnblockWithSeedphraseRequested: root.unblockWithSeedphraseRequested() } } } diff --git a/ui/app/AppLayouts/Onboarding2/OnboardingFlow.qml b/ui/app/AppLayouts/Onboarding2/OnboardingFlow.qml index c44ad695fc0..194da8f52dc 100644 --- a/ui/app/AppLayouts/Onboarding2/OnboardingFlow.qml +++ b/ui/app/AppLayouts/Onboarding2/OnboardingFlow.qml @@ -138,7 +138,7 @@ SQUtils.QObject { onOnboardingCreateProfileFlowRequested: root.stackView.push(createProfilePage) onOnboardingLoginFlowRequested: root.stackView.push(loginPage) onLostKeycard: root.stackView.push(keycardLostPage) - onUnblockWithSeedphraseRequested: console.warn("!!! FIXME OnboardingLayout::onUnblockWithSeedphraseRequested") + onUnblockWithSeedphraseRequested: unblockWithSeedphraseFlow.init() onUnblockWithPukRequested: unblockWithPukFlow.init() onKeycardFactoryResetRequested: console.warn("!!! FIXME OnboardingLayout::onKeycardFactoryResetRequested") @@ -299,16 +299,13 @@ SQUtils.QObject { remainingPukAttempts: root.remainingPukAttempts displayKeycardPromoBanner: root.displayKeycardPromoBanner tryToSetPinFunction: root.tryToSetPinFunction - isSeedPhraseValid: root.isSeedPhraseValid - keycardPinInfoPageDelay: root.keycardPinInfoPageDelay onKeycardPinEntered: (pin) => root.keycardPinEntered(pin) - onKeycardPinCreated: (pin) => root.keycardPinCreated(pin) - onSeedphraseSubmitted: (seedphrase) => root.seedphraseSubmitted(seedphrase) onReloadKeycardRequested: root.reloadKeycardRequested() onCreateProfileWithEmptyKeycardRequested: keycardCreateProfileFlow.init() onKeycardFactoryResetRequested: root.keycardFactoryResetRequested() + onUnblockWithSeedphraseRequested: unblockWithSeedphraseFlow.init() onUnblockWithPukRequested: unblockWithPukFlow.init() onFinished: { @@ -317,6 +314,28 @@ SQUtils.QObject { } } + UnblockWithSeedphraseFlow { + id: unblockWithSeedphraseFlow + + stackView: root.stackView + + isSeedPhraseValid: root.isSeedPhraseValid + keycardPinInfoPageDelay: root.keycardPinInfoPageDelay + + onSeedphraseSubmitted: (seedphrase) => root.seedphraseSubmitted(seedphrase) + onKeycardPinCreated: (pin) => { + root.keycardPinCreated(pin) + + if (root.loginScreen) { + root.loginRequested(root.loginScreen.selectedProfileKeyId, + Onboarding.LoginMethod.Keycard, { pin }) + } else { + d.flow = Onboarding.SecondaryFlow.LoginWithKeycard + d.pushOrSkipBiometricsPage() + } + } + } + UnblockWithPukFlow { id: unblockWithPukFlow diff --git a/ui/app/AppLayouts/Onboarding2/UnblockWithSeedphraseFlow.qml b/ui/app/AppLayouts/Onboarding2/UnblockWithSeedphraseFlow.qml new file mode 100644 index 00000000000..cc0350954f2 --- /dev/null +++ b/ui/app/AppLayouts/Onboarding2/UnblockWithSeedphraseFlow.qml @@ -0,0 +1,52 @@ +import QtQuick 2.15 +import QtQuick.Controls 2.15 + +import StatusQ.Controls 0.1 +import StatusQ.Core.Theme 0.1 +import StatusQ.Core.Utils 0.1 as SQUtils +import StatusQ.Core.Backpressure 0.1 + +import AppLayouts.Onboarding2.pages 1.0 +import AppLayouts.Onboarding.enums 1.0 + +SQUtils.QObject { + id: root + + required property StackView stackView + + required property var isSeedPhraseValid + required property int keycardPinInfoPageDelay + + signal seedphraseSubmitted(string seedphrase) + signal keycardPinCreated(string pin) + + function init() { + root.stackView.push(seedphrasePage) + } + + Component { + id: seedphrasePage + + SeedphrasePage { + title: qsTr("Unblock Keycard using the recovery phrase") + btnContinueText: qsTr("Unblock Keycard") + isSeedPhraseValid: root.isSeedPhraseValid + onSeedphraseSubmitted: (seedphrase) => { + root.seedphraseSubmitted(seedphrase) + root.stackView.push(keycardCreatePinPage) + } + } + } + + Component { + id: keycardCreatePinPage + + KeycardCreatePinPage { + onKeycardPinCreated: (pin) => { + Backpressure.debounce(root, root.keycardPinInfoPageDelay, () => { + root.keycardPinCreated(pin) + })() + } + } + } +} diff --git a/ui/app/AppLayouts/Onboarding2/qmldir b/ui/app/AppLayouts/Onboarding2/qmldir index d6a7d21e283..883b3ba2248 100644 --- a/ui/app/AppLayouts/Onboarding2/qmldir +++ b/ui/app/AppLayouts/Onboarding2/qmldir @@ -8,4 +8,5 @@ OnboardingLayout 1.0 OnboardingLayout.qml OnboardingStackView 1.0 OnboardingStackView.qml RecoveryPhraseCreateProfileFlow 1.0 RecoveryPhraseCreateProfileFlow.qml UnblockWithPukFlow 1.0 UnblockWithPukFlow.qml +UnblockWithSeedphraseFlow 1.0 UnblockWithSeedphraseFlow.qml UseRecoveryPhraseFlow 1.0 UseRecoveryPhraseFlow.qml