status-desktop/ui/app/AppLayouts/Wallet/popups/AddWatchOnlyAccountModal.qml
Alexandra Betouni 336f90a60f feat(desktop/wallet) Removed dynamic scoping from wallet
Removed all dynamic scoping parts in wallet section plus

- Renamed Config to Global and added more functions there
- Moved changeAppSectionBySectionType function to Global
  and updated all places where is used to call it from
  Global instead
- Moved openLink function to Global and updated all places
  where is used to call it from Global instead
- Moved errorSound to Global, introduced playErrorSound
  function  and updated all places where is used to call
  this function from Global instead

Closes #4245
2022-02-01 11:38:27 +01:00

127 lines
3.8 KiB
QML

import QtQuick 2.13
import QtQuick.Controls 2.13
import QtQuick.Dialogs 1.3
import utils 1.0
import StatusQ.Core 0.1
import StatusQ.Core.Theme 0.1
import StatusQ.Controls 0.1
import shared.popups 1.0
import shared.controls 1.0
import "../stores"
// TODO: replace with StatusModal
ModalPopup {
id: popup
//% "Add a watch-only account"
title: qsTrId("add-watch-account")
property int marginBetweenInputs: 38
property string addressError: ""
property string accountNameValidationError: ""
property bool loading: false
signal afterAddAccount()
function validate() {
if (addressInput.text === "") {
//% "You need to enter an address"
addressError = qsTrId("you-need-to-enter-an-address")
} else if (!Utils.isAddress(addressInput.text)) {
//% "This needs to be a valid address (starting with 0x)"
addressError = qsTrId("this-needs-to-be-a-valid-address-(starting-with-0x)")
} else {
addressError = ""
}
if (accountNameInput.text === "") {
//% "You need to enter an account name"
accountNameValidationError = qsTrId("you-need-to-enter-an-account-name")
} else {
accountNameValidationError = ""
}
return addressError === "" && accountNameValidationError === ""
}
onOpened: {
addressError = "";
accountNameValidationError = "";
addressInput.text = "";
accountNameInput.text = "";
accountColorInput.selectedColor = Style.current.accountColors[Math.floor(Math.random() * Style.current.accountColors.length)]
addressInput.forceActiveFocus(Qt.MouseFocusReason)
}
Input {
id: addressInput
// TODO add QR code reader for the address
//% "Enter address..."
placeholderText: qsTrId("enter-address...")
//% "Account address"
label: qsTrId("wallet-key-title")
validationError: popup.addressError
}
Input {
id: accountNameInput
anchors.top: addressInput.bottom
anchors.topMargin: marginBetweenInputs
//% "Enter an account name..."
placeholderText: qsTrId("enter-an-account-name...")
//% "Account name"
label: qsTrId("account-name")
validationError: popup.accountNameValidationError
}
StatusWalletColorSelect {
id: accountColorInput
anchors.top: accountNameInput.bottom
anchors.topMargin: marginBetweenInputs
anchors.left: parent.left
anchors.right: parent.right
model: Theme.palette.accountColors
}
footer: StatusButton {
anchors.top: parent.top
anchors.right: parent.right
text: loading ?
//% "Loading..."
qsTrId("loading") :
//% "Add account"
qsTrId("add-account")
enabled: !loading && addressInput.text !== "" && accountNameInput.text !== ""
MessageDialog {
id: accountError
title: "Adding the account failed"
icon: StandardIcon.Critical
standardButtons: StandardButton.Ok
}
onClicked : {
// TODO the loaidng doesn't work because the function freezes th eview. Might need to use threads
loading = true
if (!validate()) {
Global.playErrorSound();
return loading = false
}
const error = RootStore.addWatchOnlyAccount(addressInput.text, accountNameInput.text, accountColorInput.selectedColor);
loading = false
if (error) {
Global.playErrorSound();
accountError.text = error
return accountError.open()
}
popup.afterAddAccount()
popup.close();
}
}
}