@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.
- package/dist/lib.cjs/base/connector/constants.js +2 -1
- package/dist/lib.cjs/base/wallet/index.js +1 -3
- package/dist/lib.cjs/connectors/auth-connector/authConnector.js +3 -1
- package/dist/lib.cjs/index.js +2 -0
- package/dist/lib.cjs/noModal.js +20 -3
- package/dist/lib.cjs/plugins/nft-checkout-plugin/plugin.js +2 -2
- package/dist/lib.cjs/plugins/wallet-services-plugin/plugin.js +1 -1
- package/dist/lib.cjs/react/Web3AuthProvider.js +19 -0
- package/dist/lib.cjs/react/{wallet-services-plugin/WalletServicesContext.js → context/WalletServicesInnerContext.js} +18 -33
- package/dist/lib.cjs/react/{no-modal → context}/Web3AuthInnerContext.js +13 -78
- package/dist/lib.cjs/react/hooks/useCheckout.js +45 -0
- package/dist/lib.cjs/react/hooks/useEnableMFA.js +30 -0
- package/dist/lib.cjs/react/hooks/useIdentityToken.js +42 -0
- package/dist/lib.cjs/react/hooks/useManageMFA.js +30 -0
- package/dist/lib.cjs/react/hooks/useSwap.js +45 -0
- package/dist/lib.cjs/react/hooks/useSwitchChain.js +32 -0
- package/dist/lib.cjs/react/hooks/useWalletConnectScanner.js +45 -0
- package/dist/lib.cjs/react/hooks/useWalletServicesPlugin.js +19 -0
- package/dist/lib.cjs/react/hooks/useWalletUI.js +45 -0
- package/dist/lib.cjs/react/hooks/useWeb3Auth.js +28 -0
- package/dist/lib.cjs/react/hooks/useWeb3AuthConnect.js +44 -0
- package/dist/lib.cjs/react/hooks/useWeb3AuthDisconnect.js +30 -0
- package/dist/lib.cjs/react/{no-modal/hooks/useWeb3Auth.js → hooks/useWeb3AuthInner.js} +9 -9
- package/dist/lib.cjs/react/hooks/useWeb3AuthUser.js +50 -0
- package/dist/lib.cjs/react/index.js +26 -9
- package/dist/lib.cjs/react/wagmi/index.js +7 -0
- package/dist/lib.cjs/react/wagmi/provider.js +186 -0
- package/dist/lib.cjs/types/base/connector/baseConnector.d.ts +4 -5
- package/dist/lib.cjs/types/base/connector/constants.d.ts +1 -0
- package/dist/lib.cjs/types/base/connector/interfaces.d.ts +7 -2
- package/dist/lib.cjs/types/base/core/IWeb3Auth.d.ts +17 -4
- package/dist/lib.cjs/types/base/hooks/index.d.ts +3 -23
- package/dist/lib.cjs/types/base/wallet/index.d.ts +16 -21
- package/dist/lib.cjs/types/connectors/auth-connector/authConnector.d.ts +2 -2
- package/dist/lib.cjs/types/connectors/index.d.ts +1 -0
- package/dist/lib.cjs/types/connectors/metamask-connector/index.d.ts +1 -1
- package/dist/lib.cjs/types/noModal.d.ts +2 -2
- package/dist/lib.cjs/types/plugins/nft-checkout-plugin/plugin.d.ts +2 -2
- package/dist/lib.cjs/types/plugins/wallet-services-plugin/plugin.d.ts +2 -2
- package/dist/lib.cjs/types/react/context/WalletServicesInnerContext.d.ts +6 -0
- package/dist/lib.cjs/types/react/{no-modal → context}/Web3AuthInnerContext.d.ts +1 -1
- package/dist/lib.cjs/types/react/hooks/index.d.ts +13 -0
- package/dist/lib.cjs/types/react/hooks/useCheckout.d.ts +8 -0
- package/dist/lib.cjs/types/react/hooks/useEnableMFA.d.ts +7 -0
- package/dist/lib.cjs/types/react/hooks/useIdentityToken.d.ts +13 -0
- package/dist/lib.cjs/types/react/hooks/useManageMFA.d.ts +7 -0
- package/dist/lib.cjs/types/react/hooks/useSwap.d.ts +8 -0
- package/dist/lib.cjs/types/react/hooks/useSwitchChain.d.ts +7 -0
- package/dist/lib.cjs/types/react/hooks/useWalletConnectScanner.d.ts +8 -0
- package/dist/lib.cjs/types/react/hooks/useWalletUI.d.ts +8 -0
- package/dist/lib.cjs/types/react/hooks/useWeb3Auth.d.ts +3 -0
- package/dist/lib.cjs/types/react/hooks/useWeb3AuthConnect.d.ts +9 -0
- package/dist/lib.cjs/types/react/hooks/useWeb3AuthDisconnect.d.ts +9 -0
- package/dist/lib.cjs/types/react/hooks/useWeb3AuthInner.d.ts +2 -0
- package/dist/lib.cjs/types/react/hooks/useWeb3AuthUser.d.ts +9 -0
- package/dist/lib.cjs/types/react/index.d.ts +3 -2
- package/dist/lib.cjs/types/react/{no-modal/interfaces.d.ts → interfaces.d.ts} +8 -3
- package/dist/lib.cjs/types/react/wagmi/index.d.ts +1 -0
- package/dist/lib.cjs/types/react/wagmi/interface.d.ts +4 -0
- package/dist/lib.cjs/types/react/wagmi/provider.d.ts +4 -0
- package/dist/lib.cjs/types/vue/no-modal/interfaces.d.ts +2 -2
- package/dist/lib.esm/base/connector/constants.js +2 -1
- package/dist/lib.esm/base/wallet/index.js +1 -3
- package/dist/lib.esm/connectors/auth-connector/authConnector.js +3 -1
- package/dist/lib.esm/index.js +1 -0
- package/dist/lib.esm/noModal.js +20 -3
- package/dist/lib.esm/plugins/nft-checkout-plugin/plugin.js +2 -2
- package/dist/lib.esm/plugins/wallet-services-plugin/plugin.js +1 -1
- package/dist/lib.esm/react/Web3AuthProvider.js +17 -0
- package/dist/lib.esm/react/context/WalletServicesInnerContext.js +80 -0
- package/dist/lib.esm/react/{no-modal → context}/Web3AuthInnerContext.js +14 -79
- package/dist/lib.esm/react/hooks/useCheckout.js +43 -0
- package/dist/lib.esm/react/hooks/useEnableMFA.js +28 -0
- package/dist/lib.esm/react/hooks/useIdentityToken.js +40 -0
- package/dist/lib.esm/react/hooks/useManageMFA.js +28 -0
- package/dist/lib.esm/react/hooks/useSwap.js +43 -0
- package/dist/lib.esm/react/hooks/useSwitchChain.js +30 -0
- package/dist/lib.esm/react/hooks/useWalletConnectScanner.js +43 -0
- package/dist/lib.esm/react/hooks/useWalletServicesPlugin.js +17 -0
- package/dist/lib.esm/react/hooks/useWalletUI.js +43 -0
- package/dist/lib.esm/react/hooks/useWeb3Auth.js +26 -0
- package/dist/lib.esm/react/hooks/useWeb3AuthConnect.js +42 -0
- package/dist/lib.esm/react/hooks/useWeb3AuthDisconnect.js +28 -0
- package/dist/lib.esm/react/{no-modal/hooks/useWeb3Auth.js → hooks/useWeb3AuthInner.js} +9 -9
- package/dist/lib.esm/react/hooks/useWeb3AuthUser.js +48 -0
- package/dist/lib.esm/react/index.js +14 -5
- package/dist/lib.esm/react/wagmi/index.js +1 -0
- package/dist/lib.esm/react/wagmi/provider.js +184 -0
- package/dist/noModal.umd.min.js +1 -1
- package/package.json +22 -6
- package/dist/lib.cjs/react/no-modal/Web3AuthProvider.js +0 -15
- package/dist/lib.cjs/react/wallet-services-plugin/WalletServicesProvider.js +0 -16
- package/dist/lib.cjs/react/wallet-services-plugin/hooks/useWalletServicesPlugin.js +0 -26
- package/dist/lib.cjs/types/react/no-modal/hooks/index.d.ts +0 -1
- package/dist/lib.cjs/types/react/no-modal/hooks/useWeb3Auth.d.ts +0 -2
- package/dist/lib.cjs/types/react/no-modal/index.d.ts +0 -3
- package/dist/lib.cjs/types/react/wallet-services-plugin/WalletServicesContext.d.ts +0 -7
- package/dist/lib.cjs/types/react/wallet-services-plugin/WalletServicesProvider.d.ts +0 -7
- package/dist/lib.cjs/types/react/wallet-services-plugin/hooks/index.d.ts +0 -1
- package/dist/lib.cjs/types/react/wallet-services-plugin/index.d.ts +0 -4
- package/dist/lib.cjs/types/react/wallet-services-plugin/interfaces.d.ts +0 -5
- package/dist/lib.esm/react/no-modal/Web3AuthProvider.js +0 -13
- package/dist/lib.esm/react/wallet-services-plugin/WalletServicesContext.js +0 -95
- package/dist/lib.esm/react/wallet-services-plugin/WalletServicesProvider.js +0 -14
- package/dist/lib.esm/react/wallet-services-plugin/hooks/useWalletServicesPlugin.js +0 -24
- /package/dist/lib.cjs/types/react/{no-modal/Web3AuthProvider.d.ts → Web3AuthProvider.d.ts} +0 -0
- /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) {
|
package/dist/lib.cjs/index.js
CHANGED
|
@@ -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; }
|
package/dist/lib.cjs/noModal.js
CHANGED
|
@@ -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
|
|
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(
|
|
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(
|
|
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",
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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 ((
|
|
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
|
-
|
|
47
|
+
setReady(true);
|
|
48
|
+
setConnecting(false);
|
|
47
49
|
};
|
|
48
50
|
const disconnectedListener = () => {
|
|
49
|
-
|
|
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
|
-
|
|
86
|
-
|
|
87
|
-
showCheckout,
|
|
88
|
-
showWalletUI,
|
|
89
|
-
showSwap
|
|
73
|
+
ready,
|
|
74
|
+
connecting
|
|
90
75
|
};
|
|
91
|
-
}, [walletServicesPlugin,
|
|
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
|
-
|
|
130
|
+
isMFAEnabled,
|
|
131
|
+
getPlugin,
|
|
132
|
+
setIsMFAEnabled
|
|
198
133
|
};
|
|
199
|
-
}, [web3Auth, isConnected, isInitialized, provider,
|
|
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;
|