@reown/appkit 1.6.3 → 1.6.4-rc.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/esm/exports/constants.js +1 -1
  2. package/dist/esm/exports/constants.js.map +1 -1
  3. package/dist/esm/package.json +1 -1
  4. package/dist/esm/src/adapters/ChainAdapterBlueprint.js +8 -0
  5. package/dist/esm/src/adapters/ChainAdapterBlueprint.js.map +1 -1
  6. package/dist/esm/src/client.js +161 -106
  7. package/dist/esm/src/client.js.map +1 -1
  8. package/dist/esm/tests/appkit.test.js +1371 -0
  9. package/dist/esm/tests/appkit.test.js.map +1 -0
  10. package/dist/esm/tests/mocks/Adapter.js +30 -0
  11. package/dist/esm/tests/mocks/Adapter.js.map +1 -0
  12. package/dist/esm/tests/mocks/AppKit.js +24 -0
  13. package/dist/esm/tests/mocks/AppKit.js.map +1 -0
  14. package/dist/esm/tests/mocks/Options.js +32 -0
  15. package/dist/esm/tests/mocks/Options.js.map +1 -0
  16. package/dist/esm/tests/mocks/UniversalProvider.js +137 -0
  17. package/dist/esm/tests/mocks/UniversalProvider.js.map +1 -0
  18. package/dist/esm/tests/siwe.test.js +258 -0
  19. package/dist/esm/tests/siwe.test.js.map +1 -0
  20. package/dist/esm/tests/siwe.testa.js +258 -0
  21. package/dist/esm/tests/siwe.testa.js.map +1 -0
  22. package/dist/esm/tests/universal-adapter.test.js +115 -0
  23. package/dist/esm/tests/universal-adapter.test.js.map +1 -0
  24. package/dist/esm/tests/universal-adapter.testa.js +115 -0
  25. package/dist/esm/tests/universal-adapter.testa.js.map +1 -0
  26. package/dist/esm/tests/utils/HelpersUtil.test.js +217 -0
  27. package/dist/esm/tests/utils/HelpersUtil.test.js.map +1 -0
  28. package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
  29. package/dist/esm/tsconfig.tsbuildinfo +1 -0
  30. package/dist/types/exports/constants.d.ts +1 -1
  31. package/dist/types/exports/index.d.ts +1 -1
  32. package/dist/types/exports/react.d.ts +1 -1
  33. package/dist/types/exports/vue.d.ts +1 -1
  34. package/dist/types/src/adapters/ChainAdapterBlueprint.d.ts +4 -0
  35. package/dist/types/src/client.d.ts +26 -11
  36. package/dist/types/tests/appkit.test.d.ts +1 -0
  37. package/dist/types/tests/mocks/Adapter.d.ts +3 -0
  38. package/dist/types/tests/mocks/AppKit.d.ts +3 -0
  39. package/dist/types/tests/mocks/Options.d.ts +19 -0
  40. package/dist/types/tests/mocks/UniversalProvider.d.ts +3 -0
  41. package/dist/types/tests/siwe.test.d.ts +1 -0
  42. package/dist/types/tests/siwe.testa.d.ts +1 -0
  43. package/dist/types/tests/universal-adapter.test.d.ts +1 -0
  44. package/dist/types/tests/universal-adapter.testa.d.ts +1 -0
  45. package/dist/types/tests/utils/HelpersUtil.test.d.ts +1 -0
  46. package/package.json +9 -9
@@ -1,2 +1,2 @@
1
- export const PACKAGE_VERSION = '1.6.3';
1
+ export const PACKAGE_VERSION = '1.6.4-rc.1.0';
2
2
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../exports/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAA"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../exports/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,cAAc,CAAA"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reown/appkit",
3
- "version": "1.6.3",
3
+ "version": "1.6.4-rc.1.0",
4
4
  "type": "module",
5
5
  "main": "./dist/esm/exports/index.js",
6
6
  "types": "./dist/types/exports/index.d.ts",
@@ -130,6 +130,14 @@ export class AdapterBlueprint {
130
130
  listeners.delete(callback);
131
131
  }
132
132
  }
