@@ -29,6 +29,8 @@ public class ThirdwebSession
2929
3030 public static int Nonce { get ; private set ; } = 0 ;
3131
32+ private static List < ChainIDNetworkData > _allChainsData ;
33+
3234 #endregion
3335
3436 #region Constructors
@@ -41,6 +43,7 @@ public ThirdwebSession(ThirdwebSDK.Options options, BigInteger chainId, string r
4143 SiweSession = new SiweMessageService ( ) ;
4244 Web3 = new Web3 ( rpcUrl ) ;
4345 CurrentChainData = options . supportedChains . ToList ( ) . Find ( x => x . chainId == new HexBigInteger ( chainId ) . HexValue ) ;
46+ LoadChainsData ( ) ;
4447 }
4548
4649 #endregion
@@ -210,17 +213,28 @@ private async Task AddNetwork(ThirdwebChainData newChainData)
210213 await Request < object > ( "wallet_addEthereumChain" , new object [ ] { newChainData } ) ;
211214 }
212215
213- public static ThirdwebChainData FetchChainData ( BigInteger chainId , string rpcOverride = null )
216+ private static void LoadChainsData ( )
214217 {
215- var allChainsJson = ( TextAsset ) Resources . Load ( "all_chains" , typeof ( TextAsset ) ) ;
216- var allChainsData = JsonConvert . DeserializeObject < List < ChainIDNetworkData > > ( allChainsJson . text , new JsonSerializerSettings { NullValueHandling = NullValueHandling . Include } ) ;
218+ if ( _allChainsData == null || _allChainsData . Count == 0 )
219+ {
220+ var allChainsJson = ( TextAsset ) Resources . Load ( "all_chains" , typeof ( TextAsset ) ) ;
221+ _allChainsData = JsonConvert . DeserializeObject < List < ChainIDNetworkData > > ( allChainsJson . text , new JsonSerializerSettings { NullValueHandling = NullValueHandling . Include } ) ;
222+
223+ var additionalChainsJson = ( TextAsset ) Resources . Load ( "all_chains_additional" , typeof ( TextAsset ) ) ;
224+ var additionalChainsData = JsonConvert . DeserializeObject < List < ChainIDNetworkData > > (
225+ additionalChainsJson . text ,
226+ new JsonSerializerSettings { NullValueHandling = NullValueHandling . Include }
227+ ) ;
217228
218- var additionalChainsJson = ( TextAsset ) Resources . Load ( "all_chains_additional" , typeof ( TextAsset ) ) ;
219- var additionalChainsData = JsonConvert . DeserializeObject < List < ChainIDNetworkData > > ( additionalChainsJson . text , new JsonSerializerSettings { NullValueHandling = NullValueHandling . Include } ) ;
229+ _allChainsData . AddRange ( additionalChainsData ) ;
230+ }
231+ }
220232
221- allChainsData . AddRange ( additionalChainsData ) ;
233+ public static ThirdwebChainData FetchChainData ( BigInteger chainId , string rpcOverride = null )
234+ {
235+ LoadChainsData ( ) ;
222236
223- ChainIDNetworkData currentNetwork = allChainsData . Find ( x => x . chainId == chainId . ToString ( ) ) ;
237+ ChainIDNetworkData currentNetwork = _allChainsData . Find ( x => x . chainId == chainId . ToString ( ) ) ;
224238 if ( currentNetwork == null )
225239 {
226240 return new ThirdwebChainData ( )
0 commit comments