Skip to content

Commit 3dbdfe4

Browse files
brtkxfionnachan
authored andcommitted
fixes
1 parent 4b9a822 commit 3dbdfe4

File tree

1 file changed

+52
-15
lines changed

1 file changed

+52
-15
lines changed

packages/arb-token-bridge-ui/src/components/TransactionHistory/useIndexerHistory.ts

Lines changed: 52 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,7 @@ import { Address } from 'viem'
33
import useSWRImmutable from 'swr/immutable'
44
import useSWR from 'swr'
55
import { getProviderForChainId } from '@/token-bridge-sdk/utils'
6-
import {
7-
useArbitrumIndexer,
8-
type Transfer as IndexerTransfer
9-
} from '../../../../indexer-provider'
6+
import { useArbitrumIndexer } from '../../../../indexer-provider'
107
import { AssetType } from '../../hooks/arbTokenBridge.types'
118
import { DepositStatus, MergedTransaction } from '../../state/app/state'
129
import { BigNumber, utils } from 'ethers'
@@ -19,6 +16,30 @@ import { isExperimentalFeatureEnabled } from '../../util'
1916
import { useTokensFromLists } from '../TransferPanel/TokenSearchUtils'
2017
import { fetchErc20Data } from '../../util/TokenUtils'
2118

19+
type PartialTransfer = {
20+
fromAddress: string
21+
toAddress: string
22+
timestamp: bigint
23+
executionTimestamp: bigint
24+
status: string
25+
amount: bigint
26+
txHash: string
27+
childChainId: number
28+
parentChainId: number
29+
}
30+
31+
type EthIndexerTransfer = PartialTransfer & {
32+
type: 'ETH'
33+
tokenAddress: undefined
34+
}
35+
36+
type Erc20IndexerTransfer = PartialTransfer & {
37+
type: 'ERC20'
38+
tokenAddress: string
39+
}
40+
41+
type IndexerTransfer = EthIndexerTransfer | Erc20IndexerTransfer
42+
2243
function getIndexerTransferStatus(tx: IndexerTransfer) {
2344
switch (tx.status) {
2445
case 'PARENT_CHAIN_CONFIRMED':
@@ -50,14 +71,24 @@ type TokenDetails = {
5071
decimals: number
5172
}
5273

53-
function transformIndexerTransfer<T extends IndexerTransfer['type']>({
54-
tx,
55-
tokenDetails
56-
}: {
74+
function transformIndexerTransfer(params: {
75+
tx: EthIndexerTransfer
76+
tokenDetails?: undefined
77+
}): MergedTransaction
78+
79+
function transformIndexerTransfer(params: {
80+
tx: Erc20IndexerTransfer
81+
tokenDetails: TokenDetails
82+
}): MergedTransaction
83+
84+
function transformIndexerTransfer(params: {
5785
tx: IndexerTransfer
58-
} & (T extends 'ERC20'
59-
? { tokenDetails: TokenDetails }
60-
: { tokenDetails?: undefined })): MergedTransaction {
86+
tokenDetails?: TokenDetails | undefined
87+
}): MergedTransaction {
88+
const { tx } = params
89+
const tokenDetails =
90+
'tokenDetails' in params ? params.tokenDetails : undefined
91+
6192
return {
6293
sender: tx.fromAddress,
6394
destination: tx.toAddress,
@@ -100,7 +131,11 @@ export const useIndexerHistory = (
100131
useArbitrumIndexer(isIndexerEnabled ? _address : '')
101132

102133
const indexerTransactions = useMemo(() => {
103-
return [...pendingTransfers, ...completedTransfers]
134+
return [
135+
...pendingTransfers,
136+
...completedTransfers
137+
// move types to indexer
138+
] as never as IndexerTransfer[]
104139
}, [pendingTransfers, completedTransfers])
105140

106141
// todo: cache
@@ -142,8 +177,8 @@ export const useIndexerHistory = (
142177
: null,
143178
([_indexerTransactions, _tokenDetailsMap]) => {
144179
return _indexerTransactions.map(tx => {
145-
if (!tx.tokenAddress) {
146-
return transformIndexerTransfer<'ETH'>({ tx })
180+
if (tx.type === 'ETH') {
181+
return transformIndexerTransfer({ tx })
147182
}
148183

149184
const tokenDetails = _tokenDetailsMap[tx.tokenAddress]
@@ -157,7 +192,9 @@ export const useIndexerHistory = (
157192
return transformIndexerTransfer({ tx, tokenDetails })
158193
})
159194
},
160-
{ onSuccess: data => data.sort(sortByTimestampDescending) }
195+
{
196+
onSuccess: data => data.sort(sortByTimestampDescending)
197+
}
161198
)
162199

163200
return {

0 commit comments

Comments
 (0)