133
+ /**
134
+ * Removes all event listeners.
135
+ */
136
+ removeAllEventListeners() {
137
+ this.eventListeners.forEach(listeners => {
138
+ listeners.clear();
139
+ });
140
+ }
133
141
  /**
134
142
  * Emits an event with the given name and optional data.
135
143
  * @template T
@@ -1 +1 @@
1
- {"version":3,"file":"ChainAdapterBlueprint.js","sourceRoot":"","sources":["../../../../src/adapters/ChainAdapterBlueprint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChainAdapterBlueprint.js","sourceRoot":"","sources":["../../../../src/adapters/ChainAdapterBlueprint.ts"],"names":[],"mappings":"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"}
@@ -14,17 +14,6 @@ import { WalletUtil } from '@reown/appkit-scaffold-ui/utils';
14
14
  // -- Export Controllers -------------------------------------------------------
15
15
  export { AccountController };
16
16
  // -- Constants ----------------------------------------- //
17
- const accountState = {
18
- currentTab: 0,
19
- tokenBalance: [],
20
- smartAccountDeployed: false,
21
- addressLabels: new Map(),
22
- allAccounts: []
23
- };
24
- const networkState = {
25
- supportsAllNetworks: true,
26
- smartAccountEnabledNetworks: []
27
- };
28
17
  const OPTIONAL_METHODS = [
29
18
  'eth_accounts',
30
19
  'eth_requestAccounts',
@@ -104,6 +93,9 @@ export class AppKit {
104
93
  this.setProfileImage = (profileImage, chain) => {
105
94
  AccountController.setProfileImage(profileImage, chain);
106
95
  };
96
+ this.setUser = user => {
97
+ AccountController.setUser(user);
98
+ };
107
99
  this.resetAccount = (chain) => {
108
100
  AccountController.resetAccount(chain);
109
101
  };
@@ -183,23 +175,23 @@ export class AppKit {
183
175
  }
184
176
  };
185
177
  this.options = options;
178
+ this.version = options.sdkVersion;
179
+ this.caipNetworks = this.extendCaipNetworks(options);
180
+ this.chainNamespaces = [
181
+ ...new Set(this.caipNetworks?.map(caipNetwork => caipNetwork.chainNamespace))
182
+ ];
183
+ this.defaultCaipNetwork = this.extendDefaultCaipNetwork(options);
184
+ this.chainAdapters = this.createAdapters(options.adapters);
186
185
  this.initialize(options);
187
186
  }
188
187
  static getInstance() {
189
188
  return this.instance;
190
189
  }
191
190
  async initialize(options) {
192
- this.caipNetworks = this.extendCaipNetworks(options);
193
- this.defaultCaipNetwork = this.extendDefaultCaipNetwork(options);
194
191
  this.initControllers(options);
195
- this.createClients();
196
- ChainController.initialize(options.adapters ?? [], this.caipNetworks);
197
- this.chainAdapters = this.createAdapters(options.adapters);
198
192
  await this.initChainAdapters();
199
- this.syncRequestedNetworks();
200
- await this.initOrContinue();
193
+ await this.injectModalUi();
201
194
  await this.syncExistingConnection();
202
- this.version = options.sdkVersion;
203
195
  const { ...optionsCopy } = options;
204
196
  delete optionsCopy.adapters;
205
197
  EventsController.sendEvent({
@@ -217,14 +209,14 @@ export class AppKit {
217
209
  }
218
210
  // -- Public -------------------------------------------------------------------
219
211
  async open(options) {
220
- await this.initOrContinue();
212
+ await this.injectModalUi();
221
213
  if (options?.uri && this.universalAdapter) {
222
214
  ConnectionController.setUri(options.uri);
223
215
  }
224
216
  ModalController.open(options);
225
217
  }
226
218
  async close() {
227
- await this.initOrContinue();
219
+ await this.injectModalUi();
228
220
  ModalController.close();
229
221
  }
230
222
  setLoading(loading) {
@@ -290,7 +282,12 @@ export class AppKit {
290
282
  caipAddress: ChainController.state.activeCaipAddress,
291
283
  address: CoreHelperUtil.getPlainAddress(ChainController.state.activeCaipAddress),
292
284
  isConnected: Boolean(ChainController.state.activeCaipAddress),
293
- status: AccountController.state.status
285
+ status: AccountController.state.status,
286
+ embeddedWalletInfo: {
287
+ user: AccountController.state.user,
288
+ accountType: AccountController.state.preferredAccountType,
289
+ isSmartAccountDeployed: Boolean(AccountController.state.smartAccountDeployed)
290
+ }
294
291
  });
295
292
  }
296
293
  ChainController.subscribe(updateVal);
@@ -376,56 +373,80 @@ export class AppKit {
376
373
  getConnectMethodsOrder() {
377
374
  return WalletUtil.getConnectOrderMethod(OptionsController.state.features, ConnectorController.getConnectors());
378
375
  }
376
+ /**
377
+ * Removes an adapter from the AppKit.
378
+ * @param namespace - The namespace of the adapter to remove.
379
+ */
380
+ removeAdapter(namespace) {
381
+ const isConnected = this.getIsConnectedState();
382
+ const adapter = this.getAdapter(namespace);
383
+ if (!adapter || !this.chainAdapters || isConnected) {
384
+ return;
385
+ }
386
+ const newCaipNetworks = this.caipNetworks?.filter(network => network.chainNamespace !== namespace);
387
+ ChainController.removeAdapter(namespace);
388
+ ConnectorController.removeAdapter(namespace);
389
+ this.chainNamespaces = this.chainNamespaces.filter(n => n !== namespace);
390
+ this.caipNetworks = newCaipNetworks;
391
+ adapter.removeAllEventListeners();
392
+ Reflect.deleteProperty(this.chainAdapters, namespace);
393
+ }
394
+ /**
395
+ * Adds an adapter to the AppKit.
396
+ * @param adapter - The adapter instance.
397
+ * @param networks - The list of networks that this adapter supports / uses.
398
+ */
399
+ addAdapter(adapter, networks) {
400
+ const namespace = adapter.namespace;
401
+ if (!this.connectionControllerClient || !this.networkControllerClient) {
402
+ return;
403
+ }
404
+ if (!this.chainAdapters || !namespace) {
405
+ return;
406
+ }
407
+ const extendedAdapterNetworks = this.extendCaipNetworks({ ...this.options, networks });
408
+ this.caipNetworks = [...(this.caipNetworks || []), ...extendedAdapterNetworks];
409
+ this.createAdapter(adapter);
410
+ this.initChainAdapter(namespace);
411
+ ChainController.addAdapter(adapter, {
412
+ connectionControllerClient: this.connectionControllerClient,
413
+ networkControllerClient: this.networkControllerClient
414
+ }, extendedAdapterNetworks);
415
+ }
379
416
  // -- Private ------------------------------------------------------------------
