mirror of
https://github.com/status-im/status-desktop.git
synced 2025-01-10 14:26:34 +00:00
b3f8af8e06
Qml code referring to the old code base commented out, but not deleted, due to easier refactoring the rest of the app.
256 lines
9.6 KiB
QML
256 lines
9.6 KiB
QML
import QtQuick 2.13
|
|
import QtQuick.Controls 2.13
|
|
import QtQuick.Layouts 1.13
|
|
import QtQuick.Dialogs 1.3
|
|
|
|
import utils 1.0
|
|
|
|
import StatusQ.Controls 0.1
|
|
|
|
import shared.views 1.0
|
|
import shared.popups 1.0
|
|
import shared.controls 1.0
|
|
|
|
// TODO: replace with StatusModal
|
|
ModalPopup {
|
|
id: root
|
|
readonly property var asset: {"name": "Ethereum", "symbol": "ETH"}
|
|
|
|
title: qsTr("Contract interaction")
|
|
|
|
property var estimateGasFunction: (function(userAddress) { return 0; })
|
|
property var onSendTransaction: (function(userAddress, gasLimit, gasPrice, password){ return ""; })
|
|
property var onSuccess: (function(){})
|
|
|
|
Component.onCompleted: {
|
|
// Not Refactored Yet
|
|
// walletModel.gasView.getGasPricePredictions()
|
|
}
|
|
|
|
height: 540
|
|
|
|
function sendTransaction() {
|
|
// Not Refactored Yet
|
|
// try {
|
|
// let responseStr = profileModel.ens.setPubKey(root.ensUsername,
|
|
// selectFromAccount.selectedAccount.address,
|
|
// gasSelector.selectedGasLimit,
|
|
// gasSelector.eip1599Enabled ? "" : gasSelector.selectedGasPrice,
|
|
// gasSelector.selectedTipLimit,
|
|
// gasSelector.selectedOverallLimit,
|
|
// transactionSigner.enteredPassword)
|
|
// let response = JSON.parse(responseStr)
|
|
|
|
// if (!response.success) {
|
|
// if (Utils.isInvalidPasswordMessage(response.result)){
|
|
// //% "Wrong password"
|
|
// transactionSigner.validationError = qsTrId("wrong-password")
|
|
// return
|
|
// }
|
|
// sendingError.text = response.result
|
|
// return sendingError.open()
|
|
// }
|
|
|
|
// onSuccess();
|
|
// root.close();
|
|
// } catch (e) {
|
|
// console.error('Error sending the transaction', e)
|
|
// sendingError.text = "Error sending the transaction: " + e.message;
|
|
// return sendingError.open()
|
|
// }
|
|
}
|
|
|
|
property MessageDialog sendingError: MessageDialog {
|
|
id: sendingError
|
|
//% "Error sending the transaction"
|
|
title: qsTrId("error-sending-the-transaction")
|
|
icon: StandardIcon.Critical
|
|
standardButtons: StandardButton.Ok
|
|
}
|
|
|
|
TransactionStackView {
|
|
id: stack
|
|
height: parent.height
|
|
anchors.fill: parent
|
|
anchors.leftMargin: Style.current.padding
|
|
anchors.rightMargin: Style.current.padding
|
|
onGroupActivated: {
|
|
root.title = group.headerText
|
|
btnNext.text = group.footerText
|
|
}
|
|
TransactionFormGroup {
|
|
id: group1
|
|
headerText: root.title
|
|
//% "Continue"
|
|
footerText: qsTrId("continue")
|
|
|
|
StatusAccountSelector {
|
|
id: selectFromAccount
|
|
accounts: walletSectionAccounts.model
|
|
selectedAccount: {
|
|
const currAcc = walletSectionCurrent
|
|
if (currAcc.walletType !== Constants.watchWalletType) {
|
|
return currAcc
|
|
}
|
|
return null
|
|
}
|
|
// Not Refactored Yet
|
|
// currency: walletModel.balanceView.defaultCurrency
|
|
width: stack.width
|
|
//% "Choose account"
|
|
label: qsTrId("choose-account")
|
|
showBalanceForAssetSymbol: "ETH"
|
|
minRequiredAssetBalance: 0
|
|
onSelectedAccountChanged: if (isValid) { gasSelector.estimateGas() }
|
|
}
|
|
RecipientSelector {
|
|
id: selectRecipient
|
|
visible: false
|
|
// Not Refactored Yet
|
|
// accounts: walletModel.accountsView.accounts
|
|
contacts: contactsModule.model.addedContacts
|
|
// Not Refactored Yet
|
|
// selectedRecipient: { "address": utilsModel.ensRegisterAddress, "type": RecipientSelector.Type.Address }
|
|
readOnly: true
|
|
onSelectedRecipientChanged: if (isValid) { gasSelector.estimateGas() }
|
|
}
|
|
GasSelector {
|
|
id: gasSelector
|
|
visible: true
|
|
anchors.top: selectFromAccount.bottom
|
|
anchors.topMargin: Style.current.padding
|
|
// Not Refactored Yet
|
|
// gasPrice: parseFloat(walletModel.gasView.gasPrice)
|
|
// getGasEthValue: walletModel.gasView.getGasEthValue
|
|
// getFiatValue: walletModel.balanceView.getFiatValue
|
|
// defaultCurrency: walletModel.balanceView.defaultCurrency
|
|
|
|
property var estimateGas: Backpressure.debounce(gasSelector, 600, function() {
|
|
let estimatedGas = root.estimateGasFunction(selectFromAccount.selectedAccount);
|
|
gasSelector.selectedGasLimit = estimatedGas
|
|
return estimatedGas;
|
|
})
|
|
}
|
|
GasValidator {
|
|
id: gasValidator
|
|
anchors.top: gasSelector.bottom
|
|
selectedAccount: selectFromAccount.selectedAccount
|
|
selectedAsset: root.asset
|
|
selectedAmount: 0
|
|
selectedGasEthValue: gasSelector.selectedGasEthValue
|
|
}
|
|
}
|
|
TransactionFormGroup {
|
|
id: group3
|
|
headerText: root.title
|
|
//% "Sign with password"
|
|
footerText: qsTrId("sign-with-password")
|
|
|
|
TransactionPreview {
|
|
id: pvwTransaction
|
|
width: stack.width
|
|
fromAccount: selectFromAccount.selectedAccount
|
|
gas: {
|
|
"value": gasSelector.selectedGasEthValue,
|
|
"symbol": "ETH",
|
|
"fiatValue": gasSelector.selectedGasFiatValue
|
|
}
|
|
toAccount: selectRecipient.selectedRecipient
|
|
asset: root.asset
|
|
// Not Refactored Yet
|
|
// currency: walletModel.balanceView.defaultCurrency
|
|
// amount: {
|
|
// const fiatValue = walletModel.balanceView.getFiatValue(0, root.asset.symbol, currency)
|
|
// return { "value": 0, "fiatValue": fiatValue }
|
|
// }
|
|
}
|
|
}
|
|
TransactionFormGroup {
|
|
id: group4
|
|
headerText: root.title
|
|
//% "Sign with password"
|
|
footerText: qsTrId("sign-with-password")
|
|
|
|
TransactionSigner {
|
|
id: transactionSigner
|
|
width: stack.width
|
|
// Not Refactored Yet
|
|
// signingPhrase: walletModel.utilsView.signingPhrase
|
|
}
|
|
}
|
|
}
|
|
|
|
footer: Item {
|
|
width: parent.width
|
|
height: btnNext.height
|
|
|
|
StatusRoundButton {
|
|
id: btnBack
|
|
anchors.left: parent.left
|
|
icon.name: "arrow-right"
|
|
icon.width: 20
|
|
icon.height: 16
|
|
icon.rotation: 180
|
|
visible: stack.currentGroup.showBackBtn
|
|
enabled: stack.currentGroup.isValid || stack.isLastGroup
|
|
onClicked: {
|
|
if (typeof stack.currentGroup.onBackClicked === "function") {
|
|
return stack.currentGroup.onBackClicked()
|
|
}
|
|
stack.back()
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: transactionSettingsConfirmationPopupComponent
|
|
TransactionSettingsConfirmationPopup {
|
|
|
|
}
|
|
}
|
|
|
|
StatusButton {
|
|
id: btnNext
|
|
anchors.right: parent.right
|
|
//% "Next"
|
|
text: qsTrId("next")
|
|
enabled: stack.currentGroup.isValid
|
|
onClicked: {
|
|
const validity = stack.currentGroup.validate()
|
|
if (validity.isValid && !validity.isPending) {
|
|
if (stack.isLastGroup) {
|
|
return root.sendTransaction()
|
|
}
|
|
|
|
if(gasSelector.eip1599Enabled && stack.currentGroup === group2 && gasSelector.advancedMode){
|
|
if(gasSelector.showPriceLimitWarning || gasSelector.showTipLimitWarning){
|
|
Global.openPopup(transactionSettingsConfirmationPopupComponent, {
|
|
currentBaseFee: gasSelector.latestBaseFeeGwei,
|
|
currentMinimumTip: gasSelector.perGasTipLimitFloor,
|
|
currentAverageTip: gasSelector.perGasTipLimitAverage,
|
|
tipLimit: gasSelector.selectedTipLimit,
|
|
suggestedTipLimit: gasSelector.perGasTipLimitFloor,
|
|
priceLimit: gasSelector.selectedOverallLimit,
|
|
suggestedPriceLimit: gasSelector.latestBaseFeeGwei + gasSelector.perGasTipLimitFloor,
|
|
showPriceLimitWarning: gasSelector.showPriceLimitWarning,
|
|
showTipLimitWarning: gasSelector.showTipLimitWarning,
|
|
onConfirm: function(){
|
|
stack.next();
|
|
}
|
|
})
|
|
return
|
|
}
|
|
}
|
|
|
|
stack.next()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/*##^##
|
|
Designer {
|
|
D{i:0;autoSize:true;height:480;width:640}
|
|
}
|
|
##^##*/
|