@web3auth/no-modal 10.0.0-beta.3 → 10.0.0-beta.4

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 (107) hide show
  1. package/dist/lib.cjs/base/connector/constants.js +2 -1
  2. package/dist/lib.cjs/base/wallet/index.js +1 -3
  3. package/dist/lib.cjs/connectors/auth-connector/authConnector.js +3 -1
  4. package/dist/lib.cjs/index.js +2 -0
  5. package/dist/lib.cjs/noModal.js +20 -3
  6. package/dist/lib.cjs/plugins/nft-checkout-plugin/plugin.js +2 -2
  7. package/dist/lib.cjs/plugins/wallet-services-plugin/plugin.js +1 -1
  8. package/dist/lib.cjs/react/Web3AuthProvider.js +19 -0
  9. package/dist/lib.cjs/react/{wallet-services-plugin/WalletServicesContext.js → context/WalletServicesInnerContext.js} +18 -33
  10. package/dist/lib.cjs/react/{no-modal → context}/Web3AuthInnerContext.js +13 -78
  11. package/dist/lib.cjs/react/hooks/useCheckout.js +45 -0
  12. package/dist/lib.cjs/react/hooks/useEnableMFA.js +30 -0
  13. package/dist/lib.cjs/react/hooks/useIdentityToken.js +42 -0
  14. package/dist/lib.cjs/react/hooks/useManageMFA.js +30 -0
  15. package/dist/lib.cjs/react/hooks/useSwap.js +45 -0
  16. package/dist/lib.cjs/react/hooks/useSwitchChain.js +32 -0
  17. package/dist/lib.cjs/react/hooks/useWalletConnectScanner.js +45 -0
  18. package/dist/lib.cjs/react/hooks/useWalletServicesPlugin.js +19 -0
  19. package/dist/lib.cjs/react/hooks/useWalletUI.js +45 -0
  20. package/dist/lib.cjs/react/hooks/useWeb3Auth.js +28 -0
  21. package/dist/lib.cjs/react/hooks/useWeb3AuthConnect.js +44 -0
  22. package/dist/lib.cjs/react/hooks/useWeb3AuthDisconnect.js +30 -0
  23. package/dist/lib.cjs/react/{no-modal/hooks/useWeb3Auth.js → hooks/useWeb3AuthInner.js} +9 -9
  24. package/dist/lib.cjs/react/hooks/useWeb3AuthUser.js +50 -0
  25. package/dist/lib.cjs/react/index.js +26 -9
  26. package/dist/lib.cjs/react/wagmi/index.js +7 -0
  27. package/dist/lib.cjs/react/wagmi/provider.js +186 -0
  28. package/dist/lib.cjs/types/base/connector/baseConnector.d.ts +4 -5
  29. package/dist/lib.cjs/types/base/connector/constants.d.ts +1 -0
  30. package/dist/lib.cjs/types/base/connector/interfaces.d.ts +7 -2
  31. package/dist/lib.cjs/types/base/core/IWeb3Auth.d.ts +17 -4
  32. package/dist/lib.cjs/types/base/hooks/index.d.ts +3 -23
  33. package/dist/lib.cjs/types/base/wallet/index.d.ts +16 -21
  34. package/dist/lib.cjs/types/connectors/auth-connector/authConnector.d.ts +2 -2
  35. package/dist/lib.cjs/types/connectors/index.d.ts +1 -0
  36. package/dist/lib.cjs/types/connectors/metamask-connector/index.d.ts +1 -1
  37. package/dist/lib.cjs/types/noModal.d.ts +2 -2
  38. package/dist/lib.cjs/types/plugins/nft-checkout-plugin/plugin.d.ts +2 -2
  39. package/dist/lib.cjs/types/plugins/wallet-services-plugin/plugin.d.ts +2 -2
  40. package/dist/lib.cjs/types/react/context/WalletServicesInnerContext.d.ts +6 -0
  41. package/dist/lib.cjs/types/react/{no-modal → context}/Web3AuthInnerContext.d.ts +1 -1
  42. package/dist/lib.cjs/types/react/hooks/index.d.ts +13 -0
  43. package/dist/lib.cjs/types/react/hooks/useCheckout.d.ts +8 -0
  44. package/dist/lib.cjs/types/react/hooks/useEnableMFA.d.ts +7 -0
  45. package/dist/lib.cjs/types/react/hooks/useIdentityToken.d.ts +13 -0
  46. package/dist/lib.cjs/types/react/hooks/useManageMFA.d.ts +7 -0
  47. package/dist/lib.cjs/types/react/hooks/useSwap.d.ts +8 -0
  48. package/dist/lib.cjs/types/react/hooks/useSwitchChain.d.ts +7 -0
  49. package/dist/lib.cjs/types/react/hooks/useWalletConnectScanner.d.ts +8 -0
  50. package/dist/lib.cjs/types/react/hooks/useWalletUI.d.ts +8 -0
  51. package/dist/lib.cjs/types/react/hooks/useWeb3Auth.d.ts +3 -0
  52. package/dist/lib.cjs/types/react/hooks/useWeb3AuthConnect.d.ts +9 -0
  53. package/dist/lib.cjs/types/react/hooks/useWeb3AuthDisconnect.d.ts +9 -0
  54. package/dist/lib.cjs/types/react/hooks/useWeb3AuthInner.d.ts +2 -0
  55. package/dist/lib.cjs/types/react/hooks/useWeb3AuthUser.d.ts +9 -0
  56. package/dist/lib.cjs/types/react/index.d.ts +3 -2
  57. package/dist/lib.cjs/types/react/{no-modal/interfaces.d.ts → interfaces.d.ts} +8 -3
  58. package/dist/lib.cjs/types/react/wagmi/index.d.ts +1 -0
  59. package/dist/lib.cjs/types/react/wagmi/interface.d.ts +4 -0
  60. package/dist/lib.cjs/types/react/wagmi/provider.d.ts +4 -0
  61. package/dist/lib.cjs/types/vue/no-modal/interfaces.d.ts +2 -2
  62. package/dist/lib.esm/base/connector/constants.js +2 -1
  63. package/dist/lib.esm/base/wallet/index.js +1 -3
  64. package/dist/lib.esm/connectors/auth-connector/authConnector.js +3 -1
  65. package/dist/lib.esm/index.js +1 -0
  66. package/dist/lib.esm/noModal.js +20 -3
  67. package/dist/lib.esm/plugins/nft-checkout-plugin/plugin.js +2 -2
  68. package/dist/lib.esm/plugins/wallet-services-plugin/plugin.js +1 -1
  69. package/dist/lib.esm/react/Web3AuthProvider.js +17 -0
  70. package/dist/lib.esm/react/context/WalletServicesInnerContext.js +80 -0
  71. package/dist/lib.esm/react/{no-modal → context}/Web3AuthInnerContext.js +14 -79
  72. package/dist/lib.esm/react/hooks/useCheckout.js +43 -0
  73. package/dist/lib.esm/react/hooks/useEnableMFA.js +28 -0
  74. package/dist/lib.esm/react/hooks/useIdentityToken.js +40 -0
  75. package/dist/lib.esm/react/hooks/useManageMFA.js +28 -0
  76. package/dist/lib.esm/react/hooks/useSwap.js +43 -0
  77. package/dist/lib.esm/react/hooks/useSwitchChain.js +30 -0
  78. package/dist/lib.esm/react/hooks/useWalletConnectScanner.js +43 -0
  79. package/dist/lib.esm/react/hooks/useWalletServicesPlugin.js +17 -0
  80. package/dist/lib.esm/react/hooks/useWalletUI.js +43 -0
  81. package/dist/lib.esm/react/hooks/useWeb3Auth.js +26 -0
  82. package/dist/lib.esm/react/hooks/useWeb3AuthConnect.js +42 -0
  83. package/dist/lib.esm/react/hooks/useWeb3AuthDisconnect.js +28 -0
  84. package/dist/lib.esm/react/{no-modal/hooks/useWeb3Auth.js → hooks/useWeb3AuthInner.js} +9 -9
  85. package/dist/lib.esm/react/hooks/useWeb3AuthUser.js +48 -0
  86. package/dist/lib.esm/react/index.js +14 -5
  87. package/dist/lib.esm/react/wagmi/index.js +1 -0
  88. package/dist/lib.esm/react/wagmi/provider.js +184 -0
  89. package/dist/noModal.umd.min.js +1 -1
  90. package/package.json +22 -6
  91. package/dist/lib.cjs/react/no-modal/Web3AuthProvider.js +0 -15
  92. package/dist/lib.cjs/react/wallet-services-plugin/WalletServicesProvider.js +0 -16
  93. package/dist/lib.cjs/react/wallet-services-plugin/hooks/useWalletServicesPlugin.js +0 -26
  94. package/dist/lib.cjs/types/react/no-modal/hooks/index.d.ts +0 -1
  95. package/dist/lib.cjs/types/react/no-modal/hooks/useWeb3Auth.d.ts +0 -2
  96. package/dist/lib.cjs/types/react/no-modal/index.d.ts +0 -3
  97. package/dist/lib.cjs/types/react/wallet-services-plugin/WalletServicesContext.d.ts +0 -7
  98. package/dist/lib.cjs/types/react/wallet-services-plugin/WalletServicesProvider.d.ts +0 -7
  99. package/dist/lib.cjs/types/react/wallet-services-plugin/hooks/index.d.ts +0 -1
  100. package/dist/lib.cjs/types/react/wallet-services-plugin/index.d.ts +0 -4
  101. package/dist/lib.cjs/types/react/wallet-services-plugin/interfaces.d.ts +0 -5
  102. package/dist/lib.esm/react/no-modal/Web3AuthProvider.js +0 -13
  103. package/dist/lib.esm/react/wallet-services-plugin/WalletServicesContext.js +0 -95
  104. package/dist/lib.esm/react/wallet-services-plugin/WalletServicesProvider.js +0 -14
  105. package/dist/lib.esm/react/wallet-services-plugin/hooks/useWalletServicesPlugin.js +0 -24
  106. /package/dist/lib.cjs/types/react/{no-modal/Web3AuthProvider.d.ts → Web3AuthProvider.d.ts} +0 -0
  107. /package/dist/lib.cjs/types/react/{wallet-services-plugin/hooks → hooks}/useWalletServicesPlugin.d.ts +0 -0