380
- initControllers(options) {
417
+ initializeOptionsController(options) {
381
418
  OptionsController.setDebug(options.debug !== false);
382
- OptionsController.setProjectId(options.projectId);
383
- OptionsController.setSdkVersion(options.sdkVersion);
384
- OptionsController.setEnableEmbedded(options.enableEmbedded);
385
- if (options.allowUnsupportedChain) {
386
- OptionsController.setAllowUnsupportedChain(options.allowUnsupportedChain);
387
- }
388
419
  if (!options.projectId) {
389
420
  AlertController.open(ErrorUtil.ALERT_ERRORS.PROJECT_ID_NOT_CONFIGURED, 'error');
390
421
  return;
391
422
  }
392
- const defaultMetaData = this.getDefaultMetaData();
393
- if (!options.metadata && defaultMetaData) {
394
- options.metadata = defaultMetaData;
395
- }
396
- this.setDefaultNetwork();
423
+ // On by default
424
+ OptionsController.setEnableWalletConnect(options.enableWalletConnect !== false);
425
+ OptionsController.setEnableWalletGuide(options.enableWalletGuide !== false);
426
+ OptionsController.setEnableWallets(options.enableWallets !== false);
427
+ OptionsController.setEIP6963Enabled(options.enableEIP6963 !== false);
428
+ OptionsController.setEnableAuthLogger(options.enableAuthLogger !== false);
429
+ OptionsController.setSdkVersion(options.sdkVersion);
430
+ OptionsController.setProjectId(options.projectId);
431
+ OptionsController.setEnableEmbedded(options.enableEmbedded);
397
432
  OptionsController.setAllWallets(options.allWallets);
398
433
  OptionsController.setIncludeWalletIds(options.includeWalletIds);
399
434
  OptionsController.setExcludeWalletIds(options.excludeWalletIds);
400
- if (options.excludeWalletIds) {
401
- ApiController.searchWalletByIds({ ids: options.excludeWalletIds });
402
- }
403
435
  OptionsController.setFeaturedWalletIds(options.featuredWalletIds);
404
436
  OptionsController.setTokens(options.tokens);
405
437
  OptionsController.setTermsConditionsUrl(options.termsConditionsUrl);
406
438
  OptionsController.setPrivacyPolicyUrl(options.privacyPolicyUrl);
407
439
  OptionsController.setCustomWallets(options.customWallets);
408
440
  OptionsController.setFeatures(options.features);
409
- OptionsController.setEnableWalletConnect(options.enableWalletConnect !== false);
410
- OptionsController.setEnableWalletGuide(options.enableWalletGuide !== false);
411
- OptionsController.setEnableWallets(options.enableWallets !== false);
412
- OptionsController.setEIP6963Enabled(options.enableEIP6963 !== false);
413
- OptionsController.setEnableAuthLogger(options.enableAuthLogger !== false);
414
- if (options.metadata) {
415
- OptionsController.setMetadata(options.metadata);
416
- }
417
- if (options.themeMode) {
418
- ThemeController.setThemeMode(options.themeMode);
419
- }
420
- if (options.themeVariables) {
421
- ThemeController.setThemeVariables(options.themeVariables);
422
- }
423
- if (options.disableAppend) {
424
- OptionsController.setDisableAppend(Boolean(options.disableAppend));
425
- }
426
- if (options.siwx) {
427
- OptionsController.setSIWX(options.siwx);
441
+ OptionsController.setAllowUnsupportedChain(options.allowUnsupportedChain);
442
+ const defaultMetaData = this.getDefaultMetaData();
443
+ if (!options.metadata && defaultMetaData) {
444
+ options.metadata = defaultMetaData;
428
445
  }
446
+ OptionsController.setMetadata(options.metadata);
447
+ OptionsController.setDisableAppend(options.disableAppend);
448
+ OptionsController.setEnableEmbedded(options.enableEmbedded);
449
+ OptionsController.setSIWX(options.siwx);
429
450
  const evmAdapter = options.adapters?.find(adapter => adapter.namespace === ConstantsUtil.CHAIN.EVM);
430
451
  // Set the SIWE client for EVM chains
431
452
  if (evmAdapter) {
@@ -437,6 +458,35 @@ export class AppKit {
437
458
  }
438
459
  }
439
460
  }
461
+ initializeThemeController(options) {
462
+ if (options.themeMode) {
463
+ ThemeController.setThemeMode(options.themeMode);
464
+ }
465
+ if (options.themeVariables) {
466
+ ThemeController.setThemeVariables(options.themeVariables);
467
+ }
468
+ }
469
+ initializeChainController(options) {
470
+ if (!this.connectionControllerClient || !this.networkControllerClient) {
471
+ throw new Error('ConnectionControllerClient and NetworkControllerClient must be set');
472
+ }
473
+ ChainController.initialize(options.adapters ?? [], this.caipNetworks, {
474
+ connectionControllerClient: this.connectionControllerClient,
475
+ networkControllerClient: this.networkControllerClient
476
+ });
477
+ const network = this.getDefaultNetwork();
478
+ if (network) {
479
+ ChainController.setActiveCaipNetwork(network);
480
+ }
481
+ }
482
+ initControllers(options) {
483
+ this.initializeOptionsController(options);
484
+ this.initializeChainController(options);
485
+ this.initializeThemeController(options);
486
+ if (options.excludeWalletIds) {
487
+ ApiController.initializeExcludedWalletRdns({ ids: options.excludeWalletIds });
488
+ }
489
+ }
440
490
  getDefaultMetaData() {
441
491
  if (typeof window !== 'undefined' && typeof document !== 'undefined') {
442
492
  return {
@@ -567,6 +617,7 @@ export class AppKit {
567
617
  await adapter?.disconnect({ provider, providerType });
568
618
  StorageUtil.removeConnectedNamespace(namespace);
569
619
  ProviderUtil.resetChain(namespace);
620
+ this.setUser(undefined);
570
621
  this.setStatus('disconnected', namespace);
571
622
  },
572
623
  checkInstalled: (ids) => {
@@ -679,7 +730,7 @@ export class AppKit {
679
730
  this.setCaipNetwork(caipNetwork);
680
731
  await this.syncAccount({
681
732
  address: AccountController.state.address,
682
- chainId: ChainController.state.activeCaipNetwork?.id,
733
+ chainId: caipNetwork.id,
683
734
  chainNamespace: caipNetwork.chainNamespace
684
735
  });
685
736
  }
@@ -744,9 +795,7 @@ export class AppKit {
744
795
  return { supportsAllNetworks: true, approvedCaipNetworkIds: [] };
745
796
  }
746
797
  };
747
- if (this.networkControllerClient && this.connectionControllerClient) {
748
- ConnectionController.setClient(this.connectionControllerClient);
749
- }
798
+ ConnectionController.setClient(this.connectionControllerClient);
750
799
  }
751
800
  setupAuthConnectorListeners(provider) {
752
801
  provider.onRpcRequest((request) => {
@@ -830,6 +879,7 @@ export class AppKit {
830
879
  });
831
880
  }
832
881
  this.setCaipAddress(caipAddress, namespace);
882
+ this.setUser({ ...(AccountController.state.user || {}), email: user.email });
833
883
  const preferredAccountType = (user.preferredAccountType || 'eoa');
834
884
  this.setPreferredAccountType(preferredAccountType, namespace);
835
885
  const userAccounts = user.accounts?.map(account => CoreHelperUtil.createAccount(namespace, account.address, namespace === ConstantsUtil.CHAIN.EVM ? account.type : 'eoa'));
@@ -839,6 +889,9 @@ export class AppKit {
839
889
  await provider.getSmartAccountEnabledNetworks();
840
890
  this.setLoading(false);
841
891
  });
892
+ provider.onSocialConnected(({ userName }) => {
893
+ this.setUser({ ...(AccountController.state.user || {}), username: userName });
894
+ });
842
895
  provider.onGetSmartAccountEnabledNetworks(networks => {
843
896
  this.setSmartAccountEnabledNetworks(networks, ChainController.state.activeChain);
844
897
  });
@@ -856,6 +909,9 @@ export class AppKit {
856
909
  if (isLoginEmailUsed) {
857
910
  this.setStatus('connecting', ChainController.state.activeChain);
858
911
  }
912
+ const email = provider.getEmail();
913
+ const username = provider.getUsername();
914
+ this.setUser({ ...(AccountController.state?.user || {}), username, email });
859
915
  this.setupAuthConnectorListeners(provider);
860
916
  const { isConnected } = await provider.isConnected();
861
917
  const namespace = StorageUtil.getActiveNamespace();
@@ -1094,7 +1150,6 @@ export class AppKit {
1094
1150
  }
1095
1151
  }
1096
1152
  async syncBalance(params) {
1097
- const adapter = this.getAdapter(params.chainNamespace);
1098
1153
  const caipNetwork = NetworkUtil.getNetworksByNamespace(this.caipNetworks, params.chainNamespace).find(n => n.id.toString() === params.chainId.toString());
1099
1154
  if (!caipNetwork) {
1100
1155
  return;
@@ -1103,15 +1158,9 @@ export class AppKit {
1103
1158
  this.setBalance('0.00', caipNetwork.nativeCurrency.symbol, caipNetwork.chainNamespace);
1104
1159
  return;
1105
1160
  }
1106
- const balance = await adapter?.getBalance({
1107
- address: params.address,
1108
- chainId: params.chainId,
1109
- caipNetwork,
1110
- tokens: this.options.tokens
1111
- });
1112
- if (balance) {
1113
- this.setBalance(balance.balance, balance.symbol, params.chainNamespace);
1114
- }
1161
+ const balances = await AccountController.fetchTokenBalance(() => this.setBalance('0.00', caipNetwork.nativeCurrency.symbol, caipNetwork.chainNamespace));
1162
+ const balance = balances.find(b => b.chainId === params.chainId);
1163
+ this.setBalance(balance?.quantity?.numeric || '0.00', caipNetwork.nativeCurrency.symbol, params.chainNamespace);
1115
1164
  }
1116
1165
  syncConnectedWalletInfo(chainNamespace) {
1117
1166
  const connectorId = StorageUtil.getConnectedConnectorId(chainNamespace);
@@ -1200,14 +1249,6 @@ export class AppKit {
1200
1249
  this.setProfileName(null, chainNamespace);
1201
1250
  }
1202
1251
  }
1203
- syncRequestedNetworks() {
1204
- const uniqueChainNamespaces = [
1205
- ...new Set(this.caipNetworks?.map(caipNetwork => caipNetwork.chainNamespace))
1206
- ];
1207
- this.chainNamespaces = uniqueChainNamespaces;
1208
- uniqueChainNamespaces.forEach(chainNamespace => this.setRequestedCaipNetworks(this.caipNetworks?.filter(caipNetwork => caipNetwork.chainNamespace === chainNamespace) ??
1209
- [], chainNamespace));
1210
- }
1211
1252
  async syncAdapterConnection(namespace) {
1212
1253
  const adapter = this.getAdapter(namespace);
1213
1254
  const connectorId = StorageUtil.getConnectedConnectorId(namespace);
@@ -1242,7 +1283,6 @@ export class AppKit {
1242
1283
  }
1243
1284
  }
1244
1285
  catch (e) {
1245
- console.warn(`Error syncing connection for namespace ${namespace}`, e);
1246
1286
  StorageUtil.deleteConnectedConnectorId(namespace);
1247
1287
  this.setStatus('disconnected', namespace);
1248
1288
  }
@@ -1273,10 +1313,7 @@ export class AppKit {
1273
1313
  }
1274
1314
  }
1275
1315
  async syncExistingConnection() {
1276
- const connectedNamespaces = StorageUtil.getConnectedNamespaces();
1277
- if (connectedNamespaces?.length > 0) {
1278
- await Promise.allSettled(connectedNamespaces.map(namespace => this.syncNamespaceConnection(namespace)));
1279
- }
1316
+ await Promise.allSettled(this.chainNamespaces.map(namespace => this.syncNamespaceConnection(namespace)));
1280
1317
  }
1281
1318
  getAdapter(namespace) {
1282
1319
  return this.chainAdapters?.[namespace];
@@ -1351,6 +1388,11 @@ export class AppKit {
1351
1388
  AlertController.open(ErrorUtil.ALERT_ERRORS.SOCIALS_TIMEOUT, 'error');
1352
1389
  }
1353
1390
  });
1391
+ this.subscribeState(val => {
1392
+ if (!val.open) {
1393
+ this.authProvider?.rejectRpcRequests();
1394
+ }
1395
+ });
1354
1396
  this.syncAuthConnector(this.authProvider);
1355
1397
  }
1356
1398
  }
@@ -1366,8 +1408,31 @@ export class AppKit {
1366
1408
  this.chainAdapters?.[chainNamespace]?.setAuthProvider?.(this.authProvider);
1367
1409
  }
1368
1410
  }
