Skip to content

Commit 6bf693c

Browse files
committed
changed token balances hooks to optionally remove 0 balance native tokens
1 parent 375d44c commit 6bf693c

File tree

3 files changed

+40
-10
lines changed

3 files changed

+40
-10
lines changed

packages/hooks/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ const { data, isLoading, error } = useGetTokenBalancesSummary(
180180
networks: ['mainnet'],
181181
filter: {
182182
accountAddresses: ['0x0123456789012345678901234567890123456789'],
183-
contractWhitelist: ['0x0123456789012345678901234567890123456789'],
183+
contractWhitelist: ['0x0123456789012345678901234567890123456789'], // If zeroAddress is not included in contractWhitelist, native tokens with a balance of 0 will be filtered out
184184
contractBlacklist: ['0x0000000000000000000000000000000000000000'],
185185
contractStatus: ContractVerificationStatus.VERIFIED,
186186
omitNativeBalances: false
@@ -212,7 +212,7 @@ const { data, isLoading, error } = useGetTokenBalancesDetails(
212212
networks: ['mainnet'],
213213
filter: {
214214
accountAddresses: ['0x0123456789012345678901234567890123456789'],
215-
contractWhitelist: ['0x0123456789012345678901234567890123456789'],
215+
contractWhitelist: ['0x0123456789012345678901234567890123456789'], // If zeroAddress is not included in contractWhitelist, native tokens with a balance of 0 will be filtered out
216216
contractBlacklist: ['0x0000000000000000000000000000000000000000'],
217217
contractStatus: ContractVerificationStatus.VERIFIED,
218218
omitNativeBalances: false

packages/hooks/src/hooks/IndexerGateway/useGetTokenBalancesDetails.ts

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { ContractType, IndexerGateway, SequenceIndexerGateway, TokenBalance } from '@0xsequence/indexer'
22
import { useQuery } from '@tanstack/react-query'
3+
import { zeroAddress } from 'viem'
34

45
import { QUERY_KEYS, time } from '../../constants'
56
import { BalanceHookOptions } from '../../types'
@@ -23,10 +24,24 @@ const getTokenBalancesDetails = async (
2324
}
2425
}
2526

26-
const nativeTokens: TokenBalance[] = res.nativeBalances.flatMap(nativeChainBalance =>
27-
nativeChainBalance.results.map(nativeTokenBalance =>
28-
createNativeTokenBalance(nativeChainBalance.chainId, nativeTokenBalance.accountAddress, nativeTokenBalance.balance)
29-
)
27+
const isNativeContractWhitelisted = getTokenBalancesDetailsArgs.filter.contractWhitelist?.includes(zeroAddress)
28+
29+
const nativeTokens = res.nativeBalances.flatMap(
30+
nativeChainBalance =>
31+
nativeChainBalance.results
32+
.map(nativeTokenBalance => {
33+
if (!isNativeContractWhitelisted) {
34+
if (nativeTokenBalance.balance.toString() === '0') {
35+
return null
36+
}
37+
}
38+
return createNativeTokenBalance(
39+
nativeChainBalance.chainId,
40+
nativeTokenBalance.accountAddress,
41+
nativeTokenBalance.balance
42+
)
43+
})
44+
.filter(Boolean) as TokenBalance[]
3045
)
3146

3247
const tokens: TokenBalance[] = res.balances.flatMap(chainBalance => chainBalance.results)

packages/hooks/src/hooks/IndexerGateway/useGetTokenBalancesSummary.ts

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { ContractType, IndexerGateway, SequenceIndexerGateway, TokenBalance } from '@0xsequence/indexer'
22
import { useQuery } from '@tanstack/react-query'
3+
import { zeroAddress } from 'viem'
34

45
import { QUERY_KEYS, time } from '../../constants'
56
import { BalanceHookOptions } from '../../types'
@@ -23,10 +24,24 @@ const getTokenBalancesSummary = async (
2324
}
2425
}
2526

26-
const nativeTokens: TokenBalance[] = res.nativeBalances.flatMap(nativeChainBalance =>
27-
nativeChainBalance.results.map(nativeTokenBalance =>
28-
createNativeTokenBalance(nativeChainBalance.chainId, nativeTokenBalance.accountAddress, nativeTokenBalance.balance)
29-
)
27+
const isNativeContractWhitelisted = getTokenBalancesSummaryArgs.filter.contractWhitelist?.includes(zeroAddress)
28+
29+
const nativeTokens = res.nativeBalances.flatMap(
30+
nativeChainBalance =>
31+
nativeChainBalance.results
32+
.map(nativeTokenBalance => {
33+
if (!isNativeContractWhitelisted) {
34+
if (nativeTokenBalance.balance.toString() === '0') {
35+
return null
36+
}
37+
}
38+
return createNativeTokenBalance(
39+
nativeChainBalance.chainId,
40+
nativeTokenBalance.accountAddress,
41+
nativeTokenBalance.balance
42+
)
43+
})
44+
.filter(Boolean) as TokenBalance[]
3045
)
3146

3247
const tokens: TokenBalance[] = res.balances.flatMap(chainBalance => chainBalance.results)

0 commit comments

Comments
 (0)