@@ -29,6 +29,8 @@ public class ThirdwebSession
29
29
30
30
public static int Nonce { get ; private set ; } = 0 ;
31
31
32
+ private static List < ChainIDNetworkData > _allChainsData ;
33
+
32
34
#endregion
33
35
34
36
#region Constructors
@@ -41,6 +43,7 @@ public ThirdwebSession(ThirdwebSDK.Options options, BigInteger chainId, string r
41
43
SiweSession = new SiweMessageService ( ) ;
42
44
Web3 = new Web3 ( rpcUrl ) ;
43
45
CurrentChainData = options . supportedChains . ToList ( ) . Find ( x => x . chainId == new HexBigInteger ( chainId ) . HexValue ) ;
46
+ LoadChainsData ( ) ;
44
47
}
45
48
46
49
#endregion
@@ -210,17 +213,28 @@ private async Task AddNetwork(ThirdwebChainData newChainData)
210
213
await Request < object > ( "wallet_addEthereumChain" , new object [ ] { newChainData } ) ;
211
214
}
212
215
213
- public static ThirdwebChainData FetchChainData ( BigInteger chainId , string rpcOverride = null )
216
+ private static void LoadChainsData ( )
214
217
{
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
+ ) ;
217
228
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
+ }
220
232
221
- allChainsData . AddRange ( additionalChainsData ) ;
233
+ public static ThirdwebChainData FetchChainData ( BigInteger chainId , string rpcOverride = null )
234
+ {
235
+ LoadChainsData ( ) ;
222
236
223
- ChainIDNetworkData currentNetwork = allChainsData . Find ( x => x . chainId == chainId . ToString ( ) ) ;
237
+ ChainIDNetworkData currentNetwork = _allChainsData . Find ( x => x . chainId == chainId . ToString ( ) ) ;
224
238
if ( currentNetwork == null )
225
239
{
226
240
return new ThirdwebChainData ( )
0 commit comments