diff --git a/src/features/accounts/components/account-activity-tabs.tsx b/src/features/accounts/components/account-activity-tabs.tsx index 055b446c3..710b741c2 100644 --- a/src/features/accounts/components/account-activity-tabs.tsx +++ b/src/features/accounts/components/account-activity-tabs.tsx @@ -4,6 +4,7 @@ import { useMemo } from 'react' import { AccountAssetsHeld } from './account-assets-held' import { Account } from '../models' import { AccountTransactionHistory } from './account-transaction-history' +import { AccountLiveTransactions } from './account-live-transactions' import { accountActivityLabel, accountLiveTransactionsTabId, @@ -34,7 +35,7 @@ export function AccountActivityTabs({ account }: Props) { { id: accountLiveTransactionsTabId, label: accountLiveTransactionsTabLabel, - children: '', + children: , }, { id: accountHistoricalTransactionsTabId, diff --git a/src/features/accounts/components/account-live-transactions.tsx b/src/features/accounts/components/account-live-transactions.tsx new file mode 100644 index 000000000..c49a794a4 --- /dev/null +++ b/src/features/accounts/components/account-live-transactions.tsx @@ -0,0 +1,25 @@ +import { LiveTransactionsTable } from '@/features/transactions/components/live-transactions-table' +import { TransactionResult } from '@algorandfoundation/algokit-utils/types/indexer' +import { useCallback } from 'react' +import { Address } from '../data/types' +import { getAddressesForTransaction } from '../utils/get-account-address-for-transactions' +import { InnerTransaction, Transaction } from '@/features/transactions/models' +import { getAccountTransactionsTableSubRows } from '../utils/get-account-transactions-table-sub-rows' +import { transactionsTableColumns } from '@/features/transactions/components/transactions-table-columns' + +type Props = { + address: Address +} + +export function AccountLiveTransactions({ address }: Props) { + const filter = useCallback( + (transactionResult: TransactionResult) => { + const addressesForTransaction = getAddressesForTransaction(transactionResult) + return addressesForTransaction.includes(address) + }, + [address] + ) + + const getSubRows = useCallback((row: Transaction | InnerTransaction) => getAccountTransactionsTableSubRows(address, row), [address]) + return +} diff --git a/src/features/accounts/components/account-transaction-history.tsx b/src/features/accounts/components/account-transaction-history.tsx index c664fbdb1..b92509142 100644 --- a/src/features/accounts/components/account-transaction-history.tsx +++ b/src/features/accounts/components/account-transaction-history.tsx @@ -1,7 +1,10 @@ import { LazyLoadDataTable } from '@/features/common/components/lazy-load-data-table' import { Address } from '../data/types' import { useFetchNextAccountTransactionPage } from '../data/account-transaction-history' -import { accountTransactionsTableColumns } from './account-transaction-table-columns' +import { useCallback } from 'react' +import { getAccountTransactionsTableSubRows } from '../utils/get-account-transactions-table-sub-rows' +import { InnerTransaction, Transaction } from '@/features/transactions/models' +import { transactionsTableColumns } from '@/features/transactions/components/transactions-table-columns' type Props = { address: Address @@ -9,6 +12,7 @@ type Props = { export function AccountTransactionHistory({ address }: Props) { const fetchNextPage = useFetchNextAccountTransactionPage(address) + const getSubRows = useCallback((row: Transaction | InnerTransaction) => getAccountTransactionsTableSubRows(address, row), [address]) - return + return } diff --git a/src/features/accounts/components/account-transaction-table-columns.tsx b/src/features/accounts/components/account-transaction-table-columns.tsx deleted file mode 100644 index 20c4201a2..000000000 --- a/src/features/accounts/components/account-transaction-table-columns.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import { InnerTransaction, Transaction, TransactionType } from '@/features/transactions/models' -import { cn } from '@/features/common/utils' -import { ellipseAddress } from '@/utils/ellipse-address' -import { ColumnDef } from '@tanstack/react-table' -import { DisplayAlgo } from '@/features/common/components/display-algo' -import { DisplayAssetAmount } from '@/features/common/components/display-asset-amount' -import { TransactionLink } from '@/features/transactions/components/transaction-link' -import { ellipseId } from '@/utils/ellipse-id' -import { asTo } from '@/features/common/mappers/to' - -export const accountTransactionsTableColumns: ColumnDef[] = [ - { - header: 'Transaction Id', - accessorFn: (transaction) => transaction, - cell: (c) => { - const transaction = c.getValue() - return 'innerId' in transaction ? ( - - {ellipseId(transaction.id)} - (Inner) - - ) : ( - - ) - }, - }, - { - header: 'Round', - accessorKey: 'confirmedRound', - }, - { - accessorKey: 'sender', - header: 'From', - cell: (c) => ellipseAddress(c.getValue()), - }, - { - header: 'To', - accessorFn: asTo, - }, - { - accessorKey: 'type', - header: 'Type', - }, - { - header: 'Amount', - accessorFn: (transaction) => transaction, - cell: (c) => { - const transaction = c.getValue() - if (transaction.type === TransactionType.Payment) return - if (transaction.type === TransactionType.AssetTransfer) - return - }, - }, -] diff --git a/src/features/accounts/data/account-transaction-history.ts b/src/features/accounts/data/account-transaction-history.ts index 86bea87cb..6114ec3c7 100644 --- a/src/features/accounts/data/account-transaction-history.ts +++ b/src/features/accounts/data/account-transaction-history.ts @@ -6,9 +6,8 @@ import { JotaiStore } from '@/features/common/data/types' import { createTransactionsAtom, transactionResultsAtom } from '@/features/transactions/data' import { atomEffect } from 'jotai-effect' import { atom, useStore } from 'jotai' -import { extractTransactionsForAccount } from '../utils/extract-transaction-for-account' -const fetchAccountTransactionResults = async (address: Address, pageSize: number, nextPageToken?: string) => { +const getAccountTransactionResults = async (address: Address, pageSize: number, nextPageToken?: string) => { const results = (await indexer .searchForTransactions() .address(address) @@ -41,16 +40,16 @@ const createSyncEffect = (transactionResults: TransactionResult[]) => { }) } -const creatAccountTransactionAtom = (store: JotaiStore, address: Address, pageSize: number, nextPageToken?: string) => { +const createAccountTransactionAtom = (store: JotaiStore, address: Address, pageSize: number, nextPageToken?: string) => { return atom(async (get) => { - const { transactionResults, nextPageToken: newNextPageToken } = await fetchAccountTransactionResults(address, pageSize, nextPageToken) + const { transactionResults, nextPageToken: newNextPageToken } = await getAccountTransactionResults(address, pageSize, nextPageToken) get(createSyncEffect(transactionResults)) const transactions = await get(createTransactionsAtom(store, transactionResults)) - const transactionsForAccount = transactions.flatMap((transaction) => extractTransactionsForAccount(transaction, address)) + return { - rows: transactionsForAccount, + rows: transactions, nextPageToken: newNextPageToken, } }) @@ -60,6 +59,6 @@ export const useFetchNextAccountTransactionPage = (address: Address) => { const store = useStore() return useMemo(() => { - return (pageSize: number, nextPageToken?: string) => creatAccountTransactionAtom(store, address, pageSize, nextPageToken) + return (pageSize: number, nextPageToken?: string) => createAccountTransactionAtom(store, address, pageSize, nextPageToken) }, [store, address]) } diff --git a/src/features/accounts/utils/extract-transaction-for-account.ts b/src/features/accounts/utils/extract-transaction-for-account.ts deleted file mode 100644 index 0d9121b0c..000000000 --- a/src/features/accounts/utils/extract-transaction-for-account.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { Transaction, TransactionType } from '@/features/transactions/models' -import { flattenInnerTransactions } from '@/utils/flatten-inner-transactions' -import { Address } from '../data/types' - -export const extractTransactionsForAccount = (transaction: Transaction, address: Address) => { - const flattenedTransactions = flattenInnerTransactions(transaction) - const results = [] - - for (const { transaction } of flattenedTransactions) { - if (flattenedTransactions.length === 1) { - results.push(transaction) - } else { - if (transaction.sender === address) { - results.push(transaction) - } else if ( - (transaction.type === TransactionType.Payment || transaction.type === TransactionType.AssetTransfer) && - (transaction.receiver === address || transaction.closeRemainder?.to === address) - ) { - results.push(transaction) - } else if ( - transaction.type === TransactionType.AssetConfig && - (transaction.manager === address || - transaction.clawback === address || - transaction.reserve === address || - transaction.freeze === address) - ) { - results.push(transaction) - } else if (transaction.type === TransactionType.AssetTransfer && transaction.clawbackFrom === address) { - results.push(transaction) - } else if (transaction.type === TransactionType.AssetFreeze && transaction.address === address) { - results.push(transaction) - } - } - } - return results -} diff --git a/src/features/accounts/utils/get-account-address-for-transactions.ts b/src/features/accounts/utils/get-account-address-for-transactions.ts new file mode 100644 index 000000000..73219aa58 --- /dev/null +++ b/src/features/accounts/utils/get-account-address-for-transactions.ts @@ -0,0 +1,53 @@ +import algosdk from 'algosdk' +import { TransactionResult } from '@algorandfoundation/algokit-utils/types/indexer' +import { invariant } from '@/utils/invariant' +import { Address } from '../data/types' + +export const getAddressesForTransaction = (transaction: TransactionResult): Address[] => { + const addresses = new Set
() + addresses.add(transaction.sender) + if (transaction['tx-type'] === algosdk.TransactionType.pay) { + invariant(transaction['payment-transaction'], 'payment-transaction is not set') + + addresses.add(transaction['payment-transaction']['receiver']) + if (transaction['payment-transaction']['close-remainder-to']) { + addresses.add(transaction['payment-transaction']['close-remainder-to']) + } + } else if (transaction['tx-type'] === algosdk.TransactionType.axfer) { + invariant(transaction['asset-transfer-transaction'], 'asset-transfer-transaction is not set') + + addresses.add(transaction['asset-transfer-transaction']['receiver']) + if (transaction['asset-transfer-transaction']['close-to']) { + addresses.add(transaction['asset-transfer-transaction']['close-to']) + } + } else if (transaction['tx-type'] === algosdk.TransactionType.afrz) { + invariant(transaction['asset-freeze-transaction'], 'asset-freeze-transaction is not set') + + addresses.add(transaction['asset-freeze-transaction']['address']) + } else if (transaction['tx-type'] === algosdk.TransactionType.acfg) { + invariant(transaction['asset-config-transaction'], 'asset-config-transaction is not set') + if (transaction['asset-config-transaction'].params?.manager) { + addresses.add(transaction['asset-config-transaction'].params?.manager) + } + if (transaction['asset-config-transaction'].params?.reserve) { + addresses.add(transaction['asset-config-transaction'].params?.reserve) + } + if (transaction['asset-config-transaction'].params?.freeze) { + addresses.add(transaction['asset-config-transaction'].params?.freeze) + } + if (transaction['asset-config-transaction'].params?.clawback) { + addresses.add(transaction['asset-config-transaction'].params?.clawback) + } + } else if (transaction['tx-type'] === algosdk.TransactionType.appl) { + invariant(transaction['application-transaction'], 'application-transaction is not set') + + const innerTransactions = transaction['inner-txns'] ?? [] + for (const innerTxn of innerTransactions) { + const innerAddresses = getAddressesForTransaction(innerTxn) + for (const address of innerAddresses) { + addresses.add(address) + } + } + } + return Array.from(addresses) +} diff --git a/src/features/accounts/utils/get-account-transactions-table-sub-rows.ts b/src/features/accounts/utils/get-account-transactions-table-sub-rows.ts new file mode 100644 index 000000000..6848fb8d8 --- /dev/null +++ b/src/features/accounts/utils/get-account-transactions-table-sub-rows.ts @@ -0,0 +1,28 @@ +import { Transaction, InnerTransaction, TransactionType } from '@/features/transactions/models' +import { flattenInnerTransactions } from '@/utils/flatten-inner-transactions' +import { Address } from '../data/types' + +export const getAccountTransactionsTableSubRows = (address: Address, transaction: Transaction | InnerTransaction) => { + if (transaction.type !== TransactionType.ApplicationCall || transaction.innerTransactions.length === 0) { + return [] + } + + return transaction.innerTransactions.filter((innerTransaction) => { + const txns = flattenInnerTransactions(innerTransaction) + return txns.some(({ transaction }) => { + return ( + transaction.sender === address || + (transaction.type === TransactionType.Payment && + (transaction.receiver === address || transaction.closeRemainder?.to === address)) || + (transaction.type === TransactionType.AssetTransfer && + (transaction.receiver === address || transaction.closeRemainder?.to === address || transaction.clawbackFrom === address)) || + (transaction.type === TransactionType.AssetConfig && + (transaction.manager === address || + transaction.clawback === address || + transaction.reserve === address || + transaction.freeze === address)) || + (transaction.type === TransactionType.AssetFreeze && transaction.address === address) + ) + }) + }) +} diff --git a/src/features/applications/components/application-live-transactions.tsx b/src/features/applications/components/application-live-transactions.tsx index 444732b40..c41b2725f 100644 --- a/src/features/applications/components/application-live-transactions.tsx +++ b/src/features/applications/components/application-live-transactions.tsx @@ -4,9 +4,9 @@ import { LiveTransactionsTable } from '@/features/transactions/components/live-t import { TransactionResult } from '@algorandfoundation/algokit-utils/types/indexer' import { flattenTransactionResult } from '@/features/transactions/utils/flatten-transaction-result' import { TransactionType as AlgoSdkTransactionType } from 'algosdk' -import { applicationTransactionsTableColumns } from '../utils/application-transactions-table-columns' import { Transaction, InnerTransaction } from '@/features/transactions/models' import { getApplicationTransactionsTableSubRows } from '../utils/get-application-transactions-table-sub-rows' +import { transactionsTableColumns } from '@/features/transactions/components/transactions-table-columns' type Props = { applicationId: ApplicationId @@ -28,5 +28,5 @@ export function ApplicationLiveTransactions({ applicationId }: Props) { [applicationId] ) - return + return } diff --git a/src/features/applications/components/application-transaction-history.tsx b/src/features/applications/components/application-transaction-history.tsx index 15c78a848..a65faab17 100644 --- a/src/features/applications/components/application-transaction-history.tsx +++ b/src/features/applications/components/application-transaction-history.tsx @@ -1,10 +1,10 @@ import { LazyLoadDataTable } from '@/features/common/components/lazy-load-data-table' import { ApplicationId } from '../data/types' import { useFetchNextApplicationTransactionsPage } from '../data/application-transaction-history' -import { applicationTransactionsTableColumns } from '../utils/application-transactions-table-columns' import { InnerTransaction, Transaction } from '@/features/transactions/models' import { useCallback } from 'react' import { getApplicationTransactionsTableSubRows } from '../utils/get-application-transactions-table-sub-rows' +import { transactionsTableColumns } from '@/features/transactions/components/transactions-table-columns' type Props = { applicationId: ApplicationId @@ -22,5 +22,5 @@ export function ApplicationTransactionHistory({ applicationId }: Props) { [applicationId] ) - return + return } diff --git a/src/features/applications/data/application-boxes.ts b/src/features/applications/data/application-boxes.ts index e9f429c91..feaef775f 100644 --- a/src/features/applications/data/application-boxes.ts +++ b/src/features/applications/data/application-boxes.ts @@ -6,7 +6,7 @@ import { ApplicationBox, ApplicationBoxSummary } from '../models' import { Buffer } from 'buffer' import { loadable } from 'jotai/utils' -const fetchApplicationBoxes = async (applicationId: ApplicationId, pageSize: number, nextPageToken?: string) => { +const getApplicationBoxes = async (applicationId: ApplicationId, pageSize: number, nextPageToken?: string) => { const results = await indexer .searchForApplicationBoxes(applicationId) .nextToken(nextPageToken ?? '') @@ -19,9 +19,12 @@ const fetchApplicationBoxes = async (applicationId: ApplicationId, pageSize: num } as const } +const getApplicationBox = (applicationId: ApplicationId, boxName: string) => + indexer.lookupApplicationBoxByIDandName(applicationId, Buffer.from(boxName, 'base64')).do() + const createApplicationBoxesAtom = (applicationId: ApplicationId, pageSize: number, nextPageToken?: string) => { return atom(async () => { - const { boxes, nextPageToken: newNextPageToken } = await fetchApplicationBoxes(applicationId, pageSize, nextPageToken) + const { boxes, nextPageToken: newNextPageToken } = await getApplicationBoxes(applicationId, pageSize, nextPageToken) return { rows: boxes, @@ -39,7 +42,7 @@ export const useFetchNextApplicationBoxPage = (applicationId: ApplicationId) => export const useApplicationBox = (applicationId: ApplicationId, boxName: string) => { return useMemo(() => { return atom(async () => { - const box = await indexer.lookupApplicationBoxByIDandName(applicationId, Buffer.from(boxName, 'base64')).do() + const box = await getApplicationBox(applicationId, boxName) return box.get_obj_for_encoding(false) as ApplicationBox }) }, [applicationId, boxName]) diff --git a/src/features/applications/data/application-transaction-history.ts b/src/features/applications/data/application-transaction-history.ts index 13cc552f0..909cc3aae 100644 --- a/src/features/applications/data/application-transaction-history.ts +++ b/src/features/applications/data/application-transaction-history.ts @@ -7,7 +7,7 @@ import { createTransactionsAtom, transactionResultsAtom } from '@/features/trans import { atomEffect } from 'jotai-effect' import { atom, useStore } from 'jotai' -const fetchApplicationTransactionResults = async (applicationID: ApplicationId, pageSize: number, nextPageToken?: string) => { +const getApplicationTransactionResults = async (applicationID: ApplicationId, pageSize: number, nextPageToken?: string) => { const results = (await indexer .searchForTransactions() .applicationID(applicationID) @@ -42,7 +42,7 @@ const createSyncEffect = (transactionResults: TransactionResult[]) => { const createApplicationTransactionsAtom = (store: JotaiStore, applicationID: ApplicationId, pageSize: number, nextPageToken?: string) => { return atom(async (get) => { - const { transactionResults, nextPageToken: newNextPageToken } = await fetchApplicationTransactionResults( + const { transactionResults, nextPageToken: newNextPageToken } = await getApplicationTransactionResults( applicationID, pageSize, nextPageToken diff --git a/src/features/applications/data/program-teal.ts b/src/features/applications/data/program-teal.ts index 6af9793e8..f0d571b1b 100644 --- a/src/features/applications/data/program-teal.ts +++ b/src/features/applications/data/program-teal.ts @@ -5,9 +5,9 @@ import { useMemo } from 'react' import { Buffer } from 'buffer' export const useProgramTeal = (base64Program: string) => { - const [tealAtom, fetchTealAtom] = useMemo(() => { + const [tealAtom, getTealAtom] = useMemo(() => { const tealAtom = atom | undefined>(undefined) - const fetchTealAtom = atom(null, (get, set) => { + const getTealAtom = atom(null, (get, set) => { if (get(tealAtom)) { return } @@ -21,8 +21,8 @@ export const useProgramTeal = (base64Program: string) => { .then((result) => result.result as string) ) }) - return [tealAtom, fetchTealAtom] as const + return [tealAtom, getTealAtom] as const }, [base64Program]) - return [useAtomValue(loadable(tealAtom)), useSetAtom(fetchTealAtom)] as const + return [useAtomValue(loadable(tealAtom)), useSetAtom(getTealAtom)] as const } diff --git a/src/features/applications/utils/application-transactions-table-columns.tsx b/src/features/applications/utils/application-transactions-table-columns.tsx deleted file mode 100644 index 933584483..000000000 --- a/src/features/applications/utils/application-transactions-table-columns.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import { InnerTransaction, Transaction, TransactionType } from '@/features/transactions/models' -import { cn } from '@/features/common/utils' -import { ellipseAddress } from '@/utils/ellipse-address' -import { ColumnDef } from '@tanstack/react-table' -import { DisplayAlgo } from '@/features/common/components/display-algo' -import { TransactionLink } from '@/features/transactions/components/transaction-link' -import { asTo } from '@/features/common/mappers/to' -import { InnerTransactionLink } from '@/features/transactions/components/inner-transaction-link' - -const indentationWidth = 20 - -export const applicationTransactionsTableColumns: ColumnDef[] = [ - { - header: 'Transaction Id', - accessorFn: (transaction) => transaction, - cell: ({ row, getValue }) => { - const transaction = getValue() - return ( -
- {'innerId' in transaction ? ( - - ) : ( - - )} -
- ) - }, - }, - { - header: 'Round', - accessorKey: 'confirmedRound', - }, - { - accessorKey: 'sender', - header: 'From', - cell: (c) => ellipseAddress(c.getValue()), - }, - { - header: 'To', - accessorFn: asTo, - }, - { - header: 'Fee', - accessorFn: (transaction) => transaction, - cell: (c) => { - const transaction = c.getValue() - if (transaction.type === TransactionType.ApplicationCall) - return - }, - }, -] diff --git a/src/features/assets/components/asset-live-transactions.tsx b/src/features/assets/components/asset-live-transactions.tsx index 0d4e3d039..2c493e78c 100644 --- a/src/features/assets/components/asset-live-transactions.tsx +++ b/src/features/assets/components/asset-live-transactions.tsx @@ -1,11 +1,11 @@ import { AssetId } from '../data/types' import { useCallback } from 'react' import { LiveTransactionsTable } from '@/features/transactions/components/live-transactions-table' -import { assetTransactionsTableColumns } from '../utils/asset-transactions-table-columns' import { TransactionResult } from '@algorandfoundation/algokit-utils/types/indexer' import { getAssetIdsForTransaction } from '@/features/transactions/utils/get-asset-ids-for-transaction' import { InnerTransaction, Transaction } from '@/features/transactions/models' import { getAssetTransactionsTableSubRows } from '../utils/get-asset-transactions-table-sub-rows' +import { transactionsTableColumns } from '@/features/transactions/components/transactions-table-columns' type Props = { assetId: AssetId @@ -20,5 +20,5 @@ export function AssetLiveTransactions({ assetId }: Props) { [assetId] ) const getSubRows = useCallback((row: Transaction | InnerTransaction) => getAssetTransactionsTableSubRows(assetId, row), [assetId]) - return + return } diff --git a/src/features/assets/components/asset-transaction-history.tsx b/src/features/assets/components/asset-transaction-history.tsx index 9e38ee7cd..d42eaa76a 100644 --- a/src/features/assets/components/asset-transaction-history.tsx +++ b/src/features/assets/components/asset-transaction-history.tsx @@ -1,10 +1,10 @@ import { LazyLoadDataTable } from '@/features/common/components/lazy-load-data-table' import { AssetId } from '../data/types' import { useFetchNextAssetTransactionsPage } from '../data/asset-transaction-history' -import { assetTransactionsTableColumns } from '../utils/asset-transactions-table-columns' import { Transaction, InnerTransaction } from '@/features/transactions/models' import { useCallback } from 'react' import { getAssetTransactionsTableSubRows } from '../utils/get-asset-transactions-table-sub-rows' +import { transactionsTableColumns } from '@/features/transactions/components/transactions-table-columns' type Props = { assetId: AssetId @@ -14,5 +14,5 @@ export function AssetTransactionHistory({ assetId }: Props) { const fetchNextPage = useFetchNextAssetTransactionsPage(assetId) const getSubRows = useCallback((row: Transaction | InnerTransaction) => getAssetTransactionsTableSubRows(assetId, row), [assetId]) - return + return } diff --git a/src/features/assets/data/asset-transaction-history.ts b/src/features/assets/data/asset-transaction-history.ts index f5f41078e..0d6a85b93 100644 --- a/src/features/assets/data/asset-transaction-history.ts +++ b/src/features/assets/data/asset-transaction-history.ts @@ -7,7 +7,7 @@ import { createTransactionsAtom, transactionResultsAtom } from '@/features/trans import { atomEffect } from 'jotai-effect' import { atom, useStore } from 'jotai' -const fetchAssetTransactionResults = async (assetId: AssetId, pageSize: number, nextPageToken?: string) => { +const getAssetTransactionResults = async (assetId: AssetId, pageSize: number, nextPageToken?: string) => { const results = (await indexer .searchForTransactions() .assetID(assetId) @@ -42,7 +42,7 @@ const createSyncEffect = (transactionResults: TransactionResult[]) => { const createAssetTransactionsAtom = (store: JotaiStore, assetId: AssetId, pageSize: number, nextPageToken?: string) => { return atom(async (get) => { - const { transactionResults, nextPageToken: newNextPageToken } = await fetchAssetTransactionResults(assetId, pageSize, nextPageToken) + const { transactionResults, nextPageToken: newNextPageToken } = await getAssetTransactionResults(assetId, pageSize, nextPageToken) get(createSyncEffect(transactionResults)) diff --git a/src/features/assets/utils/asset-transactions-table-columns.tsx b/src/features/transactions/components/transactions-table-columns.tsx similarity index 79% rename from src/features/assets/utils/asset-transactions-table-columns.tsx rename to src/features/transactions/components/transactions-table-columns.tsx index 6b4655440..d2ef113bb 100644 --- a/src/features/assets/utils/asset-transactions-table-columns.tsx +++ b/src/features/transactions/components/transactions-table-columns.tsx @@ -1,13 +1,16 @@ import { InnerTransaction, Transaction, TransactionType } from '@/features/transactions/models' +import { cn } from '@/features/common/utils' import { ellipseAddress } from '@/utils/ellipse-address' import { ColumnDef } from '@tanstack/react-table' -import { DisplayAssetAmount } from '@/features/common/components/display-asset-amount' +import { DisplayAlgo } from '@/features/common/components/display-algo' import { TransactionLink } from '@/features/transactions/components/transaction-link' import { asTo } from '@/features/common/mappers/to' import { InnerTransactionLink } from '@/features/transactions/components/inner-transaction-link' +import { DisplayAssetAmount } from '@/features/common/components/display-asset-amount' const indentationWidth = 20 -export const assetTransactionsTableColumns: ColumnDef[] = [ + +export const transactionsTableColumns: ColumnDef[] = [ { header: 'Transaction Id', accessorFn: (transaction) => transaction, @@ -33,8 +36,8 @@ export const assetTransactionsTableColumns: ColumnDef ellipseAddress(c.getValue()), }, { @@ -42,16 +45,19 @@ export const assetTransactionsTableColumns: ColumnDef transaction, cell: (c) => { const transaction = c.getValue() - if (transaction.type === TransactionType.AssetTransfer) + if (transaction.type === TransactionType.Payment) { + return + } else if (transaction.type === TransactionType.AssetTransfer) { return + } }, }, ] diff --git a/src/features/transactions/components/transactions-table.tsx b/src/features/transactions/components/transactions-table.tsx index 10a43f896..adc6602c7 100644 --- a/src/features/transactions/components/transactions-table.tsx +++ b/src/features/transactions/components/transactions-table.tsx @@ -23,7 +23,7 @@ export const transactionSenderLabel = 'Sender' export const transactionReceiverLabel = 'Receiver' export const transactionAmountLabel = 'Amount' -export const transactionsTableColumns: ColumnDef[] = [ +const transactionsTableColumns: ColumnDef[] = [ { header: 'Transaction Id', accessorFn: (item) => item,