Stefan 16ed8739e8 fix(wallet) fix Add Account Modal and wallet tests
- fix add-account-modal custom derivation checkbox blocking all workflows
- fix, improve and enable wallet tests
- wait_for_text_matching alternative, to is_text_matching, to check also for content as squish driver API
- add objectName based lookup for in some places where user-text was used
- add workaround to retry for 10 seconds add watch due to flakiness
- rename SquishDriver.type to type.text not to conflict with python's type
- add optional timeout to some APIs
- ignore error for extra step in reaching onboarding seedphrase in linux

Updates: #9576
2023-03-01 15:36:06 +04:00

214 lines
6.5 KiB
QML

import QtQuick 2.14
import QtQuick.Layouts 1.14
import QtQuick.Controls 2.14
import StatusQ.Core 0.1
import StatusQ.Core.Theme 0.1
import StatusQ.Components 0.1
import StatusQ.Controls 0.1
import StatusQ.Controls.Validators 0.1
import utils 1.0
import "../helpers"
Item {
id: root
property var sharedKeycardModule
property string kcData: root.sharedKeycardModule.keycardData
signal passwordValid(bool valid)
onKcDataChanged: {
d.updatePasswordValidation()
}
onStateChanged: {
password.focus = true
}
Component.onCompleted: timer.start()
Timer {
id: timer
interval: 1000
onTriggered: {
password.forceActiveFocus(Qt.MouseFocusReason)
}
}
QtObject {
id: d
readonly property bool wrongPassword: root.kcData & Constants.predefinedKeycardData.wrongPassword
function updatePasswordValidation() {
root.passwordValid(password.text !== "" && !d.wrongPassword)
}
}
ColumnLayout {
anchors.fill: parent
anchors.topMargin: Style.current.xlPadding
anchors.bottomMargin: Style.current.halfPadding
anchors.leftMargin: Style.current.xlPadding
anchors.rightMargin: Style.current.xlPadding
spacing: Style.current.padding
KeycardImage {
id: image
Layout.alignment: Qt.AlignHCenter
Layout.preferredHeight: Constants.keycard.shared.imageHeight
Layout.preferredWidth: Constants.keycard.shared.imageWidth
}
StatusBaseText {
id: title
Layout.alignment: Qt.AlignCenter
font.weight: Font.Bold
}
StatusBaseText {
id: message
Layout.alignment: Qt.AlignCenter
wrapMode: Text.WordWrap
visible: text != ""
}
StatusPasswordInput {
id: password
objectName: "keycardPasswordInput"
Layout.alignment: Qt.AlignHCenter
signingPhrase: root.sharedKeycardModule.getSigningPhrase()
placeholderText: qsTr("Password")
selectByMouse: true
focus: true
onTextChanged: {
root.sharedKeycardModule.keycardData = ""
root.sharedKeycardModule.setPassword(text)
d.updatePasswordValidation()
}
onAccepted: {
if (password.text !== "") {
root.sharedKeycardModule.currentState.doPrimaryAction()
}
}
}
StatusBaseText {
id: info
Layout.alignment: Qt.AlignCenter
wrapMode: Text.WordWrap
}
Item {
Layout.fillWidth: true
Layout.fillHeight: true
}
}
states: [
State {
name: Constants.keycardSharedState.enterPassword
when: root.sharedKeycardModule.currentState.stateType === Constants.keycardSharedState.enterPassword
PropertyChanges {
target: image
source: Style.png("keycard/authenticate")
pattern: ""
}
PropertyChanges {
target: title
text: qsTr("Enter your password")
font.pixelSize: Constants.keycard.general.fontSize1
color: Theme.palette.directColor1
}
PropertyChanges {
target: message
text: ""
}
PropertyChanges {
target: info
text: ""
}
},
State {
name: Constants.keycardSharedState.wrongPassword
when: root.sharedKeycardModule.currentState.stateType === Constants.keycardSharedState.wrongPassword
PropertyChanges {
target: image
source: Style.png("keycard/authenticate")
pattern: ""
}
PropertyChanges {
target: title
text: qsTr("Enter your password")
font.pixelSize: Constants.keycard.general.fontSize1
color: Theme.palette.directColor1
}
PropertyChanges {
target: message
text: ""
}
PropertyChanges {
target: info
text: d.wrongPassword? qsTr("Password incorrect") : ""
color: Theme.palette.dangerColor1
}
},
State {
name: Constants.keycardSharedState.enterBiometricsPassword
when: root.sharedKeycardModule.currentState.stateType === Constants.keycardSharedState.enterBiometricsPassword
PropertyChanges {
target: image
source: Style.png("keycard/biometrics-success")
pattern: ""
}
PropertyChanges {
target: title
text: qsTr("Password changed on other device")
font.pixelSize: Constants.keycard.general.fontSize1
color: Theme.palette.directColor1
}
PropertyChanges {
target: message
text: qsTr("Enter your new password to proceed")
color: Theme.palette.baseColor1
}
PropertyChanges {
target: info
text: d.wrongPassword? qsTr("Password incorrect") : ""
color: Theme.palette.dangerColor1
}
},
State {
name: Constants.keycardSharedState.wrongBiometricsPassword
when: root.sharedKeycardModule.currentState.stateType === Constants.keycardSharedState.wrongBiometricsPassword
PropertyChanges {
target: image
source: Style.png("keycard/biometrics-success")
pattern: ""
}
PropertyChanges {
target: title
text: qsTr("Password changed on other device")
font.pixelSize: Constants.keycard.general.fontSize1
color: Theme.palette.directColor1
}
PropertyChanges {
target: message
text: qsTr("Enter your new password to proceed")
color: Theme.palette.baseColor1
}
PropertyChanges {
target: info
text: d.wrongPassword? qsTr("Password incorrect") : ""
color: Theme.palette.dangerColor1
}
}
]
}