diff --git a/apps/explorer/src/components/transaction-blocks-for-address/TransactionBlocksForAddress.tsx b/apps/explorer/src/components/transaction-blocks-for-address/TransactionBlocksForAddress.tsx index 0011d8cc80f..72c9eef714a 100644 --- a/apps/explorer/src/components/transaction-blocks-for-address/TransactionBlocksForAddress.tsx +++ b/apps/explorer/src/components/transaction-blocks-for-address/TransactionBlocksForAddress.tsx @@ -110,7 +110,7 @@ export function TransactionBlocksForAddress({ } as TransactionFilter); const currentPage = currentPageState[filterValue]; - const tableColumns = generateTransactionsTableColumns(); + const tableColumns = generateTransactionsTableColumns(address); return ( diff --git a/apps/explorer/src/components/transactions/TransactionsForAddress.tsx b/apps/explorer/src/components/transactions/TransactionsForAddress.tsx index 7e9cc13268b..49bdde74f4a 100644 --- a/apps/explorer/src/components/transactions/TransactionsForAddress.tsx +++ b/apps/explorer/src/components/transactions/TransactionsForAddress.tsx @@ -72,7 +72,7 @@ export function TransactionsForAddressTable({ ); } - const tableColumns = generateTransactionsTableColumns(); + const tableColumns = generateTransactionsTableColumns(address); const hasTxns = data?.length > 0; if (!hasTxns) { @@ -122,6 +122,7 @@ export function TransactionsForAddress({ address }: TransactionsForAddressProps) options: { showEffects: true, showInput: true, + showBalanceChanges: true, }, cursor, limit, diff --git a/apps/explorer/src/hooks/useGetTransactionBlocks.ts b/apps/explorer/src/hooks/useGetTransactionBlocks.ts index 682d45e0046..0c9f80ce576 100644 --- a/apps/explorer/src/hooks/useGetTransactionBlocks.ts +++ b/apps/explorer/src/hooks/useGetTransactionBlocks.ts @@ -33,6 +33,7 @@ export function useGetTransactionBlocks( options: { showEffects: true, showInput: true, + showBalanceChanges: true, }, }), initialPageParam: null, diff --git a/apps/explorer/src/lib/ui/utils/generateTransactionsTableColumns.tsx b/apps/explorer/src/lib/ui/utils/generateTransactionsTableColumns.tsx index b05c414288b..27ddd0fdc3f 100644 --- a/apps/explorer/src/lib/ui/utils/generateTransactionsTableColumns.tsx +++ b/apps/explorer/src/lib/ui/utils/generateTransactionsTableColumns.tsx @@ -14,8 +14,10 @@ import { getElapsedTime } from '~/pages/epochs/utils'; /** * Generate table columns renderers for the transactions data. */ -export function generateTransactionsTableColumns(): ColumnDef[] { - return [ +export function generateTransactionsTableColumns( + address?: string, +): ColumnDef[] { + const columns: ColumnDef[] = [ { header: 'Digest', accessorKey: 'digest', @@ -65,6 +67,53 @@ export function generateTransactionsTableColumns(): ColumnDef { + const balanceChanges = getValue(); + if (!balanceChanges) { + return ( + + -- + + ); + } + const balanceChange = balanceChanges.find( + (change) => + change.owner && + typeof change.owner === 'object' && + 'AddressOwner' in change.owner && + change.owner.AddressOwner === address && + change.coinType === '0x2::iota::IOTA', + ); + if (!balanceChange) { + return ( + + -- + + ); + } + const amount = balanceChange.amount; + const formatted = formatBalance( + Math.abs(Number(amount)) / Number(NANOS_PER_IOTA), + 0, + CoinFormat.Rounded, + ); + const sign = Number(amount) >= 0 ? '+' : '-'; + return ( + + {sign + formatted} + + ); + }, + }); + } + + columns.push( { header: 'Gas', accessorKey: 'effects', @@ -102,5 +151,7 @@ export function generateTransactionsTableColumns(): ColumnDef