mirror of
https://github.com/status-im/status-desktop.git
synced 2025-01-10 06:16:32 +00:00
f9244e2c9f
- startup, login and onboarding modules merged into the single one - `State` class introduced which is the base class for all states, every state determines what is the next state in each of 3 possible actions, and what is the previous state, if it has previous state - `StateWrapper` class is introduced as a convenient way to expose `State`'s props and deal with them on the qml side - startup module maintains states as a linked list and there are few convenient methods to move through the list `onBackActionClicked`, `onNextPrimaryActionClicked` `onNextSecondaryActionClicked`, `onNextTertiaryActionClicked` - redundant code removed Fixes: #6473
173 lines
5.4 KiB
QML
173 lines
5.4 KiB
QML
import QtQuick 2.14
|
|
import QtQuick.Controls 2.14
|
|
import QtQuick.Dialogs 1.3
|
|
|
|
import utils 1.0
|
|
|
|
import "controls"
|
|
import "views"
|
|
import "stores"
|
|
|
|
OnboardingBasePage {
|
|
id: root
|
|
|
|
property var startupStore: StartupStore {}
|
|
|
|
backButtonVisible: root.startupStore.currentStartupState.displayBackButton
|
|
|
|
onBackClicked: {
|
|
root.startupStore.backAction()
|
|
}
|
|
|
|
function unload() {
|
|
loader.sourceComponent = undefined
|
|
}
|
|
|
|
Loader {
|
|
id: loader
|
|
anchors.fill: parent
|
|
sourceComponent: {
|
|
if (root.startupStore.currentStartupState.stateType === Constants.startupState.allowNotifications)
|
|
{
|
|
return allowNotificationsViewComponent
|
|
}
|
|
else if (root.startupStore.currentStartupState.stateType === Constants.startupState.welcome)
|
|
{
|
|
return welcomeViewComponent
|
|
}
|
|
else if (root.startupStore.currentStartupState.stateType === Constants.startupState.welcomeNewStatusUser ||
|
|
root.startupStore.currentStartupState.stateType === Constants.startupState.welcomeOldStatusUser ||
|
|
root.startupStore.currentStartupState.stateType === Constants.startupState.userProfileImportSeedPhrase)
|
|
{
|
|
return keysMainViewComponent
|
|
}
|
|
else if (root.startupStore.currentStartupState.stateType === Constants.startupState.userProfileCreate ||
|
|
root.startupStore.currentStartupState.stateType === Constants.startupState.userProfileChatKey)
|
|
{
|
|
return insertDetailsViewComponent
|
|
}
|
|
else if (root.startupStore.currentStartupState.stateType === Constants.startupState.userProfileCreatePassword)
|
|
{
|
|
return createPasswordViewComponent
|
|
}
|
|
else if (root.startupStore.currentStartupState.stateType === Constants.startupState.userProfileConfirmPassword)
|
|
{
|
|
return confirmPasswordViewComponent
|
|
}
|
|
else if (root.startupStore.currentStartupState.stateType === Constants.startupState.biometrics)
|
|
{
|
|
return touchIdAuthViewComponent
|
|
}
|
|
else if (root.startupStore.currentStartupState.stateType === Constants.startupState.userProfileEnterSeedPhrase)
|
|
{
|
|
return seedPhraseInputViewComponent
|
|
}
|
|
else if (root.startupStore.currentStartupState.stateType === Constants.startupState.login)
|
|
{
|
|
return loginViewComponent
|
|
}
|
|
|
|
return undefined
|
|
}
|
|
}
|
|
|
|
Connections {
|
|
target: root.startupStore.startupModuleInst
|
|
onAccountSetupError: {
|
|
if (error === Constants.existingAccountError) {
|
|
msgDialog.title = qsTr("Keys for this account already exist")
|
|
msgDialog.text = qsTr("Keys for this account already exist and can't be added again. If you've lost your password, passcode or Keycard, uninstall the app, reinstall and access your keys by entering your seed phrase")
|
|
} else {
|
|
msgDialog.title = qsTr("Login failed")
|
|
msgDialog.text = qsTr("Login failed. Please re-enter your password and try again.")
|
|
}
|
|
msgDialog.open()
|
|
}
|
|
|
|
onAccountImportError: {
|
|
if (error === Constants.existingAccountError) {
|
|
msgDialog.title = qsTr("Keys for this account already exist")
|
|
msgDialog.text = qsTr("Keys for this account already exist and can't be added again. If you've lost your password, passcode or Keycard, uninstall the app, reinstall and access your keys by entering your seed phrase")
|
|
} else {
|
|
msgDialog.title = qsTr("Error importing seed")
|
|
msgDialog.text = error
|
|
}
|
|
msgDialog.open()
|
|
}
|
|
}
|
|
|
|
MessageDialog {
|
|
id: msgDialog
|
|
title: qsTr("Login failed")
|
|
text: qsTr("Login failed. Please re-enter your password and try again.")
|
|
icon: StandardIcon.Critical
|
|
standardButtons: StandardButton.Ok
|
|
onAccepted: {
|
|
console.log("TODO: restart flow...")
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: allowNotificationsViewComponent
|
|
AllowNotificationsView {
|
|
startupStore: root.startupStore
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: welcomeViewComponent
|
|
WelcomeView {
|
|
startupStore: root.startupStore
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: keysMainViewComponent
|
|
KeysMainView {
|
|
startupStore: root.startupStore
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: insertDetailsViewComponent
|
|
InsertDetailsView {
|
|
startupStore: root.startupStore
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: createPasswordViewComponent
|
|
CreatePasswordView {
|
|
startupStore: root.startupStore
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: confirmPasswordViewComponent
|
|
ConfirmPasswordView {
|
|
startupStore: root.startupStore
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: touchIdAuthViewComponent
|
|
TouchIDAuthView {
|
|
startupStore: root.startupStore
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: seedPhraseInputViewComponent
|
|
SeedPhraseInputView {
|
|
startupStore: root.startupStore
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: loginViewComponent
|
|
LoginView {
|
|
startupStore: root.startupStore
|
|
}
|
|
}
|
|
}
|