fix(wallet): debounce send modal route requests and assign new uuid on each fetch
This commit is contained in:
parent
4370e26dfe
commit
8372ffd62f
|
@ -212,12 +212,11 @@ SplitView {
|
|||
preSelectedHoldingID: loader.preSelectedHoldingID
|
||||
preSelectedHoldingType: loader.preSelectedHoldingType
|
||||
showCustomRoutingMode: ctrlShowCustomMode.checked
|
||||
generateUuid: () => { return "12345" }
|
||||
sendTransaction: () => {
|
||||
if (!showSendErrorCheckBox.checked)
|
||||
return
|
||||
|
||||
txStore.walletSectionSendInst.transactionSent(1, "0x123", generateUuid(), "Send error, please ignore")
|
||||
txStore.walletSectionSendInst.transactionSent(1, "0x123", uuid, "Send error, please ignore")
|
||||
}
|
||||
}
|
||||
Component.onCompleted: loader.active = true
|
||||
|
|
|
@ -72,17 +72,7 @@ StatusDialog {
|
|||
popup.store.authenticateAndTransfer(d.uuid)
|
||||
}
|
||||
|
||||
property var recalculateRoutesAndFees: Backpressure.debounce(popup, 600, function() {
|
||||
if(!!popup.selectedAccount && !!popup.selectedAccount.address && !!holdingSelector.selectedItem
|
||||
&& recipientInputLoader.ready && (amountToSend.ready || d.isCollectiblesTransfer)) {
|
||||
popup.isLoading = true
|
||||
d.routerError = ""
|
||||
d.routerErrorDetails = ""
|
||||
popup.store.suggestedRoutes(d.uuid, d.isCollectiblesTransfer ? "1" : amountToSend.amount, "0", d.extraParamsJson)
|
||||
}
|
||||
})
|
||||
|
||||
property var generateUuid: () => { return Utils.uuid() }
|
||||
readonly property string uuid: d.uuid
|
||||
|
||||
QtObject {
|
||||
id: d
|
||||
|
@ -130,7 +120,7 @@ StatusDialog {
|
|||
|
||||
property string sendError: ""
|
||||
|
||||
readonly property string uuid: popup.generateUuid()
|
||||
property string uuid: Utils.uuid()
|
||||
property bool isPendingTx: false
|
||||
property string totalTimeEstimate
|
||||
property double totalFeesInFiat
|
||||
|
@ -171,6 +161,27 @@ StatusDialog {
|
|||
function addMetricsEvent(subEventName) {
|
||||
Global.addCentralizedMetricIfEnabled(d.isBridgeTx ? "bridge" : "send", {subEvent: subEventName})
|
||||
}
|
||||
|
||||
function areInputParametersValid() {
|
||||
return !!popup.selectedAccount && !!popup.selectedAccount.address && !!holdingSelector.selectedItem
|
||||
&& recipientInputLoader.ready && (amountToSend.ready || d.isCollectiblesTransfer)
|
||||
}
|
||||
|
||||
property var debounceRecalculateRoutesAndFees: Backpressure.debounce(popup, 1000, function() {
|
||||
if(d.areInputParametersValid()) {
|
||||
popup.store.suggestedRoutes(d.uuid, d.isCollectiblesTransfer ? "1" : amountToSend.amount, "0", d.extraParamsJson)
|
||||
}
|
||||
})
|
||||
|
||||
function recalculateRoutesAndFees() {
|
||||
if(d.areInputParametersValid()) {
|
||||
popup.isLoading = true
|
||||
}
|
||||
d.uuid = Utils.uuid()
|
||||
d.routerError = ""
|
||||
d.routerErrorDetails = ""
|
||||
debounceRecalculateRoutesAndFees()
|
||||
}
|
||||
}
|
||||
|
||||
LeftJoinModel {
|
||||
|
@ -314,7 +325,7 @@ StatusDialog {
|
|||
d.selectedHolding.tokensKey)
|
||||
}
|
||||
|
||||
popup.recalculateRoutesAndFees()
|
||||
d.recalculateRoutesAndFees()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -529,12 +540,12 @@ StatusDialog {
|
|||
|
||||
onValidChanged: {
|
||||
d.sendError = ""
|
||||
popup.recalculateRoutesAndFees()
|
||||
d.recalculateRoutesAndFees()
|
||||
}
|
||||
|
||||
onAmountChanged: {
|
||||
d.sendError = ""
|
||||
popup.recalculateRoutesAndFees()
|
||||
d.recalculateRoutesAndFees()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -583,7 +594,7 @@ StatusDialog {
|
|||
onIsLoading: popup.isLoading = true
|
||||
onRecalculateRoutesAndFees: {
|
||||
d.sendError = ""
|
||||
popup.recalculateRoutesAndFees()
|
||||
d.recalculateRoutesAndFees()
|
||||
}
|
||||
onAddressTextChanged: store.setSelectedRecipient(addressText)
|
||||
}
|
||||
|
@ -669,7 +680,7 @@ StatusDialog {
|
|||
selectedAsset: d.selectedHolding
|
||||
onReCalculateSuggestedRoute: {
|
||||
d.sendError = ""
|
||||
popup.recalculateRoutesAndFees()
|
||||
d.recalculateRoutesAndFees()
|
||||
}
|
||||
errorType: d.errorType
|
||||
isLoading: popup.isLoading
|
||||
|
@ -748,6 +759,11 @@ StatusDialog {
|
|||
Connections {
|
||||
target: popup.store.walletSectionSendInst
|
||||
function onSuggestedRoutesReady(txRoutes, errCode, errDescription) {
|
||||
if (txRoutes.uuid !== d.uuid) {
|
||||
// Suggested routes for a different fetch, ignore
|
||||
return
|
||||
}
|
||||
|
||||
popup.bestRoutes = txRoutes.suggestedRoutes
|
||||
|
||||
d.routerError = WalletUtils.getRouterErrorBasedOnCode(errCode)
|
||||
|
|
Loading…
Reference in New Issue