1411
+ createAdapter(blueprint) {
1412
+ if (!blueprint) {
1413
+ return;
1414
+ }
1415
+ const namespace = blueprint.namespace;
1416
+ if (!namespace) {
1417
+ return;
1418
+ }
1419
+ this.createClients();
1420
+ const adapterBlueprint = blueprint;
1421
+ adapterBlueprint.namespace = namespace;
1422
+ adapterBlueprint.construct({
1423
+ namespace,
1424
+ projectId: this.options?.projectId,
1425
+ networks: this.caipNetworks
1426
+ });
1427
+ if (!this.chainNamespaces.includes(namespace)) {
1428
+ this.chainNamespaces.push(namespace);
1429
+ }
1430
+ if (this.chainAdapters) {
1431
+ this.chainAdapters[namespace] = adapterBlueprint;
1432
+ }
1433
+ }
1369
1434
  createAdapters(blueprints) {
1370
- this.syncRequestedNetworks();
1435
+ this.createClients();
1371
1436
  return this.chainNamespaces.reduce((adapters, namespace) => {
1372
1437
  const blueprint = blueprints?.find(b => b.namespace === namespace);
1373
1438
  if (blueprint) {
@@ -1385,45 +1450,35 @@ export class AppKit {
1385
1450
  networks: this.caipNetworks
1386
1451
  });
1387
1452
  }
1388
- ChainController.state.chains.set(namespace, {
1389
- namespace,
1390
- connectionControllerClient: this.connectionControllerClient,
1391
- networkControllerClient: this.networkControllerClient,
1392
- networkState,
1393
- accountState,
1394
- caipNetworks: this.caipNetworks ?? []
1395
- });
1396
1453
  return adapters;
1397
1454
  // eslint-disable-next-line @typescript-eslint/prefer-reduce-type-parameter
1398
1455
  }, {});
