86 lines
2.4 KiB
QML
86 lines
2.4 KiB
QML
import QtQuick 2.13
|
|
import QtQuick.Controls 2.13
|
|
import QtQuick.Layouts 1.12
|
|
|
|
|
|
import utils 1.0
|
|
import shared 1.0
|
|
import shared.panels 1.0
|
|
import shared.controls 1.0
|
|
|
|
import StatusQ.Popups 0.1
|
|
import StatusQ.Controls 0.1
|
|
import StatusQ.Core.Theme 0.1
|
|
|
|
import "../views"
|
|
|
|
StatusModal {
|
|
id: root
|
|
|
|
property var privacyStore
|
|
signal passwordChanged()
|
|
|
|
function onChangePasswordResponse(success) {
|
|
if (success) {
|
|
passwordChanged()
|
|
submitBtn.enabled = false
|
|
} else {
|
|
view.reset()
|
|
console.warn("TODO: Display error message when change password action failure! ")
|
|
}
|
|
submitBtn.loading = false
|
|
}
|
|
|
|
Connections {
|
|
target: root.privacyStore.privacyModule
|
|
onPasswordChanged: onChangePasswordResponse(success)
|
|
}
|
|
|
|
width: 480
|
|
height: 546
|
|
closePolicy: Popup.NoAutoClose
|
|
header.title: qsTr("Change password")
|
|
|
|
onOpened: view.reset()
|
|
|
|
PasswordView {
|
|
id: view
|
|
anchors.topMargin: Style.current.padding
|
|
anchors.centerIn: parent
|
|
titleVisible: false
|
|
introText: qsTr("Change password used to unlock Status on this device & sign transactions.")
|
|
createNewPsw: false
|
|
}
|
|
|
|
rightButtons: [
|
|
StatusButton {
|
|
id: submitBtn
|
|
text: qsTr("Change Password")
|
|
enabled: !submitBtn.loading && view.ready
|
|
|
|
property Timer sim: Timer {
|
|
id: pause
|
|
interval: 20
|
|
onTriggered: {
|
|
// Change current password call action to the backend
|
|
root.privacyStore.changePassword(view.currentPswText, view.newPswText)
|
|
}
|
|
}
|
|
|
|
onClicked: {
|
|
submitBtn.loading = true;
|
|
// ChangePassword operation blocks the UI so loading = true; will never have any affect until changePassword/createPassword is done.
|
|
// Getting around it with a small pause (timer) in order to get the desired behavior
|
|
pause.start();
|
|
}
|
|
}
|
|
]
|
|
|
|
// By clicking anywhere outside password entries fields or focusable element in the view, it is needed to check if passwords entered matches
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
z: view.zBehind // Behind focusable components in the view
|
|
onClicked: { view.checkPasswordMatches() }
|
|
}
|
|
}
|