fix(wallet): cross chain send transaction is detected now as send not

bridge
This commit is contained in:
Ivan Belyakov 2024-07-08 10:28:04 +02:00 committed by IvanBelyakoff
parent 8b80cfb9e3
commit e45961232b
3 changed files with 52 additions and 13 deletions

View File

@ -557,4 +557,20 @@ QtObject {
const prefix = Constants.socialLinkPrefixesByType[Constants.socialLinkType.twitter] const prefix = Constants.socialLinkPrefixesByType[Constants.socialLinkType.twitter]
return prefix + twitterHandle return prefix + twitterHandle
} }
function transactionType(transaction) {
// Cross chain Send to another recipient is not a bridge, though involves bridging
if (transaction.txType == Constants.TransactionType.Bridge && transaction.sender !== transaction.recipient) {
if (root.showAllAccounts) {
const addresses = root.addressFilters
if (addresses.indexOf(transaction.sender) > -1)
return Constants.TransactionType.Send
return Constants.TransactionType.Receive
}
return addressesEqual(root.selectedAddress, transaction.sender) ? Constants.TransactionType.Send : Constants.TransactionType.Receive
}
return transaction.txType
}
} }

View File

@ -102,7 +102,7 @@ Item {
} }
readonly property real feeEthValue: d.details ? RootStore.getFeeEthValue(d.details.totalFees) : 0 readonly property real feeEthValue: d.details ? RootStore.getFeeEthValue(d.details.totalFees) : 0
readonly property real feeFiatValue: d.isTransactionValid ? RootStore.getFiatValue(d.feeEthValue, Constants.ethToken) : 0 readonly property real feeFiatValue: d.isTransactionValid ? RootStore.getFiatValue(d.feeEthValue, Constants.ethToken) : 0
readonly property int transactionType: d.isTransactionValid ? transaction.txType : Constants.TransactionType.Send readonly property int transactionType: d.isTransactionValid ? WalletStores.RootStore.transactionType(transaction) : Constants.TransactionType.Send
readonly property bool isBridge: d.transactionType === Constants.TransactionType.Bridge readonly property bool isBridge: d.transactionType === Constants.TransactionType.Bridge
property string decodedInputData: "" property string decodedInputData: ""

View File

