@@ -7,30 +7,32 @@ import { logger } from '../../utils/logger';
77import { useMultiProvider } from './hooks' ;
88import { getChainDisplayName } from './utils' ;
99
10- // TODO refactor away from origin
11- export function ChainWalletWarning ( { origin } : { origin : ChainName } ) {
10+ export function ChainWalletWarning ( { chains } : { chains : ChainName [ ] } ) {
1211 const multiProvider = useMultiProvider ( ) ;
13-
1412 const wallets = useWalletDetails ( ) ;
1513 const connectFns = useConnectFns ( ) ;
1614 const disconnectFns = useDisconnectFns ( ) ;
1715
1816 const { isVisible, chainDisplayName, walletWhitelist, connectFn, disconnectFn } = useMemo ( ( ) => {
19- const protocol = multiProvider . tryGetProtocol ( origin ) ;
20- const walletWhitelist = config . chainWalletWhitelists [ origin ] ?. map ( ( w ) =>
21- w . trim ( ) . toLowerCase ( ) ,
22- ) ;
23- if ( ! protocol || ! walletWhitelist ?. length )
24- return { isVisible : false , chainDisplayName : '' , walletWhitelist : [ ] } ;
17+ // Iterate through chains and surface first one with a wallet warning
18+ for ( const chain of chains ) {
19+ const protocol = multiProvider . tryGetProtocol ( chain ) ;
20+ const walletWhitelist = config . chainWalletWhitelists [ chain ] ?. map ( ( w ) =>
21+ w . trim ( ) . toLowerCase ( ) ,
22+ ) ;
23+ if ( ! protocol || ! walletWhitelist ?. length ) continue ;
2524
26- const chainDisplayName = getChainDisplayName ( multiProvider , origin , true ) ;
27- const walletName = wallets [ protocol ] ?. name ?. trim ( ) ?. toLowerCase ( ) ;
28- const connectFn = connectFns [ protocol ] ;
29- const disconnectFn = disconnectFns [ protocol ] ;
30- const isVisible = ! ! walletName && ! walletWhitelist . includes ( walletName ) ;
25+ const chainDisplayName = getChainDisplayName ( multiProvider , chain , true ) ;
26+ const walletName = wallets [ protocol ] ?. name ?. trim ( ) ?. toLowerCase ( ) ;
27+ const connectFn = connectFns [ protocol ] ;
28+ const disconnectFn = disconnectFns [ protocol ] ;
29+ const isVisible = ! ! walletName && ! walletWhitelist . includes ( walletName ) ;
30+ return { isVisible, chainDisplayName, walletWhitelist, connectFn, disconnectFn } ;
31+ }
3132
32- return { isVisible, chainDisplayName, walletWhitelist, connectFn, disconnectFn } ;
33- } , [ multiProvider , origin , wallets , connectFns , disconnectFns ] ) ;
33+ // If no chains apply, return falsy default values
34+ return { isVisible : false , chainDisplayName : '' , walletWhitelist : [ ] } ;
35+ } , [ multiProvider , chains , wallets , connectFns , disconnectFns ] ) ;
3436
3537 const onClickChange = ( ) => {
3638 if ( ! connectFn || ! disconnectFn ) return ;
0 commit comments