@@ -20,9 +20,11 @@ import {
20
20
USER_TRANSACTIONS_V2_WITH_POOL ,
21
21
} from 'src/modules/history/v2-user-history-query' ;
22
22
import { USER_TRANSACTIONS_V3 } from 'src/modules/history/v3-user-history-query' ;
23
+ import { ERC20Service } from 'src/services/Erc20Service' ;
23
24
import { useRootStore } from 'src/store/root' ;
24
25
import { queryKeysFactory } from 'src/ui-config/queries' ;
25
26
import { TOKEN_LIST } from 'src/ui-config/TokenList' ;
27
+ import { getProvider } from 'src/utils/marketsAndNetworksConfig' ;
26
28
import { useShallow } from 'zustand/shallow' ;
27
29
28
30
export const applyTxHistoryFilters = ( {
@@ -221,17 +223,44 @@ export const useTransactionHistory = ({ isFilterActive }: { isFilterActive: bool
221
223
)
222
224
) . filter ( ( order ) => order !== null ) ;
223
225
224
- return filteredCowAaveOrders
225
- . map < TransactionHistoryItemUnion | null > ( ( order ) => {
226
- const srcToken = TOKEN_LIST . tokens . find (
226
+ return Promise . all (
227
+ filteredCowAaveOrders . map < Promise < TransactionHistoryItemUnion | null > > ( async ( order ) => {
228
+ const erc20Service = new ERC20Service ( getProvider ) ;
229
+
230
+ let srcToken :
231
+ | { address : string ; name : string ; symbol : string ; decimals : number }
232
+ | undefined = TOKEN_LIST . tokens . find (
227
233
( token ) =>
228
234
token . chainId == chainId && token . address . toLowerCase ( ) == order . sellToken . toLowerCase ( )
229
235
) ;
230
- const destToken = TOKEN_LIST . tokens . find (
236
+
237
+ let destToken :
238
+ | { address : string ; name : string ; symbol : string ; decimals : number }
239
+ | undefined = TOKEN_LIST . tokens . find (
231
240
( token ) =>
232
241
token . chainId == chainId && token . address . toLowerCase ( ) == order . buyToken . toLowerCase ( )
233
242
) ;
234
243
244
+ // Custom tokens - only if erc20Service is available
245
+ if ( ! srcToken && erc20Service ) {
246
+ srcToken = await erc20Service
247
+ . getTokenInfo ( order . sellToken , chainId )
248
+ . then ( ( token ) => ( { ...token , underlyingAsset : token . address } ) )
249
+ . catch ( ( ) => undefined ) ;
250
+ }
251
+
252
+ if ( ! destToken && erc20Service ) {
253
+ console . log ( 'Fetching custom token' , order . buyToken ) ;
254
+ destToken = await erc20Service
255
+ . getTokenInfo ( order . buyToken , chainId )
256
+ . then ( ( token ) => ( { ...token , underlyingAsset : token . address } ) )
257
+ . catch ( ( ) => {
258
+ console . log ( 'Error fetching custom token' , order . buyToken ) ;
259
+ return undefined ;
260
+ } ) ;
261
+ }
262
+
263
+ // Otherwise, we can not display it
235
264
if ( ! srcToken || ! destToken ) {
236
265
return null ;
237
266
}
@@ -265,7 +294,7 @@ export const useTransactionHistory = ({ isFilterActive }: { isFilterActive: bool
265
294
chainId : chainId ,
266
295
} ;
267
296
} )
268
- . filter ( ( txn ) => txn !== null ) ;
297
+ ) . then ( ( txns ) => txns . filter ( ( txn ) => txn !== null ) ) ;
269
298
} ;
270
299
271
300
const PAGE_SIZE = 100 ;
0 commit comments