1399
1456
  }
1400
- async createConnectorsForAdapter(namespace) {
1401
- await this.createUniversalProviderForAdapter(namespace);
1402
- this.createAuthProviderForAdapter(namespace);
1403
- }
1404
1457
  onConnectors(chainNamespace) {
1405
1458
  const adapter = this.getAdapter(chainNamespace);
1406
1459
  adapter?.on('connectors', this.setConnectors.bind(this));
1407
1460
  }
1461
+ async initChainAdapter(namespace) {
1462
+ this.onConnectors(namespace);
1463
+ this.listenAdapter(namespace);
1464
+ this.chainAdapters?.[namespace].syncConnectors(this.options, this);
1465
+ await this.createUniversalProviderForAdapter(namespace);
1466
+ this.createAuthProviderForAdapter(namespace);
1467
+ }
1408
1468
  async initChainAdapters() {
1409
1469
  await Promise.all(this.chainNamespaces.map(async (namespace) => {
1410
- this.onConnectors(namespace);
1411
- this.listenAdapter(namespace);
1412
- this.chainAdapters?.[namespace].syncConnectors(this.options, this);
1413
- await this.createConnectorsForAdapter(namespace);
1470
+ await this.initChainAdapter(namespace);
1414
1471
  }));
1415
1472
  }
