Skip to content

Commit 2e0eba0

Browse files
committed
perf - don't load chain resource multiple times
1 parent 840abdc commit 2e0eba0

File tree

1 file changed

+21
-7
lines changed

1 file changed

+21
-7
lines changed

Assets/Thirdweb/Core/Scripts/ThirdwebSession.cs

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)