From 74c27bd13b7822683fbf00dff9339798cb2946d8 Mon Sep 17 00:00:00 2001 From: gabrieledm Date: Thu, 6 Aug 2026 16:33:19 +0200 Subject: [PATCH 1/4] fix: correct behavior for trc20 transfer type transactions --- packages/tron-wallet-snap/CHANGELOG.md | 4 ++ packages/tron-wallet-snap/snap.manifest.json | 2 +- .../transactions/TransactionsMapper.test.ts | 69 +++++++++++++++++++ .../transactions/TransactionsMapper.ts | 9 ++- 4 files changed, 81 insertions(+), 3 deletions(-) diff --git a/packages/tron-wallet-snap/CHANGELOG.md b/packages/tron-wallet-snap/CHANGELOG.md index 4cc38345f..1ce868f0b 100644 --- a/packages/tron-wallet-snap/CHANGELOG.md +++ b/packages/tron-wallet-snap/CHANGELOG.md @@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Add Core messenger plumbing (`getMessenger`, `RemoteFeatureFlagsProvider`, `AssetsProvider`) for upcoming AssetsController migration ([#95](https://github.com/MetaMask/internal-snaps/pull/95)) +### Fixed + +- Fix SUN → USDT swaps routed through Rango and SunSwap displaying a zero SUN amount in transaction activity ([#]()) + ## [3.0.0] ### Added diff --git a/packages/tron-wallet-snap/snap.manifest.json b/packages/tron-wallet-snap/snap.manifest.json index 30ac1291a..c42c35877 100644 --- a/packages/tron-wallet-snap/snap.manifest.json +++ b/packages/tron-wallet-snap/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/internal-snaps.git" }, "source": { - "shasum": "B9kqmuUcYgPAD3ojseIm2HymqK77Q4NEzULU876+5Wc=", + "shasum": "zLt5SflwRneLbqBa7iNTEZX1A/rcV6P/PfjdUDRyYLI=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/tron-wallet-snap/src/services/transactions/TransactionsMapper.test.ts b/packages/tron-wallet-snap/src/services/transactions/TransactionsMapper.test.ts index 2c72430b6..ac705263e 100644 --- a/packages/tron-wallet-snap/src/services/transactions/TransactionsMapper.test.ts +++ b/packages/tron-wallet-snap/src/services/transactions/TransactionsMapper.test.ts @@ -922,6 +922,75 @@ describe('TransactionMapper', () => { expect(result?.to[0]?.asset).toHaveProperty('unit', 'USDC'); expect(result?.to[0]?.asset).toHaveProperty('amount', '99.5'); }); + + it('ignores approval events when mapping TRC20 swap transfers', () => { + const mockTrc20Swap = { + ...swapTransactionMock, + } as unknown as TransactionInfo; + + const trc20Transfers: ContractTransactionInfo[] = [ + { + transaction_id: mockTrc20Swap.txID, + token_info: { + symbol: 'USDT', + address: 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t', + decimals: 6, + name: 'Tether USD', + }, + block_timestamp: 1632825600000, + from: 'TContractAddress', + to: mockAccount.address, + type: 'Transfer', + value: '4891342', + }, + { + transaction_id: mockTrc20Swap.txID, + token_info: { + symbol: 'SUN', + address: 'TSSMHYeV2uE9qYH95DqyoCuNCzEL1NvU3S', + decimals: 18, + name: 'SUN', + }, + block_timestamp: 1632825600000, + from: mockAccount.address, + to: 'TContractAddress', + type: 'Approval', + value: '0', + }, + { + transaction_id: mockTrc20Swap.txID, + token_info: { + symbol: 'SUN', + address: 'TSSMHYeV2uE9qYH95DqyoCuNCzEL1NvU3S', + decimals: 18, + name: 'SUN', + }, + block_timestamp: 1632825600000, + from: mockAccount.address, + to: 'TContractAddress', + type: 'Transfer', + value: '276791363098075785381', + }, + ]; + + const result = TransactionMapper.mapTransaction({ + scope: Network.Mainnet, + account: mockAccount, + trongridTransaction: mockTrc20Swap, + trc20Transfers, + }); + + expect(result).not.toBeNull(); + expect(result?.type).toStrictEqual(TransactionType.Swap); + expect(result?.from[0]?.asset).toMatchObject({ + unit: 'SUN', + amount: '276.791363098075785381', + }); + expect(result?.to[0]?.asset).toMatchObject({ + unit: 'USDT', + amount: '4.891342', + }); + }); }); describe('Non-Swap Scenarios', () => { diff --git a/packages/tron-wallet-snap/src/services/transactions/TransactionsMapper.ts b/packages/tron-wallet-snap/src/services/transactions/TransactionsMapper.ts index 0ec91375f..9aa53670d 100644 --- a/packages/tron-wallet-snap/src/services/transactions/TransactionsMapper.ts +++ b/packages/tron-wallet-snap/src/services/transactions/TransactionsMapper.ts @@ -18,6 +18,7 @@ import { sunToTrx, toUiAmount } from '../../utils/conversion'; // TRC20 transaction types from TronGrid API const TRC20_APPROVAL_TYPE = 'Approval'; +const TRC20_TRANSFER_TYPE = 'Transfer'; export class TransactionMapper { /** @@ -946,10 +947,14 @@ export class TransactionMapper { // 2. TRX ↔ TRC20: account receives/sends TRC20 + TRX moves in opposite direction const sentTrc20Transfer = trc20Transfers.find( - (transfer) => transfer.from === account.address, + (transfer) => + transfer.type === TRC20_TRANSFER_TYPE && + transfer.from === account.address, ); const receivedTrc20Transfer = trc20Transfers.find( - (transfer) => transfer.to === account.address, + (transfer) => + transfer.type === TRC20_TRANSFER_TYPE && + transfer.to === account.address, ); // Check for TRC20 ↔ TRC20 swap (different tokens) From 95efddafe9121c7f5e638352247a44a68c951e27 Mon Sep 17 00:00:00 2001 From: gabrieledm Date: Thu, 6 Aug 2026 16:38:10 +0200 Subject: [PATCH 2/4] chore: changelog --- packages/tron-wallet-snap/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tron-wallet-snap/CHANGELOG.md b/packages/tron-wallet-snap/CHANGELOG.md index 1ce868f0b..d74b19bad 100644 --- a/packages/tron-wallet-snap/CHANGELOG.md +++ b/packages/tron-wallet-snap/CHANGELOG.md @@ -13,7 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed -- Fix SUN → USDT swaps routed through Rango and SunSwap displaying a zero SUN amount in transaction activity ([#]()) +- Fix SUN → USDT swaps routed through Rango and SunSwap displaying a zero SUN amount in transaction activity ([#134](https://github.com/MetaMask/internal-snaps/pull/134)) ## [3.0.0] From dbe89f599f3f8beff692c4fcfb41e8c458480e86 Mon Sep 17 00:00:00 2001 From: gabrieledm Date: Thu, 6 Aug 2026 16:42:28 +0200 Subject: [PATCH 3/4] chore: shasum --- packages/solana-wallet-snap/snap.manifest.json | 2 +- packages/tron-wallet-snap/snap.manifest.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/solana-wallet-snap/snap.manifest.json b/packages/solana-wallet-snap/snap.manifest.json index ba4fbd816..b9f19c6eb 100644 --- a/packages/solana-wallet-snap/snap.manifest.json +++ b/packages/solana-wallet-snap/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/internal-snaps.git" }, "source": { - "shasum": "EmQFdIbfOGX+rDDiptegsY6jedzz3nsP2O/st22VoDo=", + "shasum": "9kihzA0rHUzyWqMFvbNw/n31yzBgDIUS+bvuzazn7fI=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/tron-wallet-snap/snap.manifest.json b/packages/tron-wallet-snap/snap.manifest.json index c42c35877..c920f0326 100644 --- a/packages/tron-wallet-snap/snap.manifest.json +++ b/packages/tron-wallet-snap/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/internal-snaps.git" }, "source": { - "shasum": "zLt5SflwRneLbqBa7iNTEZX1A/rcV6P/PfjdUDRyYLI=", + "shasum": "KCC7LHz1VWs64DaB69D03k0iqfqboDObf+D3MrzKsbg=", "location": { "npm": { "filePath": "dist/bundle.js", From c750f7d35bf78b657349065f68f400cb9cf3cad0 Mon Sep 17 00:00:00 2001 From: gabrieledm Date: Fri, 7 Aug 2026 13:24:37 +0200 Subject: [PATCH 4/4] chore: shasum --- packages/tron-wallet-snap/snap.manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tron-wallet-snap/snap.manifest.json b/packages/tron-wallet-snap/snap.manifest.json index 6fd064a07..8b0d299ab 100644 --- a/packages/tron-wallet-snap/snap.manifest.json +++ b/packages/tron-wallet-snap/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/internal-snaps.git" }, "source": { - "shasum": "uwOWbk6DBWTJPBQXI7o/eQwIxxwd9IcdqEYc1y1xszs=", + "shasum": "YkMR0S5rmTx8sxFl0lw0zgciTNO55gtSrLdAsxNggWo=", "location": { "npm": { "filePath": "dist/bundle.js",