From 681e0cb71bc5d647a05a66c8f35033eb94c3f582 Mon Sep 17 00:00:00 2001 From: Ulisses Ferreira Date: Wed, 26 Aug 2026 14:13:19 +0100 Subject: [PATCH] fix(tron-wallet-snap): balance from the AssetsController is in display format, not raw balance --- packages/tron-wallet-snap/snap.manifest.json | 2 +- .../assets/adapters/CoreAssetsAdapter.test.ts | 4 ++-- .../services/assets/utils/mapControllerAsset.test.ts | 2 +- .../src/services/assets/utils/mapControllerAsset.ts | 11 ++++++++--- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/packages/tron-wallet-snap/snap.manifest.json b/packages/tron-wallet-snap/snap.manifest.json index 0f913d6c3..f17db91d4 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": "1pO58lSrPr77UAfnWKp2vkYda0BjiXybyYrG3SFy7u0=", + "shasum": "y1eBQiM9lDqVQ6wJj1BG3qtDXB45dwC7SdKzYF5YZWo=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/tron-wallet-snap/src/services/assets/adapters/CoreAssetsAdapter.test.ts b/packages/tron-wallet-snap/src/services/assets/adapters/CoreAssetsAdapter.test.ts index 08aa13acd..4413174ea 100644 --- a/packages/tron-wallet-snap/src/services/assets/adapters/CoreAssetsAdapter.test.ts +++ b/packages/tron-wallet-snap/src/services/assets/adapters/CoreAssetsAdapter.test.ts @@ -52,7 +52,7 @@ const emptyAccountResources: AccountResources = { * @param options - Fields to set on the controller asset. * @param options.id - CAIP-19 asset ID. * @param options.chainId - Chain ID. Defaults to Mainnet. - * @param options.amount - Raw balance amount. + * @param options.amount - UI balance amount (with decimals applied). * @param options.symbol - Asset symbol. * @param options.decimals - Asset decimals. * @param options.image - Asset icon URL. @@ -69,7 +69,7 @@ function createControllerAsset(options: { const { id, chainId = Network.Mainnet, - amount = '1000000', + amount = '1', symbol = 'TRX', decimals = 6, image = 'https://example.com/trx.png', diff --git a/packages/tron-wallet-snap/src/services/assets/utils/mapControllerAsset.test.ts b/packages/tron-wallet-snap/src/services/assets/utils/mapControllerAsset.test.ts index 2e997fcaa..7e28a2656 100644 --- a/packages/tron-wallet-snap/src/services/assets/utils/mapControllerAsset.test.ts +++ b/packages/tron-wallet-snap/src/services/assets/utils/mapControllerAsset.test.ts @@ -12,7 +12,7 @@ describe('mapControllerAsset', () => { const asset = { id: unknownAssetId, chainId: Network.Mainnet, - balance: { amount: '1234567' }, + balance: { amount: '1.234567' }, metadata: { type: 'fungible', symbol: 'TKN', diff --git a/packages/tron-wallet-snap/src/services/assets/utils/mapControllerAsset.ts b/packages/tron-wallet-snap/src/services/assets/utils/mapControllerAsset.ts index 57fa305ac..d55786adb 100644 --- a/packages/tron-wallet-snap/src/services/assets/utils/mapControllerAsset.ts +++ b/packages/tron-wallet-snap/src/services/assets/utils/mapControllerAsset.ts @@ -2,11 +2,16 @@ import type { Asset } from '@metamask/assets-controller'; import { Network } from '../../../constants'; import type { AssetEntity } from '../../../entities/assets'; -import { toUiAmount } from '../../../utils/conversion'; +import { toRawAmount } from '../../../utils/conversion'; /** * Maps an AssetsController asset to the Snap's {@link AssetEntity} shape. * + * The AssetsController returns balances in the asset's human-readable unit + * (i.e. with decimals already applied, e.g. TRX rather than Sun), so the + * source amount is used directly as the UI amount and the raw amount is + * derived from it. + * * @param accountId - Keyring account ID. * @param asset - Asset returned by AssetsController. * @returns Mapped asset entity. @@ -27,8 +32,8 @@ export function mapControllerAsset( network: asset.chainId as Network, symbol, decimals, - rawAmount: amount, - uiAmount: toUiAmount(amount, decimals).toString(), + rawAmount: toRawAmount(amount, decimals), + uiAmount: amount, iconUrl, } as AssetEntity; }