@@ -14,7 +14,8 @@ const CONNECTOR_STATUS = {
14
14
  const CONNECTOR_EVENTS = _objectSpread(_objectSpread({}, CONNECTOR_STATUS), {}, {
15
15
  CONNECTOR_DATA_UPDATED: "connector_data_updated",
16
16
  CACHE_CLEAR: "cache_clear",
17
- CONNECTORS_UPDATED: "connectors_updated"
17
+ CONNECTORS_UPDATED: "connectors_updated",
18
+ MFA_ENABLED: "mfa_enabled"
18
19
  });
19
20
  const CONNECTOR_CATEGORY = {
20
21
  EXTERNAL: "external",
@@ -4,8 +4,7 @@ var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
4
4
 
5
5
  const MULTI_CHAIN_CONNECTORS = {
6
6
  AUTH: "auth",
7
- WALLET_CONNECT_V2: "wallet-connect-v2",
8
- SFA: "sfa"
7
+ WALLET_CONNECT_V2: "wallet-connect-v2"
9
8
  };
10
9
  const SOLANA_CONNECTORS = _objectSpread({}, MULTI_CHAIN_CONNECTORS);
11
10
  const EVM_CONNECTORS = _objectSpread({
@@ -16,7 +15,6 @@ const WALLET_CONNECTORS = _objectSpread(_objectSpread({}, EVM_CONNECTORS), SOLAN
16
15
  const CONNECTOR_NAMES = {
17
16
  [MULTI_CHAIN_CONNECTORS.AUTH]: "Auth",
18
17
  [MULTI_CHAIN_CONNECTORS.WALLET_CONNECT_V2]: "Wallet Connect v2",
19
- [MULTI_CHAIN_CONNECTORS.SFA]: "SFA",
20
18
  [EVM_CONNECTORS.COINBASE]: "Coinbase Smart Wallet",
21
19
  [EVM_CONNECTORS.METAMASK]: "MetaMask"
22
20
  };
@@ -179,7 +179,9 @@ class AuthConnector extends baseConnector.BaseConnector {
179
179
  if (this.status !== constants.CONNECTOR_STATUS.CONNECTED) throw index$1.WalletLoginError.notConnectedError("Not connected with wallet");
180
180
  if (!this.authInstance) throw index$1.WalletInitializationError.notReady("authInstance is not ready");
181
181
  try {
182
- await this.authInstance.enableMFA(params);
182
+ const result = await this.authInstance.enableMFA(params);
183
+ // In redirect mode, the result is not available immediately, so we emit the event when the result is available.
184
+ if (result) this.emit(constants.CONNECTOR_EVENTS.MFA_ENABLED, result);
183
185
  } catch (error) {
184
186
  loglevel.log.error("Failed to enable MFA with auth provider", error);
185
187
  if (error instanceof index$1.Web3AuthError) {
@@ -21,6 +21,7 @@ var coinbaseConnector = require('./connectors/coinbase-connector/coinbaseConnect
21
21
  var injectedEvmConnector = require('./connectors/injected-evm-connector/injectedEvmConnector.js');
22
22
  var mipd = require('mipd');
23
23
  var index$3 = require('./connectors/injected-solana-connector/index.js');
24
+ var metamaskConnector = require('./connectors/metamask-connector/metamaskConnector.js');
24
25
  var config = require('./connectors/wallet-connect-v2-connector/config.js');
25
26
  var walletConnectV2Connector = require('./connectors/wallet-connect-v2-connector/walletConnectV2Connector.js');
26
27
  var WalletConnectV2Provider = require('./connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js');
@@ -133,6 +134,7 @@ Object.defineProperty(exports, "createMipd", {
133
134
  get: function () { return mipd.createStore; }
134
135
  });
135
136
  exports.hasSolanaWalletStandardFeatures = index$3.hasSolanaWalletStandardFeatures;
137
+ exports.metaMaskConnector = metamaskConnector.metaMaskConnector;
136
138
  Object.defineProperty(exports, "DEFAULT_EIP155_METHODS", {
137
139
  enumerable: true,
138
140
  get: function () { return config.DEFAULT_EIP155_METHODS; }
@@ -21,6 +21,7 @@ require('./providers/base-provider/utils.js');
21
21
  var CommonJRPCProvider = require('./providers/base-provider/CommonJRPCProvider.js');
22
22
  require('./providers/base-provider/commonPrivateKeyProvider.js');
23
23
  var metamaskConnector = require('./connectors/metamask-connector/metamaskConnector.js');
24
+ var plugin = require('./plugins/wallet-services-plugin/plugin.js');
24
25
 
25
26
  const _excluded = ["walletScope"];
26
27
  const CONNECTOR_CACHE_KEY = "Web3Auth-cachedConnector";
@@ -236,6 +237,10 @@ class Web3AuthNoModal extends auth.SafeEventEmitter {
236
237
  // if AA is enabled, filter out chains that are not AA-supported
237
238
  if (this.coreOptions.accountAbstractionConfig) {
238
239
  // write a for loop over accountAbstractionConfig.chains and check if the chainId is valid
240
+ if (this.coreOptions.accountAbstractionConfig.chains.length === 0) {
241
+ loglevel.log.error("Please configure chains for smart accounts on dashboard at https://dashboard.web3auth.io");
242
+ throw index.WalletInitializationError.invalidParams("Please configure chains for smart accounts on dashboard at https://dashboard.web3auth.io");
243
+ }
239
244
  for (const chain of this.coreOptions.accountAbstractionConfig.chains) {
240
245
  if (!utils.isHexStrict(chain.chainId)) {
241
246
  loglevel.log.error(`Please provide a valid chainId in accountAbstractionConfig.chains for chain ${chain.chainId}`);
@@ -368,7 +373,15 @@ class Web3AuthNoModal extends auth.SafeEventEmitter {
368
373
  this.setConnectors(connectors);
369
374
  }
370
375
  async initPlugins() {
371
- const pluginFns = this.coreOptions.plugins || [];
376
+ const {
377
+ chains,
378
+ plugins
379
+ } = this.coreOptions;
380
+ const pluginFns = plugins || [];
381
+ const isWsSupportedChain = chains.some(x => x.chainNamespace === baseControllers.CHAIN_NAMESPACES.EIP155 || x.chainNamespace === baseControllers.CHAIN_NAMESPACES.SOLANA);
382
+ if (isWsSupportedChain) {
383
+ pluginFns.push(plugin.walletServicesPlugin());
384
+ }
372
385
  for (const pluginFn of pluginFns) {
373
386
  const plugin = pluginFn();
374
387
  if (!this.plugins[plugin.name]) this.plugins[plugin.name] = plugin;
@@ -444,7 +457,7 @@ class Web3AuthNoModal extends auth.SafeEventEmitter {
444
457
  }
445
458
  loglevel.log.debug("disconnected", this.status, this.connectedConnectorName);
446
459
  await Promise.all(Object.values(this.plugins).map(async plugin => {
447
- if (!plugin.SUPPORTED_CONNECTORS.includes("all") && !plugin.SUPPORTED_CONNECTORS.includes(connector.name)) return;
460
+ if (!plugin.SUPPORTED_CONNECTORS.includes(connector.name)) return;
448
461
  if (plugin.status !== IPlugin.PLUGIN_STATUS.CONNECTED) return;
449
462
  return plugin.disconnect().catch(error => {
450
463
  // swallow error if connector doesn't supports this plugin.
@@ -479,6 +492,10 @@ class Web3AuthNoModal extends auth.SafeEventEmitter {
479
492
  this.clearCache();
480
493
  }
481
494
  });
495
+ connector.on(constants.CONNECTOR_EVENTS.MFA_ENABLED, isMFAEnabled => {
496
+ loglevel.log.debug("mfa enabled", isMFAEnabled);
497
+ this.emit(constants.CONNECTOR_EVENTS.MFA_ENABLED, isMFAEnabled);
498
+ });
482
499
  }
483
500
  checkInitRequirements() {
484
501
  if (this.status === constants.CONNECTOR_STATUS.CONNECTING) throw index.WalletInitializationError.notReady("Already pending connection");
@@ -520,7 +537,7 @@ class Web3AuthNoModal extends auth.SafeEventEmitter {
520
537
  try {
521
538
  var _this$currentChain5;
522
539
  // skip if it's not compatible with the connector
523
- if (!plugin.SUPPORTED_CONNECTORS.includes("all") && !plugin.SUPPORTED_CONNECTORS.includes(data.connector)) return;
540
+ if (!plugin.SUPPORTED_CONNECTORS.includes(data.connector)) return;
524
541
  // skip if it's not compatible with the current chain
525
542
  if (plugin.pluginNamespace !== IPlugin.PLUGIN_NAMESPACES.MULTICHAIN && plugin.pluginNamespace !== ((_this$currentChain5 = this.currentChain) === null || _this$currentChain5 === void 0 ? void 0 : _this$currentChain5.chainNamespace)) return;
526
543
  // skip if it's already connected
@@ -4,7 +4,7 @@ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
4
  var auth = require('@web3auth/auth');
5
5
  require('@toruslabs/base-controllers');
6
6
  require('../../base/errors/index.js');
7
- require('../../base/wallet/index.js');
7
+ var index = require('../../base/wallet/index.js');
8
8
  var constants = require('../../base/connector/constants.js');
9
9
  require('jwt-decode');
10
10
  require('../../base/loglevel.js');
@@ -19,7 +19,7 @@ class NFTCheckoutPlugin extends auth.SafeEventEmitter {
19
19
  super();
20
20
  _defineProperty(this, "name", IPlugin.EVM_PLUGINS.NFT_CHECKOUT);
21
21
  _defineProperty(this, "status", IPlugin.PLUGIN_STATUS.DISCONNECTED);
22
- _defineProperty(this, "SUPPORTED_CONNECTORS", ["all"]);
22
+ _defineProperty(this, "SUPPORTED_CONNECTORS", Object.values(index.WALLET_CONNECTORS));
23
23
  _defineProperty(this, "pluginNamespace", IPlugin.PLUGIN_NAMESPACES.EIP155);
24
24
  _defineProperty(this, "web3auth", null);
25
25
  _defineProperty(this, "nftCheckoutEmbedInstance", null);
@@ -20,7 +20,7 @@ class WalletServicesPlugin extends auth.SafeEventEmitter {
20
20
  super(...args);
21
21
  _defineProperty(this, "name", IPlugin.EVM_PLUGINS.WALLET_SERVICES);
22
22
  _defineProperty(this, "status", IPlugin.PLUGIN_STATUS.DISCONNECTED);
23
- _defineProperty(this, "SUPPORTED_CONNECTORS", [index.WALLET_CONNECTORS.AUTH, index.WALLET_CONNECTORS.SFA]);
23
+ _defineProperty(this, "SUPPORTED_CONNECTORS", [index.WALLET_CONNECTORS.AUTH]);
24
24
  _defineProperty(this, "pluginNamespace", IPlugin.PLUGIN_NAMESPACES.MULTICHAIN);
25
25
  _defineProperty(this, "wsEmbedInstance", void 0);
26
26
  _defineProperty(this, "provider", null);
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ var react = require('react');
4
+ var WalletServicesInnerContext = require('./context/WalletServicesInnerContext.js');
5
+ var Web3AuthInnerContext = require('./context/Web3AuthInnerContext.js');
6
+
7
+ function Web3AuthProvider({
8
+ config,
9
+ children
10
+ }) {
11
+ const pluginChild = react.createElement(WalletServicesInnerContext.WalletServicesContextProvider, {
12
+ context: Web3AuthInnerContext.Web3AuthInnerContext
13
+ }, children);
14
+ return react.createElement(Web3AuthInnerContext.Web3AuthInnerProvider, {
15
+ config
16
+ }, pluginChild);
17
+ }
18
+
19
+ exports.Web3AuthProvider = Web3AuthProvider;
@@ -9,7 +9,7 @@ require('../../base/wallet/index.js');
9
9
  var constants = require('../../base/connector/constants.js');
10
10
  require('jwt-decode');
11
11
  require('../../base/loglevel.js');
12
- var errors = require('../../base/plugin/errors.js');
12
+ require('../../base/plugin/errors.js');
13
13
  var IPlugin = require('../../base/plugin/IPlugin.js');
14
14
  require('@toruslabs/constants');
15
15
  require('@toruslabs/http-helpers');
@@ -19,14 +19,15 @@ function WalletServicesContextProvider({
19
19
  children,
20
20
  context
21
21
  }) {
22
- const [isPluginConnected, setIsPluginConnected] = react.useState(false);
23
- const [walletServicesPlugin, setWalletServicesPlugin] = react.useState(null);
24
22
  const web3AuthContext = react.useContext(context);
25
23
  const {
26
24
  getPlugin,
27
25
  isInitialized,
28
26
  isConnected
29
27
  } = web3AuthContext;
28
+ const [ready, setReady] = react.useState(false);
29
+ const [connecting, setConnecting] = react.useState(false);
30
+ const [walletServicesPlugin, setWalletServicesPlugin] = react.useState(null);
30
31
  react.useEffect(() => {
31
32
  if (isInitialized) {
32
33
  const plugin = getPlugin(IPlugin.EVM_PLUGINS.WALLET_SERVICES);
@@ -36,59 +37,43 @@ function WalletServicesContextProvider({
36
37
  react.useEffect(() => {
37
38
  if (isConnected) {
38
39
  const plugin = getPlugin(IPlugin.EVM_PLUGINS.WALLET_SERVICES);
39
- if (!walletServicesPlugin) setWalletServicesPlugin(plugin);
40
+ setWalletServicesPlugin(plugin);
40
41
  // when rehydrating, the connectedListener may be registered after the connected event is emitted, we need to check the status here
41
- if ((walletServicesPlugin === null || walletServicesPlugin === void 0 ? void 0 : walletServicesPlugin.status) === constants.CONNECTOR_STATUS.CONNECTED) setIsPluginConnected(true);
42
+ if ((plugin === null || plugin === void 0 ? void 0 : plugin.status) === constants.CONNECTOR_STATUS.CONNECTED) setReady(true);
42
43
  }
43
44
  }, [isConnected, getPlugin, walletServicesPlugin]);
44
45
  react.useEffect(() => {
45
46
  const connectedListener = () => {
46
- setIsPluginConnected(true);
47
+ setReady(true);
48
+ setConnecting(false);
47
49
  };
48
50
  const disconnectedListener = () => {
49
- setIsPluginConnected(false);
51
+ setReady(false);
52
+ setConnecting(false);
53
+ };
54
+ const connectingListener = () => {
55
+ setConnecting(true);
50
56
  };
51
57
  if (walletServicesPlugin) {
52
58
  walletServicesPlugin.on(IPlugin.PLUGIN_EVENTS.CONNECTED, connectedListener);
53
59
  walletServicesPlugin.on(IPlugin.PLUGIN_EVENTS.DISCONNECTED, disconnectedListener);
60
+ walletServicesPlugin.on(IPlugin.PLUGIN_EVENTS.CONNECTING, connectingListener);
54
61
  }
55
62
  return () => {
56
63
  if (walletServicesPlugin) {
57
64
  walletServicesPlugin.off(IPlugin.PLUGIN_EVENTS.CONNECTED, connectedListener);
58
65
  walletServicesPlugin.off(IPlugin.PLUGIN_EVENTS.DISCONNECTED, disconnectedListener);
66
+ walletServicesPlugin.off(IPlugin.PLUGIN_EVENTS.CONNECTING, connectingListener);
59
67
  }
60
68
  };
61
69
  }, [walletServicesPlugin]);
62
- const showWalletConnectScanner = react.useCallback(async showWalletConnectParams => {
63
- if (!walletServicesPlugin) throw errors.WalletServicesPluginError.notInitialized();
64
- if (!isPluginConnected) throw errors.WalletServicesPluginError.walletPluginNotConnected();
65
- return walletServicesPlugin.showWalletConnectScanner(showWalletConnectParams);
66
- }, [walletServicesPlugin, isPluginConnected]);
67
- const showWalletUI = react.useCallback(async showWalletUiParams => {
68
- if (!walletServicesPlugin) throw errors.WalletServicesPluginError.notInitialized();
69
- if (!isPluginConnected) throw errors.WalletServicesPluginError.walletPluginNotConnected();
70
- return walletServicesPlugin.showWalletUi(showWalletUiParams);
71
- }, [walletServicesPlugin, isPluginConnected]);
72
- const showCheckout = react.useCallback(async showCheckoutParams => {
73
- if (!walletServicesPlugin) throw errors.WalletServicesPluginError.notInitialized();
74
- if (!isPluginConnected) throw errors.WalletServicesPluginError.walletPluginNotConnected();
75
- return walletServicesPlugin.showCheckout(showCheckoutParams);
76
- }, [walletServicesPlugin, isPluginConnected]);
77
- const showSwap = react.useCallback(async showSwapParams => {
78
- if (!walletServicesPlugin) throw errors.WalletServicesPluginError.notInitialized();
79
- if (!isPluginConnected) throw errors.WalletServicesPluginError.walletPluginNotConnected();
80
- return walletServicesPlugin.showSwap(showSwapParams);
81
- }, [walletServicesPlugin, isPluginConnected]);
82
70
  const value = react.useMemo(() => {
83
71
  return {
84
72
  plugin: walletServicesPlugin,
85
- isPluginConnected,
86
- showWalletConnectScanner,
87
- showCheckout,
88
- showWalletUI,
89
- showSwap
73
+ ready,
74
+ connecting
90
75
  };
91
- }, [walletServicesPlugin, isPluginConnected, showWalletConnectScanner, showCheckout, showWalletUI, showSwap]);
76
+ }, [walletServicesPlugin, ready, connecting]);
92
77
  return react.createElement(WalletServicesContext.Provider, {
93
78
  value
94
79
  }, children);
@@ -22,16 +22,13 @@ function Web3AuthInnerProvider(params) {
22
22
  config
23
23
  } = params;
24
24
  const [web3Auth, setWeb3Auth] = react.useState(null);
25
- const [isConnecting, setIsConnecting] = react.useState(false);
26
25
  const [isInitializing, setIsInitializing] = react.useState(false);
27
26
  const [initError, setInitError] = react.useState(null);
28
- const [connectError, setConnectError] = react.useState(null);
29
27
  const [isConnected, setIsConnected] = react.useState(false);
30
28
  const [provider, setProvider] = react.useState(null);
31
- const [userInfo, setUserInfo] = react.useState(null);
32
- const [isMFAEnabled, setIsMFAEnabled] = react.useState(false);
33
29
  const [isInitialized, setIsInitialized] = react.useState(false);
34
30
  const [status, setStatus] = react.useState(null);
31
+ const [isMFAEnabled, setIsMFAEnabled] = react.useState(false);
35
32
  const getPlugin = react.useCallback(name => {
36
33
  if (!web3Auth) throw index.WalletInitializationError.notReady();
37
34
  return web3Auth.getPlugin(name);
@@ -39,8 +36,6 @@ function Web3AuthInnerProvider(params) {
39
36
  react.useEffect(() => {
40
37
  const resetHookState = () => {
41
38
  setProvider(null);
42
- setUserInfo(null);
43
- setIsMFAEnabled(false);
44
39
  setIsConnected(false);
45
40
  setStatus(null);
46
41
  };
@@ -71,40 +66,25 @@ function Web3AuthInnerProvider(params) {
71
66
  controller.abort();
72
67
  };
73
68
  }, [web3Auth]);
74
- react.useEffect(() => {
75
- const addState = async () => {
76
- setProvider(web3Auth.provider);
77
- const userState = await web3Auth.getUserInfo();
78
- setUserInfo(userState);
79
- setIsMFAEnabled((userState === null || userState === void 0 ? void 0 : userState.isMfaEnabled) || false);
80
- };
81
- const resetState = () => {
82
- setProvider(null);
83
- setUserInfo(null);
84
- setIsMFAEnabled(false);
85
- };
86
- if (web3Auth) {
87
- if (isConnected) addState();else resetState();
88
- }
89
- }, [web3Auth, isConnected]);
90
- // TODO: don't throw error in init, connect in v9
91
69
  react.useEffect(() => {
92
70
  const notReadyListener = () => setStatus(constants.CONNECTOR_STATUS.NOT_READY);
93
71
  const readyListener = () => {
94
72
  setStatus(web3Auth.status);
95
73
  setIsInitialized(true);
96
74
  };
97
- const connectedListener = () => {
75
+ const connectedListener = data => {
98
76
  setStatus(web3Auth.status);
99
77
  // we do this because of rehydration issues. status connected is fired first but web3auth sdk is not ready yet.
100
78
  if (web3Auth.status === constants.CONNECTOR_STATUS.CONNECTED) {
101
79
  setIsInitialized(true);
102
80
  setIsConnected(true);
81
+ setProvider(data.provider);
103
82
  }
104
83
  };
105
84
  const disconnectedListener = () => {
106
85
  setStatus(web3Auth.status);
107
86
  setIsConnected(false);
87
+ setProvider(null);
108
88
  };
109
89
  const connectingListener = () => {
110
90
  setStatus(web3Auth.status);
@@ -112,6 +92,9 @@ function Web3AuthInnerProvider(params) {
112
92
  const errorListener = () => {
113
93
  setStatus(constants.CONNECTOR_STATUS.ERRORED);
114
94
  };
95
+ const mfaEnabledListener = isMFAEnabled => {
96
+ if (typeof isMFAEnabled === "boolean") setIsMFAEnabled(isMFAEnabled);
97
+ };
115
98
  if (web3Auth) {
116
99
  // web3Auth is initialized here.
117
100
  setStatus(web3Auth.status);
@@ -121,6 +104,7 @@ function Web3AuthInnerProvider(params) {
121
104
  web3Auth.on(constants.CONNECTOR_EVENTS.DISCONNECTED, disconnectedListener);
122
105
  web3Auth.on(constants.CONNECTOR_EVENTS.CONNECTING, connectingListener);
123
106
  web3Auth.on(constants.CONNECTOR_EVENTS.ERRORED, errorListener);
107
+ web3Auth.on(constants.CONNECTOR_EVENTS.MFA_ENABLED, mfaEnabledListener);
124
108
  }
125
109
  return () => {
126
110
  if (web3Auth) {
@@ -130,73 +114,24 @@ function Web3AuthInnerProvider(params) {
130
114
  web3Auth.off(constants.CONNECTOR_EVENTS.DISCONNECTED, disconnectedListener);
131
115
  web3Auth.off(constants.CONNECTOR_EVENTS.CONNECTING, connectingListener);
132
116
  web3Auth.off(constants.CONNECTOR_EVENTS.ERRORED, errorListener);
117
+ web3Auth.off(constants.CONNECTOR_EVENTS.MFA_ENABLED, mfaEnabledListener);
133
118
  }
134
119
  };
135
120
  }, [web3Auth]);
136
- const enableMFA = react.useCallback(async loginParams => {
137
- if (!web3Auth) throw index.WalletInitializationError.notReady();
138
- if (!isConnected) throw index.WalletLoginError.notConnectedError();
139
- await web3Auth.enableMFA(loginParams);
140
- const localUserInfo = await web3Auth.getUserInfo();
141
- setUserInfo(localUserInfo);
142
- setIsMFAEnabled(localUserInfo.isMfaEnabled || false);
143
- }, [web3Auth, isConnected]);
144
- const manageMFA = react.useCallback(async loginParams => {
145
- if (!web3Auth) throw index.WalletInitializationError.notReady();
146
- if (!isConnected) throw index.WalletLoginError.notConnectedError();
147
- await web3Auth.manageMFA(loginParams);
148
- }, [web3Auth, isConnected]);
149
- const logout = react.useCallback(async (logoutParams = {
150
- cleanup: false
151
- }) => {
152
- if (!web3Auth) throw index.WalletInitializationError.notReady();
153
- if (!isConnected) throw index.WalletLoginError.notConnectedError();
154
- await web3Auth.logout(logoutParams);
155
- }, [web3Auth, isConnected]);
156
- const connectTo = react.useCallback(async (walletName, loginParams) => {
157
- if (!web3Auth) throw index.WalletInitializationError.notReady();
158
- try {
159
- setConnectError(null);
160
- setIsConnecting(true);
161
- const localProvider = await web3Auth.connectTo(walletName, loginParams);
162
- return localProvider;
163
- } catch (error) {
164
- setConnectError(error);
165
- throw error;
166
- } finally {
167
- setIsConnecting(false);
168
- }
169
- }, [web3Auth]);
170
- const authenticateUser = react.useCallback(async () => {
171
- if (!web3Auth) throw index.WalletInitializationError.notReady();
172
- return web3Auth.authenticateUser();
173
- }, [web3Auth]);
174
- const switchChain = react.useCallback(chainParams => {
175
- if (!web3Auth) throw index.WalletInitializationError.notReady();
176
- return web3Auth.switchChain(chainParams);
177
- }, [web3Auth]);
178
121
  const value = react.useMemo(() => {
179
122
  return {
180
123
  web3Auth,
181
124
  isConnected,
182
125
  isInitialized,
183
126
  provider,
184
- userInfo,
185
- isMFAEnabled,
186
127
  status,
187
- getPlugin,
188
- connectTo,
189
- enableMFA,
190
- manageMFA,
191
- logout,
192
- authenticateUser,
193
- switchChain,
194
128
  isInitializing,
195
- isConnecting,
196
129
  initError,
197
- connectError
130
+ isMFAEnabled,
131
+ getPlugin,
132
+ setIsMFAEnabled
198
133
  };
199
- }, [web3Auth, isConnected, isInitialized, provider, userInfo, isMFAEnabled, status, connectTo, getPlugin, enableMFA, manageMFA, logout, authenticateUser, switchChain, isConnecting, isInitializing, initError, connectError]);
134
+ }, [web3Auth, isConnected, isInitialized, provider, status, getPlugin, isInitializing, initError, isMFAEnabled, setIsMFAEnabled]);
200
135
  return react.createElement(Web3AuthInnerContext.Provider, {
201
136
  value
202
137
  }, children);
@@ -0,0 +1,45 @@
1
+ 'use strict';
2
+
3
+ var react = require('react');
4
+ require('@toruslabs/base-controllers');
5
+ require('@babel/runtime/helpers/defineProperty');
6
+ require('@web3auth/auth');
7
+ require('../../base/errors/index.js');
8
+ require('../../base/wallet/index.js');
9
+ require('../../base/connector/constants.js');
10
+ require('jwt-decode');
11
+ require('../../base/loglevel.js');
12
+ var errors = require('../../base/plugin/errors.js');
13
+ require('../../base/plugin/IPlugin.js');
14
+ require('@toruslabs/constants');
15
+ require('@toruslabs/http-helpers');
16
+ var useWalletServicesPlugin = require('./useWalletServicesPlugin.js');
17
+
18
+ const useCheckout = () => {
19
+ const {
20
+ plugin,
21
+ ready
22
+ } = useWalletServicesPlugin.useWalletServicesPlugin();
23
+ const [loading, setLoading] = react.useState(false);
24
+ const [error, setError] = react.useState(null);
25
+ const showCheckout = react.useCallback(async showCheckoutParams => {
26
+ setLoading(true);
27
+ setError(null);
28
+ try {
29
+ if (!plugin) throw errors.WalletServicesPluginError.notInitialized();
30
+ if (!ready) throw errors.WalletServicesPluginError.walletPluginNotConnected();
31
+ await plugin.showCheckout(showCheckoutParams);
32
+ } catch (error) {
33
+ setError(error);
34
+ } finally {
35
+ setLoading(false);
36
+ }
37
+ }, [plugin, ready]);
38
+ return {
39
+ loading,
40
+ error,
41
+ showCheckout
42
+ };
43
+ };
44
+
45
+ exports.useCheckout = useCheckout;
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ var react = require('react');
4
+ var useWeb3AuthInner = require('./useWeb3AuthInner.js');
5
+
6
+ const useEnableMFA = () => {
7
+ const {
8
+ web3Auth
9
+ } = useWeb3AuthInner.useWeb3AuthInner();
10
+ const [loading, setLoading] = react.useState(false);
11
+ const [error, setError] = react.useState(null);
12
+ const enableMFA = react.useCallback(async params => {
13
+ setLoading(true);
14
+ setError(null);
15
+ try {
16
+ await web3Auth.enableMFA(params);
17
+ } catch (error) {
18
+ setError(error);
19
+ } finally {
20
+ setLoading(false);
21
+ }
22
+ }, [web3Auth]);
23
+ return {
24
+ loading,
25
+ error,
26
+ enableMFA
27
+ };
28
+ };
29
+
30
+ exports.useEnableMFA = useEnableMFA;
@@ -0,0 +1,42 @@
1
+ 'use strict';
2
+
3
+ var react = require('react');
4
+ var useWeb3AuthInner = require('./useWeb3AuthInner.js');
5
+
6
+ const useIdentityToken = () => {
7
+ const {
8
+ web3Auth,
9
+ isConnected
10
+ } = useWeb3AuthInner.useWeb3AuthInner();
11
+ const [loading, setLoading] = react.useState(false);
12
+ const [error, setError] = react.useState(null);
13
+ const [token, setToken] = react.useState(null);
14
+ const authenticateUser = react.useCallback(async () => {
15
+ setLoading(true);
16
+ setError(null);
17
+ try {
18
+ const userAuthInfo = await web3Auth.authenticateUser();
19
+ if (userAuthInfo !== null && userAuthInfo !== void 0 && userAuthInfo.idToken) {
20
+ setToken(userAuthInfo.idToken);
21
+ }
22
+ return userAuthInfo === null || userAuthInfo === void 0 ? void 0 : userAuthInfo.idToken;
23
+ } catch (error) {
24
+ setError(error);
25
+ } finally {
26
+ setLoading(false);
27
+ }
28
+ }, [web3Auth]);
29
+ react.useEffect(() => {
30
+ if (!isConnected && token) {
31
+ setToken(null);
32
+ }
33
+ }, [isConnected, token]);
34
+ return {
35
+ loading,
36
+ error,
37
+ token,
38
+ authenticateUser
39
+ };
40
+ };
41
+
42
+ exports.useIdentityToken = useIdentityToken;
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ var react = require('react');
4
+ var useWeb3AuthInner = require('./useWeb3AuthInner.js');
5
+
6
+ const useManageMFA = () => {
7
+ const {
8
+ web3Auth
9
+ } = useWeb3AuthInner.useWeb3AuthInner();
10
+ const [loading, setLoading] = react.useState(false);
11
+ const [error, setError] = react.useState(null);
12
+ const manageMFA = react.useCallback(async params => {
13
+ setLoading(true);
14
+ setError(null);
15
+ try {
16
+ await web3Auth.manageMFA(params);
17
+ } catch (error) {
18
+ setError(error);
19
+ } finally {
20
+ setLoading(false);
21
+ }
22
+ }, [web3Auth]);
23
+ return {
24
+ loading,
25
+ error,
26
+ manageMFA
27
+ };
28
+ };
29
+
30
+ exports.useManageMFA = useManageMFA;
@@ -0,0 +1,45 @@
1
+ 'use strict';
2
+
3
+ var react = require('react');
4
+ require('@toruslabs/base-controllers');
5
+ require('@babel/runtime/helpers/defineProperty');
6
+ require('@web3auth/auth');
7
+ require('../../base/errors/index.js');
8
+ require('../../base/wallet/index.js');
9
+ require('../../base/connector/constants.js');
10
+ require('jwt-decode');
11
+ require('../../base/loglevel.js');
12
+ var errors = require('../../base/plugin/errors.js');
13
+ require('../../base/plugin/IPlugin.js');
14
+ require('@toruslabs/constants');
15
+ require('@toruslabs/http-helpers');
16
+ var useWalletServicesPlugin = require('./useWalletServicesPlugin.js');
17
+
18
+ const useSwap = () => {
19
+ const {
20
+ plugin,
21
+ ready
22
+ } = useWalletServicesPlugin.useWalletServicesPlugin();
23
+ const [loading, setLoading] = react.useState(false);
24
+ const [error, setError] = react.useState(null);
25
+ const showSwap = react.useCallback(async showSwapParams => {
26
+ setLoading(true);
27
+ setError(null);
28
+ try {
29
+ if (!plugin) throw errors.WalletServicesPluginError.notInitialized();
30
+ if (!ready) throw errors.WalletServicesPluginError.walletPluginNotConnected();
31
+ await plugin.showSwap(showSwapParams);
32
+ } catch (error) {
33
+ setError(error);
34
+ } finally {
35
+ setLoading(false);
36
+ }
37
+ }, [plugin, ready]);
38
+ return {
39
+ loading,
40
+ error,
41
+ showSwap
42
+ };
43
+ };
44
+
45
+ exports.useSwap = useSwap;
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ var react = require('react');
4
+ var useWeb3AuthInner = require('./useWeb3AuthInner.js');
5
+
6
+ const useSwitchChain = () => {
7
+ const {
8
+ web3Auth
9
+ } = useWeb3AuthInner.useWeb3AuthInner();
10
+ const [loading, setLoading] = react.useState(false);
11
+ const [error, setError] = react.useState(null);
12
+ const switchChain = react.useCallback(async chainId => {
13
+ setLoading(true);
14
+ setError(null);
15
+ try {
16
+ await web3Auth.switchChain({
17
+ chainId
18
+ });
19
+ } catch (error) {
20
+ setError(error);
21
+ } finally {
22
+ setLoading(false);
23
+ }
24
+ }, [web3Auth]);
25
+ return {
26
+ loading,
27
+ error,
28
+ switchChain
29
+ };
30
+ };
31
+
32
+ exports.useSwitchChain = useSwitchChain;