Skip to content

Commit b6f96d4

Browse files
authored
fix: limit networks to privy-supported chains in token pickers (#12312)
filter networks when using privy wallet in TokenPicker and SelectFungibleTokenDialog
1 parent d76bcc9 commit b6f96d4

File tree

2 files changed

+26
-8
lines changed

2 files changed

+26
-8
lines changed

packages/mask/popups/components/TokenPicker/index.tsx

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,13 @@ import { EmptyStatus, SelectNetworkSidebar } from '@masknet/shared'
55
import { EMPTY_LIST, NetworkPluginID } from '@masknet/shared-base'
66
import { makeStyles, MaskTextField } from '@masknet/theme'
77
import type { Web3Helper } from '@masknet/web3-helpers'
8-
import { useAccount, useFungibleAssets, useNetworks, useUserTokenBalances } from '@masknet/web3-hooks-base'
8+
import {
9+
useAccount,
10+
useFungibleAssets,
11+
useNetworks,
12+
usePrivyWallet,
13+
useUserTokenBalances,
14+
} from '@masknet/web3-hooks-base'
915
import { useOKXTokenList } from '@masknet/web3-hooks-evm'
1016
import {
1117
isEqual,
@@ -21,6 +27,7 @@ import Fuse from 'fuse.js'
2127
import { memo, useCallback, useMemo, useState } from 'react'
2228
import { FixedSizeList, type ListChildComponentProps } from 'react-window'
2329
import { TokenItem, type TokenItemProps } from './TokenItem.js'
30+
import { PRIVY_SUPPORTED_CHAINS } from '@masknet/web3-providers'
2431

2532
type RowProps = ListChildComponentProps<{
2633
tokens: Array<Web3Helper.FungibleTokenAll | Web3Helper.FungibleAssetAll>
@@ -186,10 +193,12 @@ export const TokenPicker = memo(function TokenPicker({
186193
}, [fuse, keyword])
187194

188195
const networks = useNetworks(NetworkPluginID.PLUGIN_EVM, true)
196+
const isPrivyWallet = !!usePrivyWallet(account)
189197
const filteredNetworks = useMemo(() => {
190-
const list = networks
191-
return chains ? list.filter((x) => chains.includes(x.chainId)) : list
192-
}, [chains, networks])
198+
const list = chains ? networks.filter((x) => chains.includes(x.chainId)) : networks
199+
return isPrivyWallet ? list.filter((x) => PRIVY_SUPPORTED_CHAINS.includes(x.chainId)) : list
200+
}, [chains, networks, isPrivyWallet])
201+
193202
const selectedIndex = filteredAssets.findIndex((x) => x.chainId === chainId && isSameAddress(x.address, address))
194203

195204
return (

packages/shared/src/UI/modals/SelectFungibleTokenModal/SelectFungibleTokenDialog.tsx

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,21 @@ import { EMPTY_LIST, EnhanceableSite, NetworkPluginID, Sniffings } from '@maskne
44
import { useRowSize } from '@masknet/shared-base-ui'
55
import { makeStyles, MaskColorVar } from '@masknet/theme'
66
import type { Web3Helper } from '@masknet/web3-helpers'
7-
import { useNativeTokenAddress, useNetworkContext, useNetworks } from '@masknet/web3-hooks-base'
7+
import {
8+
useAccount,
9+
useNativeTokenAddress,
10+
useNetworkContext,
11+
useNetworks,
12+
usePrivyWallet,
13+
} from '@masknet/web3-hooks-base'
814
import type { FungibleToken } from '@masknet/web3-shared-base'
915
import { ChainId } from '@masknet/web3-shared-evm'
1016
import { Button, DialogActions, DialogContent, inputClasses, useMediaQuery, type Theme } from '@mui/material'
1117
import { useMemo, useState } from 'react'
1218
import { TokenListMode } from '../../components/FungibleTokenList/type.js'
1319
import { FungibleTokenList, SelectNetworkSidebar, type FungibleTokenListProps } from '../../components/index.js'
1420
import { InjectedDialog, useBaseUIRuntime } from '../../contexts/index.js'
21+
import { PRIVY_SUPPORTED_CHAINS } from '@masknet/web3-providers'
1522

1623
interface StyleProps {
1724
compact: boolean
@@ -127,10 +134,12 @@ export function SelectFungibleTokenDialog({
127134
const { classes, cx } = useStyles({ compact })
128135
const isMdScreen = useMediaQuery<Theme>((theme) => theme.breakpoints.down('md'))
129136
const allNetworks = useNetworks(NetworkPluginID.PLUGIN_EVM, true)
137+
const account = useAccount(NetworkPluginID.PLUGIN_EVM)
138+
const isPrivyWallet = !!usePrivyWallet(account)
130139
const networks = useMemo(() => {
131-
if (!chains) return allNetworks
132-
return allNetworks.filter((network) => chains.includes(network.chainId))
133-
}, [chains, allNetworks])
140+
const list = chains ? allNetworks.filter((network) => chains.includes(network.chainId)) : allNetworks
141+
return isPrivyWallet ? list.filter((x) => PRIVY_SUPPORTED_CHAINS.includes(x.chainId)) : list
142+
}, [chains, allNetworks, isPrivyWallet])
134143

135144
const rowSize = useRowSize()
136145

0 commit comments

Comments
 (0)