1416
- setDefaultNetwork() {
1473
+ getDefaultNetwork() {
1417
1474
  const previousNetwork = StorageUtil.getActiveCaipNetworkId();
1418
1475
  const caipNetwork = previousNetwork && this.caipNetworks?.length
1419
1476
  ? this.caipNetworks.find(n => n.caipNetworkId === previousNetwork)
1420
1477
  : undefined;
1421
1478
  const network = caipNetwork || this.defaultCaipNetwork || this.caipNetworks?.[0];
1422
- if (network) {
1423
- ChainController.setActiveCaipNetwork(network);
1424
- }
1479
+ return network;
1425
1480
  }
1426
- async initOrContinue() {
1481
+ async injectModalUi() {
1427
1482
  if (!this.initPromise && !isInitialized && CoreHelperUtil.isClient()) {
1428
1483
  isInitialized = true;
1429
1484
  this.initPromise = new Promise(async (resolve) => {
@@ -1432,7 +1487,7 @@ export class AppKit {
1432
1487
  import('@reown/appkit-scaffold-ui/w3m-modal')
1433
1488
  ]);
1434
1489
  const modal = document.createElement('w3m-modal');
1435
- if (!OptionsController.state.disableAppend) {
1490
+ if (!OptionsController.state.disableAppend && !OptionsController.state.enableEmbedded) {
1436
1491
  document.body.insertAdjacentElement('beforeend', modal);
1437
1492
  }
1438
1493
  resolve();