@ -70,7 +70,7 @@ StatusListItem {
readonly property string addressNameTo: isModelDataValid ? walletRootStore.getNameForAddress(modelData.recipient) : "" readonly property string addressNameTo: isModelDataValid ? walletRootStore.getNameForAddress(modelData.recipient) : ""
readonly property string addressNameFrom: isModelDataValid ? walletRootStore.getNameForAddress(modelData.sender) : "" readonly property string addressNameFrom: isModelDataValid ? walletRootStore.getNameForAddress(modelData.sender) : ""
readonly property bool isNFT: isModelDataValid && modelData.isNFT readonly property bool isNFT: isModelDataValid && modelData.isNFT
readonly property bool isCommunityAssetViaAirdrop: isModelDataValid && !!communityId && modelData.txType === Constants.TransactionType.Mint readonly property bool isCommunityAssetViaAirdrop: isModelDataValid && !!communityId && d.txType === Constants.TransactionType.Mint
readonly property string communityId: isModelDataValid && modelData.communityId ? modelData.communityId : "" readonly property string communityId: isModelDataValid && modelData.communityId ? modelData.communityId : ""
property var community: null property var community: null
readonly property bool isCommunityToken: !!community && Object.keys(community).length > 0 readonly property bool isCommunityToken: !!community && Object.keys(community).length > 0
@ -106,7 +106,7 @@ StatusListItem {
} }
readonly property string tokenImage: { readonly property string tokenImage: {
if (!isModelDataValid || modelData.txType === Constants.TransactionType.ContractDeployment) if (!isModelDataValid || d.txType === Constants.TransactionType.ContractDeployment)
return "" return ""
if (root.isNFT) { if (root.isNFT) {
return modelData.nftImageUrl ? modelData.nftImageUrl : "" return modelData.nftImageUrl ? modelData.nftImageUrl : ""
@ -178,13 +178,18 @@ StatusListItem {
readonly property bool isLightTheme: Style.current.name === Constants.lightThemeName readonly property bool isLightTheme: Style.current.name === Constants.lightThemeName
property color animatedBgColor property color animatedBgColor
property int txType: walletRootStore.transactionType(modelData)
function addressesEqual(address1, address2) {
return address1.toUpperCase() == address2.toUpperCase()
}
} }
function getDetailsString(detailsObj) { function getDetailsString(detailsObj) {
let details = "" let details = ""
const endl = "\n" const endl = "\n"
const endl2 = endl + endl const endl2 = endl + endl
const type = modelData.txType const type = d.txType
const feeEthValue = rootStore.getGasEthValue(detailsObj.totalFees.amount, 1) const feeEthValue = rootStore.getGasEthValue(detailsObj.totalFees.amount, 1)
// TITLE // TITLE
@ -224,7 +229,7 @@ StatusListItem {
} }
details += qsTr("Summary") + endl details += qsTr("Summary") + endl
switch(modelData.txType) { switch(type) {
case Constants.TransactionType.Buy: case Constants.TransactionType.Buy:
case Constants.TransactionType.Sell: case Constants.TransactionType.Sell:
case Constants.TransactionType.Destroy: case Constants.TransactionType.Destroy:
@ -235,7 +240,11 @@ StatusListItem {
details += getSubtitle(true, true) + endl2 details += getSubtitle(true, true) + endl2
break break
default: default:
details += qsTr("%1 from %2 to %3 via %4").arg(transactionValue).arg(fromAddress).arg(toAddress).arg(networkName) + endl2 if (networkNameIn != networkNameOut) { // cross chain Send/Receive that involves bridging
details += getSubtitle(true, true) + endl2
}
else
details += qsTr("%1 from %2 to %3 via %4").arg(transactionValue).arg(fromAddress).arg(toAddress).arg(networkName) + endl2
break break
} }
@ -495,8 +504,15 @@ StatusListItem {
return qsTr("%1 (community asset) from %2 via %3").arg(root.transactionValue).arg(communityInfo).arg(root.networkName) return qsTr("%1 (community asset) from %2 via %3").arg(root.transactionValue).arg(communityInfo).arg(root.networkName)
} }
switch(modelData.txType) { switch(d.txType) {
case Constants.TransactionType.Receive: case Constants.TransactionType.Receive:
// Cross chain receive. Use bridge pattern
if (root.networkNameIn != root.networkNameOut) {
if (allAccounts)
return qsTr("%1 from %2 to %3 via %4 and %5").arg(inTransactionValue).arg(fromAddress).arg(toAddress).arg(networkNameOut).arg(networkNameIn)
return qsTr("%1 from %2 via %3 and %4").arg(inTransactionValue).arg(toAddress).arg(networkNameOut).arg(networkNameIn)
}
if (allAccounts) if (allAccounts)
return qsTr("%1 from %2 to %3 via %4").arg(transactionValue).arg(fromAddress).arg(toAddress).arg(networkName) return qsTr("%1 from %2 to %3 via %4").arg(transactionValue).arg(fromAddress).arg(toAddress).arg(networkName)
return qsTr("%1 from %2 via %3").arg(transactionValue).arg(fromAddress).arg(networkName) return qsTr("%1 from %2 via %3").arg(transactionValue).arg(fromAddress).arg(networkName)
@ -525,6 +541,13 @@ StatusListItem {
return qsTr("%1 via %2 in %3").arg(transactionValue).arg(networkName).arg(toAddress) return qsTr("%1 via %2 in %3").arg(transactionValue).arg(networkName).arg(toAddress)
return qsTr("%1 via %2").arg(transactionValue).arg(networkName) return qsTr("%1 via %2").arg(transactionValue).arg(networkName)
default: default:
// Cross chain send. Use bridge pattern
if (root.networkNameIn != root.networkNameOut) {
if (allAccounts)
return qsTr("%1 from %2 to %3 via %4 and %5").arg(inTransactionValue).arg(fromAddress).arg(toAddress).arg(networkNameOut).arg(networkNameIn)
return qsTr("%1 to %2 via %3 and %4").arg(inTransactionValue).arg(toAddress).arg(networkNameOut).arg(networkNameIn)
}
if (allAccounts) if (allAccounts)
return qsTr("%1 from %2 to %3 via %4").arg(transactionValue).arg(fromAddress).arg(toAddress).arg(networkName) return qsTr("%1 from %2 to %3 via %4").arg(transactionValue).arg(fromAddress).arg(toAddress).arg(networkName)
return qsTr("%1 to %2 via %3").arg(transactionValue).arg(toAddress).arg(networkName) return qsTr("%1 to %2 via %3").arg(transactionValue).arg(toAddress).arg(networkName)
@ -552,7 +575,7 @@ StatusListItem {
if (!root.isModelDataValid) if (!root.isModelDataValid)
return "" return ""
switch(modelData.txType) { switch(d.txType) {
case Constants.TransactionType.Send: case Constants.TransactionType.Send:
return "send" return "send"
case Constants.TransactionType.Receive: case Constants.TransactionType.Receive:
@ -601,7 +624,7 @@ StatusListItem {
const isPending = root.transactionStatus === Constants.TransactionStatus.Pending const isPending = root.transactionStatus === Constants.TransactionStatus.Pending
const failed = root.transactionStatus === Constants.TransactionStatus.Failed const failed = root.transactionStatus === Constants.TransactionStatus.Failed
switch(modelData.txType) { switch(d.txType) {
case Constants.TransactionType.Send: case Constants.TransactionType.Send:
return failed ? qsTr("Send failed") : (isPending ? qsTr("Sending") : qsTr("Sent")) return failed ? qsTr("Send failed") : (isPending ? qsTr("Sending") : qsTr("Sent"))
case Constants.TransactionType.Receive: case Constants.TransactionType.Receive:
@ -644,7 +667,7 @@ StatusListItem {
} }
StatusRoundIcon { StatusRoundIcon {
id: secondTokenImage id: secondTokenImage
visible: root.isModelDataValid && !root.isNFT && !!root.inTokenImage && modelData.txType === Constants.TransactionType.Swap visible: root.isModelDataValid && !root.isNFT && !!root.inTokenImage && d.txType === Constants.TransactionType.Swap
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
asset: StatusAssetSettings { asset: StatusAssetSettings {
width: root.tokenIconAsset.width width: root.tokenIconAsset.width
@ -705,7 +728,7 @@ StatusListItem {
return "" return ""
} }
switch(modelData.txType) { switch(d.txType) {
case Constants.TransactionType.Send: case Constants.TransactionType.Send:
case Constants.TransactionType.Sell: case Constants.TransactionType.Sell:
return "" + root.transactionValue return "" + root.transactionValue
@ -736,7 +759,7 @@ StatusListItem {
if (!root.isModelDataValid) if (!root.isModelDataValid)
return "" return ""
switch(modelData.txType) { switch(d.txType) {
case Constants.TransactionType.Receive: case Constants.TransactionType.Receive:
case Constants.TransactionType.Buy: case Constants.TransactionType.Buy:
case Constants.TransactionType.Swap: case Constants.TransactionType.Swap:
@ -758,7 +781,7 @@ StatusListItem {
return "" return ""
} }
switch(modelData.txType) { switch(d.txType) {
case Constants.TransactionType.Send: case Constants.TransactionType.Send:
case Constants.TransactionType.Sell: case Constants.TransactionType.Sell:
case Constants.TransactionType.Buy: case Constants.TransactionType.Buy: