@@ -20,6 +20,7 @@ import {
2020import { useAccount , useDisconnect , useWalletClient } from 'wagmi' ;
2121
2222import { MIDAS_LOCALSTORAGE_KEYS } from '@ui/constants/index' ;
23+ import { useBaseRpcUrl } from '@ui/hooks/useBaseRpcUrl' ;
2324import { useEnabledChains } from '@ui/hooks/useChainConfig' ;
2425
2526import { chainIdToConfig } from '@ionicprotocol/chains' ;
@@ -64,6 +65,8 @@ export const MultiIonicProvider = (
6465 const enabledChains = useEnabledChains ( ) ;
6566 // const { chain, chains } = useNetwork();
6667 const { address : wagmiAddress , chain, isConnected } = useAccount ( ) ;
68+ const baseRpc = useBaseRpcUrl ( ) ;
69+ const base = baseRpc . baseChain ;
6770
6871 // const { address, isConnecting, isReconnecting, isConnected } = useAccount();
6972 // const { isLoading: isNetworkLoading, isIdle, switchNetworkAsync } = useSwitchNetwork();
@@ -85,19 +88,24 @@ export const MultiIonicProvider = (
8588 const _securities : Security [ ] = [ ] ;
8689 const _chainIds : SupportedChains [ ] = [ ] ;
8790 enabledChains . map ( ( chain ) => {
88- const config = chainIdToConfig [ chain . id ] ;
91+ const chainConfig = chainIdToConfig [ chain . id ] ;
8992 const _walletClient =
9093 chain . id === walletClient ?. chain ?. id ? walletClient : undefined ;
94+
95+ const transportUrls =
96+ chain . id === 8453
97+ ? [
98+ base . rpcUrls . default . http [ 0 ] ,
99+ ...chainConfig . specificParams . metadata . rpcUrls . default . http
100+ ]
101+ : chainConfig . specificParams . metadata . rpcUrls . default . http ;
102+
91103 const client = createPublicClient ( {
92104 batch : { multicall : { wait : 16 } } ,
93105 chain,
94- transport : fallback (
95- config . specificParams . metadata . rpcUrls . default . http . map ( ( url ) =>
96- http ( url )
97- )
98- )
106+ transport : fallback ( transportUrls . map ( ( url ) => http ( url ) ) )
99107 } ) ;
100- _sdks . push ( new IonicSdk ( client as any , _walletClient , config ) ) ;
108+ _sdks . push ( new IonicSdk ( client as any , _walletClient , chainConfig ) ) ;
101109 // _securities.push(
102110 // new Security(
103111 // chain.id,
@@ -110,7 +118,7 @@ export const MultiIonicProvider = (
110118 } ) ;
111119
112120 return [ _sdks , _securities , _chainIds . sort ( ) ] ;
113- } , [ enabledChains , walletClient ] ) ;
121+ } , [ enabledChains , walletClient , base ] ) ;
114122
115123 const currentSdk = useMemo ( ( ) => {
116124 if ( chain ) {
@@ -144,18 +152,23 @@ export const MultiIonicProvider = (
144152 useEffect ( ( ) => {
145153 if ( sdks . length > 0 && ! walletClient ) {
146154 sdks . map ( ( sdk ) => {
147- const config = chainIdToConfig [ sdk . chainId ] ;
155+ const sdkConfig = chainIdToConfig [ sdk . chainId ] ;
156+ let rpcUrl = sdkConfig . specificParams . metadata . rpcUrls . default . http [ 0 ] ;
157+
158+ // Use custom RPC URL for Base
159+ if ( sdk . chainId === 8453 ) {
160+ rpcUrl = base . rpcUrls . default . http [ 0 ] ;
161+ }
162+
148163 sdk . removeWalletClient (
149164 createPublicClient ( {
150165 chain,
151- transport : http (
152- config . specificParams . metadata . rpcUrls . default . http [ 0 ]
153- )
166+ transport : http ( rpcUrl )
154167 } )
155168 ) ;
156169 } ) ;
157170 }
158- } , [ walletClient , sdks , chain ] ) ;
171+ } , [ walletClient , sdks , chain , base ] ) ;
159172
160173 useEffect ( ( ) => {
161174 if ( wagmiAddress ) {
0 commit comments