@dynamic-labs/sdk-react-core 0.18.0-RC.12 → 0.18.0-RC.13
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/CHANGELOG.md +16 -0
- package/package.cjs +2 -2
- package/package.js +2 -2
- package/package.json +9 -9
- package/src/lib/context/DynamicContext/DynamicContext.cjs +3 -1
- package/src/lib/context/DynamicContext/DynamicContext.d.ts +4 -2
- package/src/lib/context/DynamicContext/DynamicContext.js +3 -1
- package/src/lib/utils/functions/isEmailProviderEnabled/isEmailProviderEnabled.cjs +1 -0
- package/src/lib/utils/functions/isEmailProviderEnabled/isEmailProviderEnabled.js +1 -0
- package/src/lib/utils/hooks/authenticationHooks/helpers/showPendingConnectView.cjs +1 -1
- package/src/lib/utils/hooks/authenticationHooks/helpers/showPendingConnectView.js +1 -1
- package/src/lib/utils/hooks/authenticationHooks/useConnectAndSign/useConnectAndSign.cjs +4 -3
- package/src/lib/utils/hooks/authenticationHooks/useConnectAndSign/useConnectAndSign.js +5 -4
- package/src/lib/utils/hooks/index.d.ts +1 -0
- package/src/lib/utils/hooks/useConnectWithEmail/index.d.ts +1 -0
- package/src/lib/utils/hooks/useConnectWithEmail/useConnectWithEmail.cjs +1 -4
- package/src/lib/utils/hooks/useConnectWithEmail/useConnectWithEmail.d.ts +1 -4
- package/src/lib/utils/hooks/useConnectWithEmail/useConnectWithEmail.js +1 -4
- package/src/lib/utils/hooks/useEmailProvider/index.d.ts +1 -0
- package/src/lib/utils/hooks/useEmailProvider/useEmailProvider.cjs +54 -0
- package/src/lib/utils/hooks/useEmailProvider/useEmailProvider.d.ts +10 -0
- package/src/lib/utils/hooks/useEmailProvider/useEmailProvider.js +50 -0
- package/src/lib/utils/hooks/useValidateSession/useValidateSession.cjs +3 -0
- package/src/lib/utils/hooks/useValidateSession/useValidateSession.js +3 -0
- package/src/lib/utils/hooks/useWalletConnectorEvents/useWalletConnectorEvents.cjs +17 -0
- package/src/lib/utils/hooks/useWalletConnectorEvents/useWalletConnectorEvents.d.ts +2 -0
- package/src/lib/utils/hooks/useWalletConnectorEvents/useWalletConnectorEvents.js +13 -0
- package/src/lib/views/LoginWithEmailView/components/LoginWithEmailForm/LoginWithEmailForm.cjs +24 -51
- package/src/lib/views/LoginWithEmailView/components/LoginWithEmailForm/LoginWithEmailForm.js +24 -51
- package/src/lib/views/LoginWithEmailView/components/SocialSignIn/SocialSignIn.cjs +7 -5
- package/src/lib/views/LoginWithEmailView/components/SocialSignIn/SocialSignIn.js +7 -5
- package/src/lib/views/NetworkNotSupported/NetworkNotSupported.cjs +14 -14
- package/src/lib/views/NetworkNotSupported/NetworkNotSupported.js +14 -14
- package/src/lib/views/NetworkNotSupportedSwitchManual/NetworkNotSupportedSwitchManual.cjs +20 -24
- package/src/lib/views/NetworkNotSupportedSwitchManual/NetworkNotSupportedSwitchManual.js +21 -25
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,20 @@
|
|
|
1
1
|
|
|
2
|
+
## [0.18.0-RC.13](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-RC.12...v0.18.0-RC.13) (2023-07-11)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* **DynamicContextProvider:** expose socialProviderFilter to modify social provider display order ([#2607](https://github.com/dynamic-labs/DynamicAuth/issues/2607)) ([0f03260](https://github.com/dynamic-labs/DynamicAuth/commit/0f03260e739da3e68c32a2a87a2ca629bb1f28b5))
|
|
8
|
+
* **GVTY-21:** Blocto Email provider ([#2524](https://github.com/dynamic-labs/DynamicAuth/issues/2524)) ([434ce59](https://github.com/dynamic-labs/DynamicAuth/commit/434ce598b3bc13841121b61e5ead7547d3c44eea))
|
|
9
|
+
* listen for the network change in network not supported views ([#2611](https://github.com/dynamic-labs/DynamicAuth/issues/2611)) ([957fbce](https://github.com/dynamic-labs/DynamicAuth/commit/957fbce55d7906f9d6b109838035b2c0306a4b85))
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* Clean up provider re-initializing after logout ([#2632](https://github.com/dynamic-labs/DynamicAuth/issues/2632)) ([fbc2201](https://github.com/dynamic-labs/DynamicAuth/commit/fbc22013d6784061cb4fdd72e24695c89f0e2fe5))
|
|
15
|
+
* **MagicWalletConnector:** check if user is logged when getting balance ([#2614](https://github.com/dynamic-labs/DynamicAuth/issues/2614)) ([ced9d66](https://github.com/dynamic-labs/DynamicAuth/commit/ced9d66cb335c3033a18642bdd841ee6be6c1e05))
|
|
16
|
+
* **useValidateSessin:** only check for bridge on wallet connect wallets ([#2571](https://github.com/dynamic-labs/DynamicAuth/issues/2571)) ([349b659](https://github.com/dynamic-labs/DynamicAuth/commit/349b65963f1d5392f63aaa138f6498f0d17cd43f))
|
|
17
|
+
|
|
2
18
|
## [0.18.0-RC.12](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-RC.11...v0.18.0-RC.12) (2023-07-07)
|
|
3
19
|
|
|
4
20
|
|
package/package.cjs
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var version = "0.18.0-RC.
|
|
5
|
+
var version = "0.18.0-RC.13";
|
|
6
6
|
var dependencies = {
|
|
7
7
|
"react-focus-lock": "2.9.2",
|
|
8
8
|
"@dynamic-labs/iconic": "0.1.23",
|
|
9
|
-
"@dynamic-labs/sdk-api": "0.0.
|
|
9
|
+
"@dynamic-labs/sdk-api": "0.0.228",
|
|
10
10
|
"@hcaptcha/react-hcaptcha": "1.4.4",
|
|
11
11
|
"country-list": "2.3.0",
|
|
12
12
|
yup: "0.32.11",
|
package/package.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
var version = "0.18.0-RC.
|
|
1
|
+
var version = "0.18.0-RC.13";
|
|
2
2
|
var dependencies = {
|
|
3
3
|
"react-focus-lock": "2.9.2",
|
|
4
4
|
"@dynamic-labs/iconic": "0.1.23",
|
|
5
|
-
"@dynamic-labs/sdk-api": "0.0.
|
|
5
|
+
"@dynamic-labs/sdk-api": "0.0.228",
|
|
6
6
|
"@hcaptcha/react-hcaptcha": "1.4.4",
|
|
7
7
|
"country-list": "2.3.0",
|
|
8
8
|
yup: "0.32.11",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/sdk-react-core",
|
|
3
|
-
"version": "0.18.0-RC.
|
|
3
|
+
"version": "0.18.0-RC.13",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/dynamic-labs/DynamicAuth.git",
|
|
@@ -9,20 +9,20 @@
|
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"react-focus-lock": "2.9.2",
|
|
11
11
|
"@dynamic-labs/iconic": "0.1.23",
|
|
12
|
-
"@dynamic-labs/sdk-api": "0.0.
|
|
12
|
+
"@dynamic-labs/sdk-api": "0.0.228",
|
|
13
13
|
"@hcaptcha/react-hcaptcha": "1.4.4",
|
|
14
14
|
"country-list": "2.3.0",
|
|
15
15
|
"yup": "0.32.11",
|
|
16
16
|
"formik": "2.2.9",
|
|
17
17
|
"qrcode": "1.5.1",
|
|
18
18
|
"ethers": "5.7.2",
|
|
19
|
-
"@dynamic-labs/logger": "0.18.0-RC.
|
|
20
|
-
"@dynamic-labs/multi-wallet": "0.18.0-RC.
|
|
21
|
-
"@dynamic-labs/rpc-providers": "0.18.0-RC.
|
|
22
|
-
"@dynamic-labs/types": "0.18.0-RC.
|
|
23
|
-
"@dynamic-labs/utils": "0.18.0-RC.
|
|
24
|
-
"@dynamic-labs/wallet-book": "0.18.0-RC.
|
|
25
|
-
"@dynamic-labs/wallet-connector-core": "0.18.0-RC.
|
|
19
|
+
"@dynamic-labs/logger": "0.18.0-RC.13",
|
|
20
|
+
"@dynamic-labs/multi-wallet": "0.18.0-RC.13",
|
|
21
|
+
"@dynamic-labs/rpc-providers": "0.18.0-RC.13",
|
|
22
|
+
"@dynamic-labs/types": "0.18.0-RC.13",
|
|
23
|
+
"@dynamic-labs/utils": "0.18.0-RC.13",
|
|
24
|
+
"@dynamic-labs/wallet-book": "0.18.0-RC.13",
|
|
25
|
+
"@dynamic-labs/wallet-connector-core": "0.18.0-RC.13"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"semver": "7.3.8"
|
|
@@ -91,7 +91,7 @@ var useSetShowAuthFlowWithInit = require('./hooks/useSetShowAuthFlowWithInit/use
|
|
|
91
91
|
|
|
92
92
|
const EMPTY_INITIAL_USER = undefined;
|
|
93
93
|
const DynamicContext = React.createContext(undefined);
|
|
94
|
-
const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, accessDeniedMessageSecondary, accessDeniedButton, apiBaseUrl, appLogoUrl = 'https://demo.dynamic.xyz/assets/dynamic-logo.svg', appName = 'Dynamic Example', walletsByChain, cssOverrides, defaultNumberOfWalletsToShow = values.DEFAULT_NUMBER_OF_WALLETS_TO_SHOW, flowNetwork, initialAuthenticationMode = 'connect-and-sign', debugError = false, displayTermsOfService = true, newToWeb3WalletChainMap, enableVisitTrackingOnConnectOnly = true, environmentId, localStorageSuffix, eventsCallbacks, evmNetworks, walletsFilter, logLevel = 'WARN', multiWallet: deprecatedMultiWallet, notInTheListImageUrl, onboardingImageUrl, policiesConsentInnerComponent, customPrivacyPolicy, privacyPolicyUrl, signWithEmailWalletName, socialMediaLinkText, socialMediaIconUrl, socialMediaUrl, customTermsOfServices, termsOfServiceUrl, toolkitEnabled, siweStatement, shadowDOMEnabled = true, walletConnectV1Bridge, walletConnectors: walletConnectorsProp, }, children, theme, }) => {
|
|
94
|
+
const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, accessDeniedMessageSecondary, accessDeniedButton, apiBaseUrl, appLogoUrl = 'https://demo.dynamic.xyz/assets/dynamic-logo.svg', appName = 'Dynamic Example', walletsByChain, cssOverrides, defaultNumberOfWalletsToShow = values.DEFAULT_NUMBER_OF_WALLETS_TO_SHOW, flowNetwork, initialAuthenticationMode = 'connect-and-sign', debugError = false, displayTermsOfService = true, newToWeb3WalletChainMap, enableVisitTrackingOnConnectOnly = true, environmentId, localStorageSuffix, eventsCallbacks, evmNetworks, walletsFilter, logLevel = 'WARN', multiWallet: deprecatedMultiWallet, notInTheListImageUrl, onboardingImageUrl, policiesConsentInnerComponent, customPrivacyPolicy, privacyPolicyUrl, signWithEmailWalletName, socialMediaLinkText, socialMediaIconUrl, socialMediaUrl, customTermsOfServices, termsOfServiceUrl, toolkitEnabled, siweStatement, shadowDOMEnabled = true, walletConnectV1Bridge, walletConnectors: walletConnectorsProp, socialProvidersFilter, }, children, theme, }) => {
|
|
95
95
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
96
96
|
if (!environmentId) {
|
|
97
97
|
throw new utils.MissingEnvironmentIdError();
|
|
@@ -446,6 +446,7 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
|
|
|
446
446
|
socialMediaIconUrl: ((_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.general) === null || _a === void 0 ? void 0 : _a.supportUrls) || socialMediaIconUrl,
|
|
447
447
|
socialMediaLinkText,
|
|
448
448
|
socialMediaUrl,
|
|
449
|
+
socialProvidersFilter,
|
|
449
450
|
termsOfServiceUrl,
|
|
450
451
|
theme,
|
|
451
452
|
toolkitEnabled,
|
|
@@ -459,6 +460,7 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
|
|
|
459
460
|
walletsToConnectByChain,
|
|
460
461
|
});
|
|
461
462
|
}, [
|
|
463
|
+
socialProvidersFilter,
|
|
462
464
|
accessDeniedButton,
|
|
463
465
|
accessDeniedMessagePrimary,
|
|
464
466
|
accessDeniedMessageSecondary,
|
|
@@ -2,7 +2,7 @@ import { Dispatch, SetStateAction, ReactNode } from 'react';
|
|
|
2
2
|
import { WalletConnector, FetchPublicAddressOpts, WalletConnectorsMethod, Chain } from '@dynamic-labs/wallet-connector-core';
|
|
3
3
|
import { DynamicJwt, NameServiceData, ProjectSettings } from '@dynamic-labs/sdk-api';
|
|
4
4
|
import { LogLevel } from '@dynamic-labs/logger';
|
|
5
|
-
import { EvmNetwork, NetworkConfigurationMap, WalletUiUtils } from '@dynamic-labs/types';
|
|
5
|
+
import { EvmNetwork, NetworkConfigurationMap, SocialProviderFilter, WalletUiUtils } from '@dynamic-labs/types';
|
|
6
6
|
import { WalletOption, UserProfile, Wallet, MultiWalletWidgetState, AccountSwitchState, AwaitingSignatureState, ChainToWalletMap, AuthModeType, DynamicRPCProviders, DynamicEventsCallbacks, WalletWithAction, AccessDeniedCustomButton } from '../../shared';
|
|
7
7
|
import { ThemeData, ThemeSetting } from '../ThemeContext';
|
|
8
8
|
import { MultiWalletWidgetStateSetter } from '../../utils/hooks/multiWallet';
|
|
@@ -128,6 +128,7 @@ export interface IDynamicContext {
|
|
|
128
128
|
walletUiUtils: WalletUiUtils;
|
|
129
129
|
wallets: WalletOption[];
|
|
130
130
|
walletsFilter?: (options: WalletOption[]) => WalletOption[];
|
|
131
|
+
socialProvidersFilter?: SocialProviderFilter;
|
|
131
132
|
removeConnectedWalletsInfo: () => void;
|
|
132
133
|
}
|
|
133
134
|
export interface DynamicContextProps {
|
|
@@ -179,8 +180,9 @@ export interface DynamicContextProps {
|
|
|
179
180
|
walletConnectV1Bridge?: string;
|
|
180
181
|
walletConnectors?: WalletConnectorsMethod[];
|
|
181
182
|
walletsFilter?: (options: WalletOption[]) => WalletOption[];
|
|
183
|
+
socialProvidersFilter?: SocialProviderFilter;
|
|
182
184
|
};
|
|
183
185
|
theme?: ThemeData | ThemeSetting;
|
|
184
186
|
}
|
|
185
187
|
export declare const DynamicContext: import("react").Context<IDynamicContext | undefined>;
|
|
186
|
-
export declare const DynamicContextProvider: ({ settings: { accessDeniedMessagePrimary, accessDeniedMessageSecondary, accessDeniedButton, apiBaseUrl, appLogoUrl, appName, walletsByChain, cssOverrides, defaultNumberOfWalletsToShow, flowNetwork, initialAuthenticationMode, debugError, displayTermsOfService, newToWeb3WalletChainMap, enableVisitTrackingOnConnectOnly, environmentId, localStorageSuffix, eventsCallbacks, evmNetworks, walletsFilter, logLevel, multiWallet: deprecatedMultiWallet, notInTheListImageUrl, onboardingImageUrl, policiesConsentInnerComponent, customPrivacyPolicy, privacyPolicyUrl, signWithEmailWalletName, socialMediaLinkText, socialMediaIconUrl, socialMediaUrl, customTermsOfServices, termsOfServiceUrl, toolkitEnabled, siweStatement, shadowDOMEnabled, walletConnectV1Bridge, walletConnectors: walletConnectorsProp, }, children, theme, }: DynamicContextProps) => JSX.Element;
|
|
188
|
+
export declare const DynamicContextProvider: ({ settings: { accessDeniedMessagePrimary, accessDeniedMessageSecondary, accessDeniedButton, apiBaseUrl, appLogoUrl, appName, walletsByChain, cssOverrides, defaultNumberOfWalletsToShow, flowNetwork, initialAuthenticationMode, debugError, displayTermsOfService, newToWeb3WalletChainMap, enableVisitTrackingOnConnectOnly, environmentId, localStorageSuffix, eventsCallbacks, evmNetworks, walletsFilter, logLevel, multiWallet: deprecatedMultiWallet, notInTheListImageUrl, onboardingImageUrl, policiesConsentInnerComponent, customPrivacyPolicy, privacyPolicyUrl, signWithEmailWalletName, socialMediaLinkText, socialMediaIconUrl, socialMediaUrl, customTermsOfServices, termsOfServiceUrl, toolkitEnabled, siweStatement, shadowDOMEnabled, walletConnectV1Bridge, walletConnectors: walletConnectorsProp, socialProvidersFilter, }, children, theme, }: DynamicContextProps) => JSX.Element;
|
|
@@ -87,7 +87,7 @@ import { useSetShowAuthFlowWithInit } from './hooks/useSetShowAuthFlowWithInit/u
|
|
|
87
87
|
|
|
88
88
|
const EMPTY_INITIAL_USER = undefined;
|
|
89
89
|
const DynamicContext = createContext(undefined);
|
|
90
|
-
const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, accessDeniedMessageSecondary, accessDeniedButton, apiBaseUrl, appLogoUrl = 'https://demo.dynamic.xyz/assets/dynamic-logo.svg', appName = 'Dynamic Example', walletsByChain, cssOverrides, defaultNumberOfWalletsToShow = DEFAULT_NUMBER_OF_WALLETS_TO_SHOW, flowNetwork, initialAuthenticationMode = 'connect-and-sign', debugError = false, displayTermsOfService = true, newToWeb3WalletChainMap, enableVisitTrackingOnConnectOnly = true, environmentId, localStorageSuffix, eventsCallbacks, evmNetworks, walletsFilter, logLevel = 'WARN', multiWallet: deprecatedMultiWallet, notInTheListImageUrl, onboardingImageUrl, policiesConsentInnerComponent, customPrivacyPolicy, privacyPolicyUrl, signWithEmailWalletName, socialMediaLinkText, socialMediaIconUrl, socialMediaUrl, customTermsOfServices, termsOfServiceUrl, toolkitEnabled, siweStatement, shadowDOMEnabled = true, walletConnectV1Bridge, walletConnectors: walletConnectorsProp, }, children, theme, }) => {
|
|
90
|
+
const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, accessDeniedMessageSecondary, accessDeniedButton, apiBaseUrl, appLogoUrl = 'https://demo.dynamic.xyz/assets/dynamic-logo.svg', appName = 'Dynamic Example', walletsByChain, cssOverrides, defaultNumberOfWalletsToShow = DEFAULT_NUMBER_OF_WALLETS_TO_SHOW, flowNetwork, initialAuthenticationMode = 'connect-and-sign', debugError = false, displayTermsOfService = true, newToWeb3WalletChainMap, enableVisitTrackingOnConnectOnly = true, environmentId, localStorageSuffix, eventsCallbacks, evmNetworks, walletsFilter, logLevel = 'WARN', multiWallet: deprecatedMultiWallet, notInTheListImageUrl, onboardingImageUrl, policiesConsentInnerComponent, customPrivacyPolicy, privacyPolicyUrl, signWithEmailWalletName, socialMediaLinkText, socialMediaIconUrl, socialMediaUrl, customTermsOfServices, termsOfServiceUrl, toolkitEnabled, siweStatement, shadowDOMEnabled = true, walletConnectV1Bridge, walletConnectors: walletConnectorsProp, socialProvidersFilter, }, children, theme, }) => {
|
|
91
91
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
92
92
|
if (!environmentId) {
|
|
93
93
|
throw new MissingEnvironmentIdError();
|
|
@@ -442,6 +442,7 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
|
|
|
442
442
|
socialMediaIconUrl: ((_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.general) === null || _a === void 0 ? void 0 : _a.supportUrls) || socialMediaIconUrl,
|
|
443
443
|
socialMediaLinkText,
|
|
444
444
|
socialMediaUrl,
|
|
445
|
+
socialProvidersFilter,
|
|
445
446
|
termsOfServiceUrl,
|
|
446
447
|
theme,
|
|
447
448
|
toolkitEnabled,
|
|
@@ -455,6 +456,7 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
|
|
|
455
456
|
walletsToConnectByChain,
|
|
456
457
|
});
|
|
457
458
|
}, [
|
|
459
|
+
socialProvidersFilter,
|
|
458
460
|
accessDeniedButton,
|
|
459
461
|
accessDeniedMessagePrimary,
|
|
460
462
|
accessDeniedMessageSecondary,
|
|
@@ -6,6 +6,7 @@ var sdkApi = require('@dynamic-labs/sdk-api');
|
|
|
6
6
|
var isProviderEnabled = require('../isProviderEnabled/isProviderEnabled.cjs');
|
|
7
7
|
|
|
8
8
|
const isEmailProviderEnabled = (providers) => isProviderEnabled.isProviderEnabled(providers, sdkApi.ProviderEnum.EmailOnly) ||
|
|
9
|
+
isProviderEnabled.isProviderEnabled(providers, sdkApi.ProviderEnum.Blocto) ||
|
|
9
10
|
isProviderEnabled.isProviderEnabled(providers, sdkApi.ProviderEnum.MagicLink);
|
|
10
11
|
|
|
11
12
|
exports.isEmailProviderEnabled = isEmailProviderEnabled;
|
|
@@ -2,6 +2,7 @@ import { ProviderEnum } from '@dynamic-labs/sdk-api';
|
|
|
2
2
|
import { isProviderEnabled } from '../isProviderEnabled/isProviderEnabled.js';
|
|
3
3
|
|
|
4
4
|
const isEmailProviderEnabled = (providers) => isProviderEnabled(providers, ProviderEnum.EmailOnly) ||
|
|
5
|
+
isProviderEnabled(providers, ProviderEnum.Blocto) ||
|
|
5
6
|
isProviderEnabled(providers, ProviderEnum.MagicLink);
|
|
6
7
|
|
|
7
8
|
export { isEmailProviderEnabled };
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var _tslib = require('../../../../../../_virtual/_tslib.cjs');
|
|
6
6
|
var getWalletProvider = require('../../../functions/getWalletProvider/getWalletProvider.cjs');
|
|
7
7
|
|
|
8
|
-
const specialCareWallets = ['slope', 'myalgo'];
|
|
8
|
+
const specialCareWallets = ['slope', 'myalgo', 'bloctoevm'];
|
|
9
9
|
const showPendingConnectView = (walletConnector, setView) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
10
10
|
const walletProvider = getWalletProvider.getWalletProvider(walletConnector);
|
|
11
11
|
// We don't want to show the pending connect view for qrCode and walletConnect
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __awaiter } from '../../../../../../_virtual/_tslib.js';
|
|
2
2
|
import { getWalletProvider } from '../../../functions/getWalletProvider/getWalletProvider.js';
|
|
3
3
|
|
|
4
|
-
const specialCareWallets = ['slope', 'myalgo'];
|
|
4
|
+
const specialCareWallets = ['slope', 'myalgo', 'bloctoevm'];
|
|
5
5
|
const showPendingConnectView = (walletConnector, setView) => __awaiter(void 0, void 0, void 0, function* () {
|
|
6
6
|
const walletProvider = getWalletProvider(walletConnector);
|
|
7
7
|
// We don't want to show the pending connect view for qrCode and walletConnect
|
|
@@ -43,13 +43,13 @@ const useConnectAndSign = () => {
|
|
|
43
43
|
});
|
|
44
44
|
return ({ walletConnector, fetchPublicAddressOpts = undefined, }) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
45
45
|
var _a, _b;
|
|
46
|
-
yield showPendingConnectView.showPendingConnectView(walletConnector, setView);
|
|
47
46
|
try {
|
|
47
|
+
yield showPendingConnectView.showPendingConnectView(walletConnector, setView);
|
|
48
48
|
if (walletConnectorCore.isEmailWalletConnector(walletConnector)) {
|
|
49
49
|
if (walletConnectorCore.isEmailOTPWalletConnector(walletConnector)) {
|
|
50
50
|
setView('email-wallet-otp-verification-view');
|
|
51
51
|
}
|
|
52
|
-
else {
|
|
52
|
+
else if (!walletConnectorCore.isBloctoConnector(walletConnector)) {
|
|
53
53
|
setView('wait-for-email-confirmation-view');
|
|
54
54
|
}
|
|
55
55
|
}
|
|
@@ -75,7 +75,8 @@ const useConnectAndSign = () => {
|
|
|
75
75
|
setView('captcha');
|
|
76
76
|
return;
|
|
77
77
|
}
|
|
78
|
-
if (!walletConnectorCore.isEmailWalletConnector(walletConnector)
|
|
78
|
+
if (!walletConnectorCore.isEmailWalletConnector(walletConnector) ||
|
|
79
|
+
walletConnectorCore.isBloctoConnector(walletConnector)) {
|
|
79
80
|
setView('pending-signature');
|
|
80
81
|
}
|
|
81
82
|
else {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __awaiter } from '../../../../../../_virtual/_tslib.js';
|
|
2
|
-
import { isEmailWalletConnector, isEmailOTPWalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
2
|
+
import { isEmailWalletConnector, isEmailOTPWalletConnector, isBloctoConnector } from '@dynamic-labs/wallet-connector-core';
|
|
3
3
|
import { showPendingConnectView } from '../helpers/showPendingConnectView.js';
|
|
4
4
|
import { isConnectOnly } from '../helpers/isConnectOnly.js';
|
|
5
5
|
import { useInternalDynamicContext } from '../../../../context/DynamicContext/useInternalDynamicContext.js';
|
|
@@ -39,13 +39,13 @@ const useConnectAndSign = () => {
|
|
|
39
39
|
});
|
|
40
40
|
return ({ walletConnector, fetchPublicAddressOpts = undefined, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
41
41
|
var _a, _b;
|
|
42
|
-
yield showPendingConnectView(walletConnector, setView);
|
|
43
42
|
try {
|
|
43
|
+
yield showPendingConnectView(walletConnector, setView);
|
|
44
44
|
if (isEmailWalletConnector(walletConnector)) {
|
|
45
45
|
if (isEmailOTPWalletConnector(walletConnector)) {
|
|
46
46
|
setView('email-wallet-otp-verification-view');
|
|
47
47
|
}
|
|
48
|
-
else {
|
|
48
|
+
else if (!isBloctoConnector(walletConnector)) {
|
|
49
49
|
setView('wait-for-email-confirmation-view');
|
|
50
50
|
}
|
|
51
51
|
}
|
|
@@ -71,7 +71,8 @@ const useConnectAndSign = () => {
|
|
|
71
71
|
setView('captcha');
|
|
72
72
|
return;
|
|
73
73
|
}
|
|
74
|
-
if (!isEmailWalletConnector(walletConnector)
|
|
74
|
+
if (!isEmailWalletConnector(walletConnector) ||
|
|
75
|
+
isBloctoConnector(walletConnector)) {
|
|
75
76
|
setView('pending-signature');
|
|
76
77
|
}
|
|
77
78
|
else {
|
|
@@ -28,3 +28,4 @@ export { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect/useIsomor
|
|
|
28
28
|
export { useTimeout } from './useTimeout/useTimeout';
|
|
29
29
|
export { useInterval } from './useInterval/useInterval';
|
|
30
30
|
export { useCountdown } from './useCountdown/useCountdown';
|
|
31
|
+
export { useWalletConnectorEvents } from './useWalletConnectorEvents/useWalletConnectorEvents';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useConnectWithEmail } from './useConnectWithEmail';
|
|
@@ -20,9 +20,8 @@ var ErrorContext = require('../../../context/ErrorContext/ErrorContext.cjs');
|
|
|
20
20
|
|
|
21
21
|
const useConnectWithEmail = ({ emailWalletConnector, handleConnect, }) => {
|
|
22
22
|
const { error } = ErrorContext.useErrorContext();
|
|
23
|
-
const [email, setEmail] = React.useState('');
|
|
24
23
|
const [loading, setLoading] = React.useState(false);
|
|
25
|
-
const connectWithEmail = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
24
|
+
const connectWithEmail = (email) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
26
25
|
if (!email || !emailWalletConnector || loading)
|
|
27
26
|
return;
|
|
28
27
|
setLoading(true);
|
|
@@ -42,9 +41,7 @@ const useConnectWithEmail = ({ emailWalletConnector, handleConnect, }) => {
|
|
|
42
41
|
}, [error, loading]);
|
|
43
42
|
return {
|
|
44
43
|
connectWithEmail,
|
|
45
|
-
email,
|
|
46
44
|
loading,
|
|
47
|
-
setEmail,
|
|
48
45
|
};
|
|
49
46
|
};
|
|
50
47
|
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { IEmailWalletConnector, WalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
3
2
|
type ConnectWithEmailProps = {
|
|
4
3
|
emailWalletConnector: IEmailWalletConnector | undefined;
|
|
5
4
|
handleConnect: (walletConnector: WalletConnector) => Promise<void>;
|
|
6
5
|
};
|
|
7
6
|
export declare const useConnectWithEmail: ({ emailWalletConnector, handleConnect, }: ConnectWithEmailProps) => {
|
|
8
|
-
connectWithEmail: () => Promise<void>;
|
|
9
|
-
email: string;
|
|
7
|
+
connectWithEmail: (email: string) => Promise<void>;
|
|
10
8
|
loading: boolean;
|
|
11
|
-
setEmail: import("react").Dispatch<import("react").SetStateAction<string>>;
|
|
12
9
|
};
|
|
13
10
|
export {};
|
|
@@ -16,9 +16,8 @@ import { useErrorContext } from '../../../context/ErrorContext/ErrorContext.js';
|
|
|
16
16
|
|
|
17
17
|
const useConnectWithEmail = ({ emailWalletConnector, handleConnect, }) => {
|
|
18
18
|
const { error } = useErrorContext();
|
|
19
|
-
const [email, setEmail] = useState('');
|
|
20
19
|
const [loading, setLoading] = useState(false);
|
|
21
|
-
const connectWithEmail = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
20
|
+
const connectWithEmail = (email) => __awaiter(void 0, void 0, void 0, function* () {
|
|
22
21
|
if (!email || !emailWalletConnector || loading)
|
|
23
22
|
return;
|
|
24
23
|
setLoading(true);
|
|
@@ -38,9 +37,7 @@ const useConnectWithEmail = ({ emailWalletConnector, handleConnect, }) => {
|
|
|
38
37
|
}, [error, loading]);
|
|
39
38
|
return {
|
|
40
39
|
connectWithEmail,
|
|
41
|
-
email,
|
|
42
40
|
loading,
|
|
43
|
-
setEmail,
|
|
44
41
|
};
|
|
45
42
|
};
|
|
46
43
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useEmailProvider } from './useEmailProvider';
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _tslib = require('../../../../../_virtual/_tslib.cjs');
|
|
6
|
+
var sdkApi = require('@dynamic-labs/sdk-api');
|
|
7
|
+
var useInternalDynamicContext = require('../../../context/DynamicContext/useInternalDynamicContext.cjs');
|
|
8
|
+
var EmailVerificationContext = require('../../../context/EmailVerificationContext/EmailVerificationContext.cjs');
|
|
9
|
+
var ViewContext = require('../../../context/ViewContext/ViewContext.cjs');
|
|
10
|
+
var useWalletItemActions = require('../useWalletItemActions/useWalletItemActions.cjs');
|
|
11
|
+
var useConnectWithEmail = require('../useConnectWithEmail/useConnectWithEmail.cjs');
|
|
12
|
+
var api = require('../../../data/api.cjs');
|
|
13
|
+
|
|
14
|
+
const useEmailProvider = ({ emailWalletConnector }) => {
|
|
15
|
+
const { projectSettings, environmentId } = useInternalDynamicContext.useInternalDynamicContext();
|
|
16
|
+
const { setEmail: setEmailForVerification, setVerificationUUID } = EmailVerificationContext.useEmailVerificationContext();
|
|
17
|
+
const { setView } = ViewContext.useViewContext();
|
|
18
|
+
const { handleInstalledExtensionClick } = useWalletItemActions.useWalletItemActions();
|
|
19
|
+
const { connectWithEmail, loading: isEmailProviderLoading } = useConnectWithEmail.useConnectWithEmail({
|
|
20
|
+
emailWalletConnector,
|
|
21
|
+
handleConnect: handleInstalledExtensionClick,
|
|
22
|
+
});
|
|
23
|
+
const { providers } = projectSettings || {};
|
|
24
|
+
const isInjectedWalletProviderEnabled = emailWalletConnector !== undefined;
|
|
25
|
+
const isMagicOrBloctoEnabled = isInjectedWalletProviderEnabled &&
|
|
26
|
+
Boolean(providers === null || providers === void 0 ? void 0 : providers.filter((provider) => provider.provider === sdkApi.ProviderEnum.MagicLink ||
|
|
27
|
+
provider.provider === sdkApi.ProviderEnum.Blocto).length);
|
|
28
|
+
const handleEmailOnlyLoginSubmit = (emailInput) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
29
|
+
const { email, verificationUUID } = yield api.createEmailVerification({
|
|
30
|
+
email: emailInput,
|
|
31
|
+
environmentId,
|
|
32
|
+
});
|
|
33
|
+
setView('login-with-email-verification');
|
|
34
|
+
setEmailForVerification(email);
|
|
35
|
+
setVerificationUUID(verificationUUID);
|
|
36
|
+
});
|
|
37
|
+
const handleMagicLinkOrBloctoSubmit = (emailInput) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
38
|
+
yield connectWithEmail(emailInput);
|
|
39
|
+
});
|
|
40
|
+
const submitEmail = (emailInput) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
41
|
+
if (isMagicOrBloctoEnabled) {
|
|
42
|
+
yield handleMagicLinkOrBloctoSubmit(emailInput);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
yield handleEmailOnlyLoginSubmit(emailInput);
|
|
46
|
+
});
|
|
47
|
+
return {
|
|
48
|
+
handleEmailOnlyLoginSubmit,
|
|
49
|
+
isEmailProviderLoading,
|
|
50
|
+
submitEmail,
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
exports.useEmailProvider = useEmailProvider;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IEmailWalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
2
|
+
type Props = {
|
|
3
|
+
emailWalletConnector: IEmailWalletConnector | undefined;
|
|
4
|
+
};
|
|
5
|
+
export declare const useEmailProvider: ({ emailWalletConnector }: Props) => {
|
|
6
|
+
handleEmailOnlyLoginSubmit: (emailInput: string) => Promise<void>;
|
|
7
|
+
isEmailProviderLoading: boolean;
|
|
8
|
+
submitEmail: (emailInput: string) => Promise<void>;
|
|
9
|
+
};
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { __awaiter } from '../../../../../_virtual/_tslib.js';
|
|
2
|
+
import { ProviderEnum } from '@dynamic-labs/sdk-api';
|
|
3
|
+
import { useInternalDynamicContext } from '../../../context/DynamicContext/useInternalDynamicContext.js';
|
|
4
|
+
import { useEmailVerificationContext } from '../../../context/EmailVerificationContext/EmailVerificationContext.js';
|
|
5
|
+
import { useViewContext } from '../../../context/ViewContext/ViewContext.js';
|
|
6
|
+
import { useWalletItemActions } from '../useWalletItemActions/useWalletItemActions.js';
|
|
7
|
+
import { useConnectWithEmail } from '../useConnectWithEmail/useConnectWithEmail.js';
|
|
8
|
+
import { createEmailVerification } from '../../../data/api.js';
|
|
9
|
+
|
|
10
|
+
const useEmailProvider = ({ emailWalletConnector }) => {
|
|
11
|
+
const { projectSettings, environmentId } = useInternalDynamicContext();
|
|
12
|
+
const { setEmail: setEmailForVerification, setVerificationUUID } = useEmailVerificationContext();
|
|
13
|
+
const { setView } = useViewContext();
|
|
14
|
+
const { handleInstalledExtensionClick } = useWalletItemActions();
|
|
15
|
+
const { connectWithEmail, loading: isEmailProviderLoading } = useConnectWithEmail({
|
|
16
|
+
emailWalletConnector,
|
|
17
|
+
handleConnect: handleInstalledExtensionClick,
|
|
18
|
+
});
|
|
19
|
+
const { providers } = projectSettings || {};
|
|
20
|
+
const isInjectedWalletProviderEnabled = emailWalletConnector !== undefined;
|
|
21
|
+
const isMagicOrBloctoEnabled = isInjectedWalletProviderEnabled &&
|
|
22
|
+
Boolean(providers === null || providers === void 0 ? void 0 : providers.filter((provider) => provider.provider === ProviderEnum.MagicLink ||
|
|
23
|
+
provider.provider === ProviderEnum.Blocto).length);
|
|
24
|
+
const handleEmailOnlyLoginSubmit = (emailInput) => __awaiter(void 0, void 0, void 0, function* () {
|
|
25
|
+
const { email, verificationUUID } = yield createEmailVerification({
|
|
26
|
+
email: emailInput,
|
|
27
|
+
environmentId,
|
|
28
|
+
});
|
|
29
|
+
setView('login-with-email-verification');
|
|
30
|
+
setEmailForVerification(email);
|
|
31
|
+
setVerificationUUID(verificationUUID);
|
|
32
|
+
});
|
|
33
|
+
const handleMagicLinkOrBloctoSubmit = (emailInput) => __awaiter(void 0, void 0, void 0, function* () {
|
|
34
|
+
yield connectWithEmail(emailInput);
|
|
35
|
+
});
|
|
36
|
+
const submitEmail = (emailInput) => __awaiter(void 0, void 0, void 0, function* () {
|
|
37
|
+
if (isMagicOrBloctoEnabled) {
|
|
38
|
+
yield handleMagicLinkOrBloctoSubmit(emailInput);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
yield handleEmailOnlyLoginSubmit(emailInput);
|
|
42
|
+
});
|
|
43
|
+
return {
|
|
44
|
+
handleEmailOnlyLoginSubmit,
|
|
45
|
+
isEmailProviderLoading,
|
|
46
|
+
submitEmail,
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export { useEmailProvider };
|
|
@@ -40,6 +40,9 @@ const useValidateSession = ({ handleLogOut, user, authToken, walletConnectV1Brid
|
|
|
40
40
|
let currentWalletConnectV1Bridge;
|
|
41
41
|
if (walletConnectors) {
|
|
42
42
|
for (const connector of walletConnectors) {
|
|
43
|
+
if (!connector.isWalletConnect) {
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
43
46
|
const session = yield connector.getSession();
|
|
44
47
|
const bridge = session && (session === null || session === void 0 ? void 0 : session.bridge);
|
|
45
48
|
if (bridge) {
|
|
@@ -36,6 +36,9 @@ const useValidateSession = ({ handleLogOut, user, authToken, walletConnectV1Brid
|
|
|
36
36
|
let currentWalletConnectV1Bridge;
|
|
37
37
|
if (walletConnectors) {
|
|
38
38
|
for (const connector of walletConnectors) {
|
|
39
|
+
if (!connector.isWalletConnect) {
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
39
42
|
const session = yield connector.getSession();
|
|
40
43
|
const bridge = session && (session === null || session === void 0 ? void 0 : session.bridge);
|
|
41
44
|
if (bridge) {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
|
|
7
|
+
const useWalletConnectorEvents = (walletConnector, listeners) => {
|
|
8
|
+
React.useEffect(() => {
|
|
9
|
+
if (!walletConnector || !listeners) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
walletConnector.setupEventListeners(listeners);
|
|
13
|
+
return () => walletConnector.teardownEventListeners();
|
|
14
|
+
}, [walletConnector, listeners]);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
exports.useWalletConnectorEvents = useWalletConnectorEvents;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
const useWalletConnectorEvents = (walletConnector, listeners) => {
|
|
4
|
+
useEffect(() => {
|
|
5
|
+
if (!walletConnector || !listeners) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
walletConnector.setupEventListeners(listeners);
|
|
9
|
+
return () => walletConnector.teardownEventListeners();
|
|
10
|
+
}, [walletConnector, listeners]);
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export { useWalletConnectorEvents };
|
package/src/lib/views/LoginWithEmailView/components/LoginWithEmailForm/LoginWithEmailForm.cjs
CHANGED
|
@@ -7,113 +7,86 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
7
7
|
var React = require('react');
|
|
8
8
|
var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
|
|
9
9
|
var sdkApi = require('@dynamic-labs/sdk-api');
|
|
10
|
-
require('@dynamic-labs/utils');
|
|
11
|
-
var api = require('../../../../data/api.cjs');
|
|
12
10
|
var logger = require('../../../../shared/logger.cjs');
|
|
13
11
|
require('@dynamic-labs/iconic');
|
|
14
|
-
|
|
12
|
+
require('../../../../context/ViewContext/ViewContext.cjs');
|
|
15
13
|
require('@dynamic-labs/wallet-book');
|
|
14
|
+
require('@dynamic-labs/utils');
|
|
16
15
|
require('../../../../utils/constants/colors.cjs');
|
|
17
16
|
require('../../../../shared/utils/classes/storage/localStorage.cjs');
|
|
18
17
|
require('ethers');
|
|
19
18
|
require('../../../../shared/consts/index.cjs');
|
|
20
|
-
require('@dynamic-labs/multi-wallet');
|
|
21
|
-
require('@dynamic-labs/rpc-providers');
|
|
22
|
-
require('../../../../utils/hooks/useWallets/utils/verifyMagicIsSetup/verifyMagicIsSetup.cjs');
|
|
23
19
|
var useInternalDynamicContext = require('../../../../context/DynamicContext/useInternalDynamicContext.cjs');
|
|
24
|
-
|
|
25
|
-
require('../../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
|
|
26
|
-
require('react-dom');
|
|
20
|
+
require('@dynamic-labs/multi-wallet');
|
|
27
21
|
require('../../../../components/ShadowDOM/ShadowDOM.cjs');
|
|
28
22
|
require('../../../../context/ThemeContext/ThemeContext.cjs');
|
|
29
23
|
var Input = require('../../../../components/Input/Input.cjs');
|
|
24
|
+
require('react-dom');
|
|
30
25
|
require('react-focus-lock');
|
|
31
26
|
require('../../../../components/Transition/ZoomTransition/ZoomTransition.cjs');
|
|
32
27
|
require('../../../../components/Transition/SlideInUpTransition/SlideInUpTransition.cjs');
|
|
33
28
|
require('../../../../components/Transition/OpacityTransition/OpacityTransition.cjs');
|
|
34
|
-
var
|
|
29
|
+
var api = require('../../../../data/api.cjs');
|
|
30
|
+
require('@dynamic-labs/rpc-providers');
|
|
31
|
+
require('../../../../utils/hooks/useWallets/utils/verifyMagicIsSetup/verifyMagicIsSetup.cjs');
|
|
32
|
+
var ErrorContext = require('../../../../context/ErrorContext/ErrorContext.cjs');
|
|
33
|
+
require('../../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
|
|
35
34
|
require('../../../../components/IconButton/IconButton.cjs');
|
|
35
|
+
var Button = require('../../../../components/Button/Button.cjs');
|
|
36
36
|
require('../../../../components/Alert/Alert.cjs');
|
|
37
|
+
require('../../../../context/MockContext/MockContext.cjs');
|
|
38
|
+
require('../../../../context/CaptchaContext/CaptchaContext.cjs');
|
|
39
|
+
require('../../../../utils/hooks/useUserUpdateRequest/useUserUpdateRequest.cjs');
|
|
37
40
|
require('../../../../components/Popper/Popper/Popper.cjs');
|
|
38
41
|
require('../../../../components/Popper/PopperContext/PopperContext.cjs');
|
|
39
42
|
require('formik');
|
|
40
43
|
require('yup');
|
|
41
44
|
require('../../../../components/InlineWidget/InlineWidget.cjs');
|
|
42
|
-
var useWalletItemActions = require('../../../../utils/hooks/useWalletItemActions/useWalletItemActions.cjs');
|
|
43
|
-
require('../../../../utils/hooks/useUserUpdateRequest/useUserUpdateRequest.cjs');
|
|
44
|
-
var useConnectWithEmail = require('../../../../utils/hooks/useConnectWithEmail/useConnectWithEmail.cjs');
|
|
45
|
-
var EmailVerificationContext = require('../../../../context/EmailVerificationContext/EmailVerificationContext.cjs');
|
|
46
45
|
var LoadingContext = require('../../../../context/LoadingContext/LoadingContext.cjs');
|
|
46
|
+
var useEmailProvider = require('../../../../utils/hooks/useEmailProvider/useEmailProvider.cjs');
|
|
47
47
|
|
|
48
48
|
const EMAIL_REGEX = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i;
|
|
49
49
|
const LoginWithEmailForm = () => {
|
|
50
50
|
const { environmentId, wallets, projectSettings } = useInternalDynamicContext.useInternalDynamicContext();
|
|
51
|
-
const { setView } = ViewContext.useViewContext();
|
|
52
51
|
const { loading, setLoading } = LoadingContext.useLoadingContext();
|
|
53
52
|
const { setErrorMessage } = ErrorContext.useErrorContext();
|
|
54
|
-
const { setEmail: setEmailForVerification, setVerificationUUID } = EmailVerificationContext.useEmailVerificationContext();
|
|
55
53
|
const [emailInput, setEmailInput] = React.useState('');
|
|
56
54
|
const [emailError, setEmailError] = React.useState(false);
|
|
57
55
|
const emailWalletConnector = wallets
|
|
58
56
|
.map(({ walletConnector }) => walletConnector)
|
|
59
57
|
.find(walletConnectorCore.isEmailWalletConnector);
|
|
60
|
-
const {
|
|
61
|
-
const { connectWithEmail, email: magicEmail, setEmail: setEmailForMagic, loading: isMagicLoading, } = useConnectWithEmail.useConnectWithEmail({
|
|
58
|
+
const { handleEmailOnlyLoginSubmit, submitEmail, isEmailProviderLoading } = useEmailProvider.useEmailProvider({
|
|
62
59
|
emailWalletConnector,
|
|
63
|
-
handleConnect: handleInstalledExtensionClick,
|
|
64
60
|
});
|
|
65
|
-
const isLoading = React.useMemo(() =>
|
|
66
|
-
const handleMagicOnChangeEvent = (event) => {
|
|
67
|
-
const { value } = event.currentTarget;
|
|
68
|
-
setEmailForMagic(value);
|
|
69
|
-
};
|
|
61
|
+
const isLoading = React.useMemo(() => isEmailProviderLoading || loading, [isEmailProviderLoading, loading]);
|
|
70
62
|
const handleEmailOnChangeEvent = (event) => {
|
|
71
63
|
const { value } = event.currentTarget;
|
|
72
64
|
setEmailInput(value);
|
|
73
65
|
};
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
});
|
|
77
|
-
const handleEmailLoginSubmit = (emailInputOverride) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
78
|
-
const emailToVerify = emailInputOverride !== null && emailInputOverride !== void 0 ? emailInputOverride : emailInput;
|
|
79
|
-
const { email, verificationUUID } = yield api.createEmailVerification({
|
|
80
|
-
email: emailToVerify,
|
|
81
|
-
environmentId,
|
|
82
|
-
});
|
|
83
|
-
setView('login-with-email-verification');
|
|
84
|
-
setEmailForVerification(email);
|
|
85
|
-
setVerificationUUID(verificationUUID);
|
|
86
|
-
});
|
|
87
|
-
const magicLinkEnabled = emailWalletConnector !== undefined;
|
|
88
|
-
const submitHandler = magicLinkEnabled
|
|
89
|
-
? handleMagicLinkSubmit
|
|
90
|
-
: handleEmailLoginSubmit;
|
|
91
|
-
const onChangeHandler = magicLinkEnabled
|
|
92
|
-
? handleMagicOnChangeEvent
|
|
93
|
-
: handleEmailOnChangeEvent;
|
|
94
|
-
const emailValue = magicLinkEnabled ? magicEmail : emailInput;
|
|
66
|
+
const isInjectedWalletProviderEnabled = emailWalletConnector !== undefined;
|
|
67
|
+
const onChangeHandler = handleEmailOnChangeEvent;
|
|
95
68
|
const handleSubmit = (e) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
96
69
|
e.preventDefault();
|
|
97
|
-
if (!EMAIL_REGEX.test(
|
|
70
|
+
if (!EMAIL_REGEX.test(emailInput)) {
|
|
98
71
|
setEmailError(true);
|
|
99
72
|
return;
|
|
100
73
|
}
|
|
101
74
|
try {
|
|
102
75
|
setLoading(true);
|
|
103
|
-
if (
|
|
76
|
+
if (isInjectedWalletProviderEnabled &&
|
|
104
77
|
(projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.confirmEmailProviderForVerify)) {
|
|
105
78
|
// see: https://linear.app/dynamic-labs/issue/DYN-2517
|
|
106
79
|
// if confirmWalletTransfers setting is true, check api first to confirm emailProvider
|
|
107
80
|
const { emailProvider } = yield api.getEmailProvider({
|
|
108
|
-
email:
|
|
81
|
+
email: emailInput,
|
|
109
82
|
environmentId,
|
|
110
83
|
});
|
|
111
84
|
if (emailProvider === sdkApi.ProviderEnum.EmailOnly) {
|
|
112
|
-
yield
|
|
85
|
+
yield handleEmailOnlyLoginSubmit(emailInput);
|
|
113
86
|
return;
|
|
114
87
|
}
|
|
115
88
|
}
|
|
116
|
-
yield
|
|
89
|
+
yield submitEmail(emailInput);
|
|
117
90
|
}
|
|
118
91
|
catch (error) {
|
|
119
92
|
logger.logger.debug(error);
|
|
@@ -124,7 +97,7 @@ const LoginWithEmailForm = () => {
|
|
|
124
97
|
}
|
|
125
98
|
});
|
|
126
99
|
// social sign in currently coupled to email... might be better to decouple
|
|
127
|
-
return (jsxRuntime.jsxs("form", Object.assign({ className: 'login-with-email-form', onSubmit: (e) => handleSubmit(e) }, { children: [jsxRuntime.jsx(Input.Input, { id: 'email_field', value:
|
|
100
|
+
return (jsxRuntime.jsxs("form", Object.assign({ className: 'login-with-email-form', onSubmit: (e) => handleSubmit(e) }, { children: [jsxRuntime.jsx(Input.Input, { id: 'email_field', value: emailInput, onChange: onChangeHandler, label: 'Enter your email', error: emailError, message: emailError && 'Please enter a valid email address' }), jsxRuntime.jsx(Button.Button, Object.assign({ buttonClassName: 'login-with-email-form__button', type: 'submit', loading: isLoading, disabled: isLoading, buttonVariant: 'primary', buttonPadding: 'large', buttonRounded: 'medium', expanded: true }, { children: "Continue" }))] })));
|
|
128
101
|
};
|
|
129
102
|
|
|
130
103
|
exports.EMAIL_REGEX = EMAIL_REGEX;
|
package/src/lib/views/LoginWithEmailView/components/LoginWithEmailForm/LoginWithEmailForm.js
CHANGED
|
@@ -3,113 +3,86 @@ import { jsxs, jsx } from 'react/jsx-runtime';
|
|
|
3
3
|
import { useState, useMemo } from 'react';
|
|
4
4
|
import { isEmailWalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
5
5
|
import { ProviderEnum } from '@dynamic-labs/sdk-api';
|
|
6
|
-
import '@dynamic-labs/utils';
|
|
7
|
-
import { getEmailProvider, createEmailVerification } from '../../../../data/api.js';
|
|
8
6
|
import { logger } from '../../../../shared/logger.js';
|
|
9
7
|
import '@dynamic-labs/iconic';
|
|
10
|
-
import
|
|
8
|
+
import '../../../../context/ViewContext/ViewContext.js';
|
|
11
9
|
import '@dynamic-labs/wallet-book';
|
|
10
|
+
import '@dynamic-labs/utils';
|
|
12
11
|
import '../../../../utils/constants/colors.js';
|
|
13
12
|
import '../../../../shared/utils/classes/storage/localStorage.js';
|
|
14
13
|
import 'ethers';
|
|
15
14
|
import '../../../../shared/consts/index.js';
|
|
16
|
-
import '@dynamic-labs/multi-wallet';
|
|
17
|
-
import '@dynamic-labs/rpc-providers';
|
|
18
|
-
import '../../../../utils/hooks/useWallets/utils/verifyMagicIsSetup/verifyMagicIsSetup.js';
|
|
19
15
|
import { useInternalDynamicContext } from '../../../../context/DynamicContext/useInternalDynamicContext.js';
|
|
20
|
-
import
|
|
21
|
-
import '../../../../context/AccessDeniedContext/AccessDeniedContext.js';
|
|
22
|
-
import 'react-dom';
|
|
16
|
+
import '@dynamic-labs/multi-wallet';
|
|
23
17
|
import '../../../../components/ShadowDOM/ShadowDOM.js';
|
|
24
18
|
import '../../../../context/ThemeContext/ThemeContext.js';
|
|
25
19
|
import { Input } from '../../../../components/Input/Input.js';
|
|
20
|
+
import 'react-dom';
|
|
26
21
|
import 'react-focus-lock';
|
|
27
22
|
import '../../../../components/Transition/ZoomTransition/ZoomTransition.js';
|
|
28
23
|
import '../../../../components/Transition/SlideInUpTransition/SlideInUpTransition.js';
|
|
29
24
|
import '../../../../components/Transition/OpacityTransition/OpacityTransition.js';
|
|
30
|
-
import {
|
|
25
|
+
import { getEmailProvider } from '../../../../data/api.js';
|
|
26
|
+
import '@dynamic-labs/rpc-providers';
|
|
27
|
+
import '../../../../utils/hooks/useWallets/utils/verifyMagicIsSetup/verifyMagicIsSetup.js';
|
|
28
|
+
import { useErrorContext } from '../../../../context/ErrorContext/ErrorContext.js';
|
|
29
|
+
import '../../../../context/AccessDeniedContext/AccessDeniedContext.js';
|
|
31
30
|
import '../../../../components/IconButton/IconButton.js';
|
|
31
|
+
import { Button } from '../../../../components/Button/Button.js';
|
|
32
32
|
import '../../../../components/Alert/Alert.js';
|
|
33
|
+
import '../../../../context/MockContext/MockContext.js';
|
|
34
|
+
import '../../../../context/CaptchaContext/CaptchaContext.js';
|
|
35
|
+
import '../../../../utils/hooks/useUserUpdateRequest/useUserUpdateRequest.js';
|
|
33
36
|
import '../../../../components/Popper/Popper/Popper.js';
|
|
34
37
|
import '../../../../components/Popper/PopperContext/PopperContext.js';
|
|
35
38
|
import 'formik';
|
|
36
39
|
import 'yup';
|
|
37
40
|
import '../../../../components/InlineWidget/InlineWidget.js';
|
|
38
|
-
import { useWalletItemActions } from '../../../../utils/hooks/useWalletItemActions/useWalletItemActions.js';
|
|
39
|
-
import '../../../../utils/hooks/useUserUpdateRequest/useUserUpdateRequest.js';
|
|
40
|
-
import { useConnectWithEmail } from '../../../../utils/hooks/useConnectWithEmail/useConnectWithEmail.js';
|
|
41
|
-
import { useEmailVerificationContext } from '../../../../context/EmailVerificationContext/EmailVerificationContext.js';
|
|
42
41
|
import { useLoadingContext } from '../../../../context/LoadingContext/LoadingContext.js';
|
|
42
|
+
import { useEmailProvider } from '../../../../utils/hooks/useEmailProvider/useEmailProvider.js';
|
|
43
43
|
|
|
44
44
|
const EMAIL_REGEX = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i;
|
|
45
45
|
const LoginWithEmailForm = () => {
|
|
46
46
|
const { environmentId, wallets, projectSettings } = useInternalDynamicContext();
|
|
47
|
-
const { setView } = useViewContext();
|
|
48
47
|
const { loading, setLoading } = useLoadingContext();
|
|
49
48
|
const { setErrorMessage } = useErrorContext();
|
|
50
|
-
const { setEmail: setEmailForVerification, setVerificationUUID } = useEmailVerificationContext();
|
|
51
49
|
const [emailInput, setEmailInput] = useState('');
|
|
52
50
|
const [emailError, setEmailError] = useState(false);
|
|
53
51
|
const emailWalletConnector = wallets
|
|
54
52
|
.map(({ walletConnector }) => walletConnector)
|
|
55
53
|
.find(isEmailWalletConnector);
|
|
56
|
-
const {
|
|
57
|
-
const { connectWithEmail, email: magicEmail, setEmail: setEmailForMagic, loading: isMagicLoading, } = useConnectWithEmail({
|
|
54
|
+
const { handleEmailOnlyLoginSubmit, submitEmail, isEmailProviderLoading } = useEmailProvider({
|
|
58
55
|
emailWalletConnector,
|
|
59
|
-
handleConnect: handleInstalledExtensionClick,
|
|
60
56
|
});
|
|
61
|
-
const isLoading = useMemo(() =>
|
|
62
|
-
const handleMagicOnChangeEvent = (event) => {
|
|
63
|
-
const { value } = event.currentTarget;
|
|
64
|
-
setEmailForMagic(value);
|
|
65
|
-
};
|
|
57
|
+
const isLoading = useMemo(() => isEmailProviderLoading || loading, [isEmailProviderLoading, loading]);
|
|
66
58
|
const handleEmailOnChangeEvent = (event) => {
|
|
67
59
|
const { value } = event.currentTarget;
|
|
68
60
|
setEmailInput(value);
|
|
69
61
|
};
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
});
|
|
73
|
-
const handleEmailLoginSubmit = (emailInputOverride) => __awaiter(void 0, void 0, void 0, function* () {
|
|
74
|
-
const emailToVerify = emailInputOverride !== null && emailInputOverride !== void 0 ? emailInputOverride : emailInput;
|
|
75
|
-
const { email, verificationUUID } = yield createEmailVerification({
|
|
76
|
-
email: emailToVerify,
|
|
77
|
-
environmentId,
|
|
78
|
-
});
|
|
79
|
-
setView('login-with-email-verification');
|
|
80
|
-
setEmailForVerification(email);
|
|
81
|
-
setVerificationUUID(verificationUUID);
|
|
82
|
-
});
|
|
83
|
-
const magicLinkEnabled = emailWalletConnector !== undefined;
|
|
84
|
-
const submitHandler = magicLinkEnabled
|
|
85
|
-
? handleMagicLinkSubmit
|
|
86
|
-
: handleEmailLoginSubmit;
|
|
87
|
-
const onChangeHandler = magicLinkEnabled
|
|
88
|
-
? handleMagicOnChangeEvent
|
|
89
|
-
: handleEmailOnChangeEvent;
|
|
90
|
-
const emailValue = magicLinkEnabled ? magicEmail : emailInput;
|
|
62
|
+
const isInjectedWalletProviderEnabled = emailWalletConnector !== undefined;
|
|
63
|
+
const onChangeHandler = handleEmailOnChangeEvent;
|
|
91
64
|
const handleSubmit = (e) => __awaiter(void 0, void 0, void 0, function* () {
|
|
92
65
|
e.preventDefault();
|
|
93
|
-
if (!EMAIL_REGEX.test(
|
|
66
|
+
if (!EMAIL_REGEX.test(emailInput)) {
|
|
94
67
|
setEmailError(true);
|
|
95
68
|
return;
|
|
96
69
|
}
|
|
97
70
|
try {
|
|
98
71
|
setLoading(true);
|
|
99
|
-
if (
|
|
72
|
+
if (isInjectedWalletProviderEnabled &&
|
|
100
73
|
(projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.confirmEmailProviderForVerify)) {
|
|
101
74
|
// see: https://linear.app/dynamic-labs/issue/DYN-2517
|
|
102
75
|
// if confirmWalletTransfers setting is true, check api first to confirm emailProvider
|
|
103
76
|
const { emailProvider } = yield getEmailProvider({
|
|
104
|
-
email:
|
|
77
|
+
email: emailInput,
|
|
105
78
|
environmentId,
|
|
106
79
|
});
|
|
107
80
|
if (emailProvider === ProviderEnum.EmailOnly) {
|
|
108
|
-
yield
|
|
81
|
+
yield handleEmailOnlyLoginSubmit(emailInput);
|
|
109
82
|
return;
|
|
110
83
|
}
|
|
111
84
|
}
|
|
112
|
-
yield
|
|
85
|
+
yield submitEmail(emailInput);
|
|
113
86
|
}
|
|
114
87
|
catch (error) {
|
|
115
88
|
logger.debug(error);
|
|
@@ -120,7 +93,7 @@ const LoginWithEmailForm = () => {
|
|
|
120
93
|
}
|
|
121
94
|
});
|
|
122
95
|
// social sign in currently coupled to email... might be better to decouple
|
|
123
|
-
return (jsxs("form", Object.assign({ className: 'login-with-email-form', onSubmit: (e) => handleSubmit(e) }, { children: [jsx(Input, { id: 'email_field', value:
|
|
96
|
+
return (jsxs("form", Object.assign({ className: 'login-with-email-form', onSubmit: (e) => handleSubmit(e) }, { children: [jsx(Input, { id: 'email_field', value: emailInput, onChange: onChangeHandler, label: 'Enter your email', error: emailError, message: emailError && 'Please enter a valid email address' }), jsx(Button, Object.assign({ buttonClassName: 'login-with-email-form__button', type: 'submit', loading: isLoading, disabled: isLoading, buttonVariant: 'primary', buttonPadding: 'large', buttonRounded: 'medium', expanded: true }, { children: "Continue" }))] })));
|
|
124
97
|
};
|
|
125
98
|
|
|
126
99
|
export { EMAIL_REGEX, LoginWithEmailForm };
|
|
@@ -19,7 +19,7 @@ require('../../../../utils/constants/colors.cjs');
|
|
|
19
19
|
require('../../../../shared/utils/classes/storage/localStorage.cjs');
|
|
20
20
|
require('ethers');
|
|
21
21
|
require('../../../../shared/consts/index.cjs');
|
|
22
|
-
require('../../../../context/DynamicContext/
|
|
22
|
+
var useInternalDynamicContext = require('../../../../context/DynamicContext/useInternalDynamicContext.cjs');
|
|
23
23
|
require('@dynamic-labs/multi-wallet');
|
|
24
24
|
require('../../../../components/ShadowDOM/ShadowDOM.cjs');
|
|
25
25
|
require('../../../../context/ThemeContext/ThemeContext.cjs');
|
|
@@ -55,16 +55,18 @@ require('../../../../components/OverlayCard/OverlayCard.context.cjs');
|
|
|
55
55
|
var capitalize = require('../../../../shared/utils/functions/capitalize/capitalize.cjs');
|
|
56
56
|
|
|
57
57
|
const SocialSignIn = () => {
|
|
58
|
+
const { socialProvidersFilter = (providers) => providers } = useInternalDynamicContext.useInternalDynamicContext();
|
|
58
59
|
const { socialProvider, setSocialProvider, socialWalletConnector, enabledSocialProviders, } = SocialRedirectContext.useSocialRedirectContext();
|
|
59
60
|
const getSocialIcon = useGetSocialIcon.useGetSocialIcon();
|
|
60
61
|
const [showCard, setShowCard] = React.useState(false);
|
|
61
62
|
const closeCard = () => !isLoading && setShowCard(false);
|
|
62
|
-
const
|
|
63
|
+
const socialProviders = socialProvidersFilter(enabledSocialProviders);
|
|
64
|
+
const numberOfEnabledSocialProviders = socialProviders.length;
|
|
63
65
|
const showConnectText = numberOfEnabledSocialProviders === 1;
|
|
64
66
|
const showCardButton = numberOfEnabledSocialProviders > 5;
|
|
65
67
|
const socialProvidersToDisplayInline = showCardButton
|
|
66
|
-
?
|
|
67
|
-
:
|
|
68
|
+
? socialProviders.slice(0, 4)
|
|
69
|
+
: socialProviders.slice(0, 5);
|
|
68
70
|
const numberOfSocialGridItems = numberOfEnabledSocialProviders + (showCardButton ? 1 : 0);
|
|
69
71
|
const { mutate: onClickProvider, isLoading } = useMutation.useMutation((provider) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
70
72
|
setSocialProvider(provider);
|
|
@@ -74,7 +76,7 @@ const SocialSignIn = () => {
|
|
|
74
76
|
const closeButton = (jsxRuntime.jsx(IconButton.IconButton, Object.assign({ onClick: closeCard, type: 'button', id: 'close-button', disabled: isLoading, "data-testid": 'close-button' }, { children: jsxRuntime.jsx(close.ReactComponent, {}) })));
|
|
75
77
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("div", Object.assign({ className: 'social-sign-in', style: {
|
|
76
78
|
'--number-of-social-grid-items': numberOfSocialGridItems,
|
|
77
|
-
} }, { children: [socialProvidersToDisplayInline.map((provider) => (jsxRuntime.jsxs(IconListTile.IconListTile, Object.assign({ dataTestId: `inline-${provider}`, onClick: () => onClickProvider(provider), className: 'social-sign-in--tile' }, { children: [jsxRuntime.jsx(IconWithSpinner.IconWithSpinner, { Icon: getSocialIcon(provider), isSpinning: socialProvider === provider, iconSize: 32 }), showConnectText && (jsxRuntime.jsxs(Typography.Typography, Object.assign({ variant: 'button_primary' }, { children: ["Connect with ", capitalize.capitalize(provider)] })))] }), provider))), showCardButton && (jsxRuntime.jsx(IconListTile.IconListTile, Object.assign({ dataTestId: 'show-more-options', onClick: () => setShowCard(true) }, { children: jsxRuntime.jsx(Icon.Icon, Object.assign({ color: 'text-primary' }, { children: jsxRuntime.jsx(dotsHorizontal.ReactComponent, {}) })) }), 'show-more-options'))] })), jsxRuntime.jsx(OverlayCard.OverlayCard, Object.assign({ isOpen: showCard, onClickOverlay: closeCard }, { children: jsxRuntime.jsxs("div", Object.assign({ className: 'social-sign-in--card' }, { children: [jsxRuntime.jsx(ModalHeader.ModalHeader, Object.assign({ trailing: closeButton }, { children: jsxRuntime.jsx(Typography.Typography, Object.assign({ weight: 'medium', variant: 'body_normal', color: 'primary', as: 'span' }, { children: "Choose a social account" })) })), jsxRuntime.jsx("div", Object.assign({ className: 'social-sign-in--card--body' }, { children:
|
|
79
|
+
} }, { children: [socialProvidersToDisplayInline.map((provider) => (jsxRuntime.jsxs(IconListTile.IconListTile, Object.assign({ dataTestId: `inline-${provider}`, onClick: () => onClickProvider(provider), className: 'social-sign-in--tile' }, { children: [jsxRuntime.jsx(IconWithSpinner.IconWithSpinner, { Icon: getSocialIcon(provider), isSpinning: socialProvider === provider, iconSize: 32 }), showConnectText && (jsxRuntime.jsxs(Typography.Typography, Object.assign({ variant: 'button_primary' }, { children: ["Connect with ", capitalize.capitalize(provider)] })))] }), provider))), showCardButton && (jsxRuntime.jsx(IconListTile.IconListTile, Object.assign({ dataTestId: 'show-more-options', onClick: () => setShowCard(true) }, { children: jsxRuntime.jsx(Icon.Icon, Object.assign({ color: 'text-primary' }, { children: jsxRuntime.jsx(dotsHorizontal.ReactComponent, {}) })) }), 'show-more-options'))] })), jsxRuntime.jsx(OverlayCard.OverlayCard, Object.assign({ isOpen: showCard, onClickOverlay: closeCard }, { children: jsxRuntime.jsxs("div", Object.assign({ className: 'social-sign-in--card' }, { children: [jsxRuntime.jsx(ModalHeader.ModalHeader, Object.assign({ trailing: closeButton }, { children: jsxRuntime.jsx(Typography.Typography, Object.assign({ weight: 'medium', variant: 'body_normal', color: 'primary', as: 'span' }, { children: "Choose a social account" })) })), jsxRuntime.jsx("div", Object.assign({ className: 'social-sign-in--card--body' }, { children: socialProviders.map((provider) => (jsxRuntime.jsx(IconListTile.IconListTile, Object.assign({ dataTestId: `card-${provider}`, onClick: () => onClickProvider(provider), className: 'social-sign-in--card--tile' }, { children: jsxRuntime.jsx(IconWithSpinner.IconWithSpinner, { Icon: getSocialIcon(provider), isSpinning: socialProvider === provider, iconSize: 32 }) }), provider))) }))] })) }))] }));
|
|
78
80
|
};
|
|
79
81
|
|
|
80
82
|
exports.SocialSignIn = SocialSignIn;
|
|
@@ -15,7 +15,7 @@ import '../../../../utils/constants/colors.js';
|
|
|
15
15
|
import '../../../../shared/utils/classes/storage/localStorage.js';
|
|
16
16
|
import 'ethers';
|
|
17
17
|
import '../../../../shared/consts/index.js';
|
|
18
|
-
import '../../../../context/DynamicContext/
|
|
18
|
+
import { useInternalDynamicContext } from '../../../../context/DynamicContext/useInternalDynamicContext.js';
|
|
19
19
|
import '@dynamic-labs/multi-wallet';
|
|
20
20
|
import '../../../../components/ShadowDOM/ShadowDOM.js';
|
|
21
21
|
import '../../../../context/ThemeContext/ThemeContext.js';
|
|
@@ -51,16 +51,18 @@ import '../../../../components/OverlayCard/OverlayCard.context.js';
|
|
|
51
51
|
import { capitalize } from '../../../../shared/utils/functions/capitalize/capitalize.js';
|
|
52
52
|
|
|
53
53
|
const SocialSignIn = () => {
|
|
54
|
+
const { socialProvidersFilter = (providers) => providers } = useInternalDynamicContext();
|
|
54
55
|
const { socialProvider, setSocialProvider, socialWalletConnector, enabledSocialProviders, } = useSocialRedirectContext();
|
|
55
56
|
const getSocialIcon = useGetSocialIcon();
|
|
56
57
|
const [showCard, setShowCard] = useState(false);
|
|
57
58
|
const closeCard = () => !isLoading && setShowCard(false);
|
|
58
|
-
const
|
|
59
|
+
const socialProviders = socialProvidersFilter(enabledSocialProviders);
|
|
60
|
+
const numberOfEnabledSocialProviders = socialProviders.length;
|
|
59
61
|
const showConnectText = numberOfEnabledSocialProviders === 1;
|
|
60
62
|
const showCardButton = numberOfEnabledSocialProviders > 5;
|
|
61
63
|
const socialProvidersToDisplayInline = showCardButton
|
|
62
|
-
?
|
|
63
|
-
:
|
|
64
|
+
? socialProviders.slice(0, 4)
|
|
65
|
+
: socialProviders.slice(0, 5);
|
|
64
66
|
const numberOfSocialGridItems = numberOfEnabledSocialProviders + (showCardButton ? 1 : 0);
|
|
65
67
|
const { mutate: onClickProvider, isLoading } = useMutation((provider) => __awaiter(void 0, void 0, void 0, function* () {
|
|
66
68
|
setSocialProvider(provider);
|
|
@@ -70,7 +72,7 @@ const SocialSignIn = () => {
|
|
|
70
72
|
const closeButton = (jsx(IconButton, Object.assign({ onClick: closeCard, type: 'button', id: 'close-button', disabled: isLoading, "data-testid": 'close-button' }, { children: jsx(SvgClose, {}) })));
|
|
71
73
|
return (jsxs(Fragment, { children: [jsxs("div", Object.assign({ className: 'social-sign-in', style: {
|
|
72
74
|
'--number-of-social-grid-items': numberOfSocialGridItems,
|
|
73
|
-
} }, { children: [socialProvidersToDisplayInline.map((provider) => (jsxs(IconListTile, Object.assign({ dataTestId: `inline-${provider}`, onClick: () => onClickProvider(provider), className: 'social-sign-in--tile' }, { children: [jsx(IconWithSpinner, { Icon: getSocialIcon(provider), isSpinning: socialProvider === provider, iconSize: 32 }), showConnectText && (jsxs(Typography, Object.assign({ variant: 'button_primary' }, { children: ["Connect with ", capitalize(provider)] })))] }), provider))), showCardButton && (jsx(IconListTile, Object.assign({ dataTestId: 'show-more-options', onClick: () => setShowCard(true) }, { children: jsx(Icon, Object.assign({ color: 'text-primary' }, { children: jsx(SvgDotsHorizontal, {}) })) }), 'show-more-options'))] })), jsx(OverlayCard, Object.assign({ isOpen: showCard, onClickOverlay: closeCard }, { children: jsxs("div", Object.assign({ className: 'social-sign-in--card' }, { children: [jsx(ModalHeader, Object.assign({ trailing: closeButton }, { children: jsx(Typography, Object.assign({ weight: 'medium', variant: 'body_normal', color: 'primary', as: 'span' }, { children: "Choose a social account" })) })), jsx("div", Object.assign({ className: 'social-sign-in--card--body' }, { children:
|
|
75
|
+
} }, { children: [socialProvidersToDisplayInline.map((provider) => (jsxs(IconListTile, Object.assign({ dataTestId: `inline-${provider}`, onClick: () => onClickProvider(provider), className: 'social-sign-in--tile' }, { children: [jsx(IconWithSpinner, { Icon: getSocialIcon(provider), isSpinning: socialProvider === provider, iconSize: 32 }), showConnectText && (jsxs(Typography, Object.assign({ variant: 'button_primary' }, { children: ["Connect with ", capitalize(provider)] })))] }), provider))), showCardButton && (jsx(IconListTile, Object.assign({ dataTestId: 'show-more-options', onClick: () => setShowCard(true) }, { children: jsx(Icon, Object.assign({ color: 'text-primary' }, { children: jsx(SvgDotsHorizontal, {}) })) }), 'show-more-options'))] })), jsx(OverlayCard, Object.assign({ isOpen: showCard, onClickOverlay: closeCard }, { children: jsxs("div", Object.assign({ className: 'social-sign-in--card' }, { children: [jsx(ModalHeader, Object.assign({ trailing: closeButton }, { children: jsx(Typography, Object.assign({ weight: 'medium', variant: 'body_normal', color: 'primary', as: 'span' }, { children: "Choose a social account" })) })), jsx("div", Object.assign({ className: 'social-sign-in--card--body' }, { children: socialProviders.map((provider) => (jsx(IconListTile, Object.assign({ dataTestId: `card-${provider}`, onClick: () => onClickProvider(provider), className: 'social-sign-in--card--tile' }, { children: jsx(IconWithSpinner, { Icon: getSocialIcon(provider), isSpinning: socialProvider === provider, iconSize: 32 }) }), provider))) }))] })) }))] }));
|
|
74
76
|
};
|
|
75
77
|
|
|
76
78
|
export { SocialSignIn };
|
|
@@ -39,6 +39,7 @@ require('../../context/MockContext/MockContext.cjs');
|
|
|
39
39
|
var useConnectAndSign = require('../../utils/hooks/authenticationHooks/useConnectAndSign/useConnectAndSign.cjs');
|
|
40
40
|
require('../../context/CaptchaContext/CaptchaContext.cjs');
|
|
41
41
|
require('../../utils/hooks/useUserUpdateRequest/useUserUpdateRequest.cjs');
|
|
42
|
+
var useWalletConnectorEvents = require('../../utils/hooks/useWalletConnectorEvents/useWalletConnectorEvents.cjs');
|
|
42
43
|
var ErrorContainer = require('../../components/ErrorContainer/ErrorContainer.cjs');
|
|
43
44
|
require('../../components/Popper/Popper/Popper.cjs');
|
|
44
45
|
require('../../components/Popper/PopperContext/PopperContext.cjs');
|
|
@@ -48,27 +49,26 @@ require('../../components/InlineWidget/InlineWidget.cjs');
|
|
|
48
49
|
var NetworkPicker = require('../../components/NetworkPicker/NetworkPicker.cjs');
|
|
49
50
|
var UserAddress = require('../../components/UserAddress/UserAddress.cjs');
|
|
50
51
|
var AuthProviderIcon = require('../../components/AuthProviderIcon/AuthProviderIcon.cjs');
|
|
51
|
-
var useUpdateUserProfileByJWTCallback = require('../../utils/hooks/useUpdateUserProfileByJWTCallback/useUpdateUserProfileByJWTCallback.cjs');
|
|
52
52
|
var SelectNetworkButton = require('../../components/SelectNetworkButton/SelectNetworkButton.cjs');
|
|
53
53
|
|
|
54
54
|
const NetworkNotSupported = () => {
|
|
55
55
|
var _a, _b, _c, _d;
|
|
56
|
-
const { onboardingOnlyJwt, network, onboardingImageUrl, selectedWalletConnector: walletConnector, decodedOnboardingOnlyToken,
|
|
57
|
-
const { updateUserProfileByJWT } = useUpdateUserProfileByJWTCallback.useUpdateUserProfileByJWTCallback();
|
|
56
|
+
const { onboardingOnlyJwt, network, onboardingImageUrl, selectedWalletConnector: walletConnector, decodedOnboardingOnlyToken, setNetwork, } = useInternalDynamicContext.useInternalDynamicContext();
|
|
58
57
|
const finishConnectAndSign = useConnectAndSign.useConnectAndSign();
|
|
59
58
|
const [isNetworkPickerOpen, setIsNetworkPickerOpen] = React.useState(false);
|
|
59
|
+
const onChainChange = (network) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
60
|
+
if (isSupportedNetwork.isSupportedNetwork({ network, walletConnector })) {
|
|
61
|
+
finishConnectAndSign({
|
|
62
|
+
walletConnector: walletConnector,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
// We can't listen on the network defined in the context,
|
|
67
|
+
// because events on the primaryWallet are defined after message is signed.
|
|
68
|
+
useWalletConnectorEvents.useWalletConnectorEvents(walletConnector, { onChainChange });
|
|
60
69
|
if (!walletConnector) {
|
|
61
70
|
return null;
|
|
62
71
|
}
|
|
63
|
-
const handleNetworkChange = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
64
|
-
if (!onboardingOnlyJwt) {
|
|
65
|
-
finishConnectAndSign({ walletConnector });
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
setCallback('authSuccess');
|
|
69
|
-
yield updateUserProfileByJWT(onboardingOnlyJwt);
|
|
70
|
-
setShowAuthFlow(false);
|
|
71
|
-
});
|
|
72
72
|
const userProfile = decodedOnboardingOnlyToken && createUserProfile.createUserProfile(decodedOnboardingOnlyToken);
|
|
73
73
|
const evmNetworks = walletConnector.evmNetworks || [];
|
|
74
74
|
const _isSupportedNetwork = isSupportedNetwork.isSupportedNetwork({ network, walletConnector });
|
|
@@ -78,13 +78,13 @@ const NetworkNotSupported = () => {
|
|
|
78
78
|
networkChainId: networkId,
|
|
79
79
|
});
|
|
80
80
|
setNetwork(networkId);
|
|
81
|
-
|
|
81
|
+
finishConnectAndSign({ walletConnector });
|
|
82
82
|
}
|
|
83
83
|
catch (e) {
|
|
84
84
|
logger.logger.debug(e);
|
|
85
85
|
}
|
|
86
86
|
});
|
|
87
|
-
return (jsxRuntime.jsxs("div", Object.assign({ className: 'network-not-supported', "data-testid": 'network-not-supported' }, { children: [onboardingImageUrl && (jsxRuntime.jsx("img", { className: 'network-not-supported__main-img', src: onboardingImageUrl, alt: 'onboarding' })), !_isSupportedNetwork && (jsxRuntime.jsx(ErrorContainer.ErrorContainer, Object.assign({ variant: 'info', withIcon: false, className: 'network-not-supported__error--not-supported' }, { children: "This network is not available, please update." }))), jsxRuntime.jsxs("div", Object.assign({ className: 'network-not-supported__content-container' }, { children: [jsxRuntime.jsxs("div", Object.assign({ className: 'network-not-supported__img-container' }, { children: [((_a = userProfile === null || userProfile === void 0 ? void 0 : userProfile.ens) === null || _a === void 0 ? void 0 : _a.avatar) && (jsxRuntime.jsx("div", Object.assign({ className: 'network-not-supported__network-container' }, { children: jsxRuntime.jsx("img", { src: (_b = userProfile === null || userProfile === void 0 ? void 0 : userProfile.ens) === null || _b === void 0 ? void 0 : _b.avatar, alt: 'user ens avatar', className: 'network-not-supported__img' }) }))), !((_c = userProfile === null || userProfile === void 0 ? void 0 : userProfile.ens) === null || _c === void 0 ? void 0 : _c.avatar) && onboardingOnlyJwt && (jsxRuntime.jsx(AuthProviderIcon.AuthProviderIcon, { jwt: onboardingOnlyJwt })), !((_d = userProfile === null || userProfile === void 0 ? void 0 : userProfile.ens) === null || _d === void 0 ? void 0 : _d.avatar) && !onboardingOnlyJwt && (jsxRuntime.jsx(walletBook.WalletIcon, { style: { height: 64, width: 64 }, walletName: walletConnector.name }))] })), jsxRuntime.jsx(UserAddress.UserAddress, { walletConnector: walletConnector, userProfile: userProfile }), jsxRuntime.jsx("div", Object.assign({ className: 'network-not-supported__network-container' }, { children: evmNetworks.length > 1 && (jsxRuntime.jsx(NetworkPicker.NetworkPicker, { evmNetworks: evmNetworks, connector: walletConnector, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, showNetworkName: true, buttonClassName: 'network-not-supported__network-picker-button', mainClassName: 'network-not-supported__network-picker'
|
|
87
|
+
return (jsxRuntime.jsxs("div", Object.assign({ className: 'network-not-supported', "data-testid": 'network-not-supported' }, { children: [onboardingImageUrl && (jsxRuntime.jsx("img", { className: 'network-not-supported__main-img', src: onboardingImageUrl, alt: 'onboarding' })), !_isSupportedNetwork && (jsxRuntime.jsx(ErrorContainer.ErrorContainer, Object.assign({ variant: 'info', withIcon: false, className: 'network-not-supported__error--not-supported' }, { children: "This network is not available, please update." }))), jsxRuntime.jsxs("div", Object.assign({ className: 'network-not-supported__content-container' }, { children: [jsxRuntime.jsxs("div", Object.assign({ className: 'network-not-supported__img-container' }, { children: [((_a = userProfile === null || userProfile === void 0 ? void 0 : userProfile.ens) === null || _a === void 0 ? void 0 : _a.avatar) && (jsxRuntime.jsx("div", Object.assign({ className: 'network-not-supported__network-container' }, { children: jsxRuntime.jsx("img", { src: (_b = userProfile === null || userProfile === void 0 ? void 0 : userProfile.ens) === null || _b === void 0 ? void 0 : _b.avatar, alt: 'user ens avatar', className: 'network-not-supported__img' }) }))), !((_c = userProfile === null || userProfile === void 0 ? void 0 : userProfile.ens) === null || _c === void 0 ? void 0 : _c.avatar) && onboardingOnlyJwt && (jsxRuntime.jsx(AuthProviderIcon.AuthProviderIcon, { jwt: onboardingOnlyJwt })), !((_d = userProfile === null || userProfile === void 0 ? void 0 : userProfile.ens) === null || _d === void 0 ? void 0 : _d.avatar) && !onboardingOnlyJwt && (jsxRuntime.jsx(walletBook.WalletIcon, { style: { height: 64, width: 64 }, walletName: walletConnector.name }))] })), jsxRuntime.jsx(UserAddress.UserAddress, { walletConnector: walletConnector, userProfile: userProfile }), jsxRuntime.jsx("div", Object.assign({ className: 'network-not-supported__network-container' }, { children: evmNetworks.length > 1 && (jsxRuntime.jsx(NetworkPicker.NetworkPicker, { evmNetworks: evmNetworks, connector: walletConnector, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, showNetworkName: true, buttonClassName: 'network-not-supported__network-picker-button', mainClassName: 'network-not-supported__network-picker' })) })), jsxRuntime.jsxs("div", Object.assign({ className: 'network-not-supported__welcome-container' }, { children: [jsxRuntime.jsx(Typography.Typography, Object.assign({ variant: 'title', color: 'primary', className: 'network-not-supported__welcome-title' }, { children: "Update Network" })), jsxRuntime.jsx(Typography.Typography, Object.assign({ variant: 'body_normal', weight: 'regular', color: 'secondary' }, { children: "Your wallet is not connected to a supported network. Please update before continuing." }))] })), evmNetworks.length === 1 && (jsxRuntime.jsx(SelectNetworkButton.SelectNetworkButton, { onClick: onSelectNetworkButtonClick, networkId: evmNetworks[0].networkId, networkName: evmNetworks[0].vanityName || evmNetworks[0].name, networkIconUrl: evmNetworks[0].iconUrls[0] }))] }))] })));
|
|
88
88
|
};
|
|
89
89
|
|
|
90
90
|
exports.NetworkNotSupported = NetworkNotSupported;
|
|
@@ -35,6 +35,7 @@ import '../../context/MockContext/MockContext.js';
|
|
|
35
35
|
import { useConnectAndSign } from '../../utils/hooks/authenticationHooks/useConnectAndSign/useConnectAndSign.js';
|
|
36
36
|
import '../../context/CaptchaContext/CaptchaContext.js';
|
|
37
37
|
import '../../utils/hooks/useUserUpdateRequest/useUserUpdateRequest.js';
|
|
38
|
+
import { useWalletConnectorEvents } from '../../utils/hooks/useWalletConnectorEvents/useWalletConnectorEvents.js';
|
|
38
39
|
import { ErrorContainer } from '../../components/ErrorContainer/ErrorContainer.js';
|
|
39
40
|
import '../../components/Popper/Popper/Popper.js';
|
|
40
41
|
import '../../components/Popper/PopperContext/PopperContext.js';
|
|
@@ -44,27 +45,26 @@ import '../../components/InlineWidget/InlineWidget.js';
|
|
|
44
45
|
import { NetworkPicker } from '../../components/NetworkPicker/NetworkPicker.js';
|
|
45
46
|
import { UserAddress } from '../../components/UserAddress/UserAddress.js';
|
|
46
47
|
import { AuthProviderIcon } from '../../components/AuthProviderIcon/AuthProviderIcon.js';
|
|
47
|
-
import { useUpdateUserProfileByJWTCallback } from '../../utils/hooks/useUpdateUserProfileByJWTCallback/useUpdateUserProfileByJWTCallback.js';
|
|
48
48
|
import { SelectNetworkButton } from '../../components/SelectNetworkButton/SelectNetworkButton.js';
|
|
49
49
|
|
|
50
50
|
const NetworkNotSupported = () => {
|
|
51
51
|
var _a, _b, _c, _d;
|
|
52
|
-
const { onboardingOnlyJwt, network, onboardingImageUrl, selectedWalletConnector: walletConnector, decodedOnboardingOnlyToken,
|
|
53
|
-
const { updateUserProfileByJWT } = useUpdateUserProfileByJWTCallback();
|
|
52
|
+
const { onboardingOnlyJwt, network, onboardingImageUrl, selectedWalletConnector: walletConnector, decodedOnboardingOnlyToken, setNetwork, } = useInternalDynamicContext();
|
|
54
53
|
const finishConnectAndSign = useConnectAndSign();
|
|
55
54
|
const [isNetworkPickerOpen, setIsNetworkPickerOpen] = useState(false);
|
|
55
|
+
const onChainChange = (network) => __awaiter(void 0, void 0, void 0, function* () {
|
|
56
|
+
if (isSupportedNetwork({ network, walletConnector })) {
|
|
57
|
+
finishConnectAndSign({
|
|
58
|
+
walletConnector: walletConnector,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
// We can't listen on the network defined in the context,
|
|
63
|
+
// because events on the primaryWallet are defined after message is signed.
|
|
64
|
+
useWalletConnectorEvents(walletConnector, { onChainChange });
|
|
56
65
|
if (!walletConnector) {
|
|
57
66
|
return null;
|
|
58
67
|
}
|
|
59
|
-
const handleNetworkChange = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
60
|
-
if (!onboardingOnlyJwt) {
|
|
61
|
-
finishConnectAndSign({ walletConnector });
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
setCallback('authSuccess');
|
|
65
|
-
yield updateUserProfileByJWT(onboardingOnlyJwt);
|
|
66
|
-
setShowAuthFlow(false);
|
|
67
|
-
});
|
|
68
68
|
const userProfile = decodedOnboardingOnlyToken && createUserProfile(decodedOnboardingOnlyToken);
|
|
69
69
|
const evmNetworks = walletConnector.evmNetworks || [];
|
|
70
70
|
const _isSupportedNetwork = isSupportedNetwork({ network, walletConnector });
|
|
@@ -74,13 +74,13 @@ const NetworkNotSupported = () => {
|
|
|
74
74
|
networkChainId: networkId,
|
|
75
75
|
});
|
|
76
76
|
setNetwork(networkId);
|
|
77
|
-
|
|
77
|
+
finishConnectAndSign({ walletConnector });
|
|
78
78
|
}
|
|
79
79
|
catch (e) {
|
|
80
80
|
logger.debug(e);
|
|
81
81
|
}
|
|
82
82
|
});
|
|
83
|
-
return (jsxs("div", Object.assign({ className: 'network-not-supported', "data-testid": 'network-not-supported' }, { children: [onboardingImageUrl && (jsx("img", { className: 'network-not-supported__main-img', src: onboardingImageUrl, alt: 'onboarding' })), !_isSupportedNetwork && (jsx(ErrorContainer, Object.assign({ variant: 'info', withIcon: false, className: 'network-not-supported__error--not-supported' }, { children: "This network is not available, please update." }))), jsxs("div", Object.assign({ className: 'network-not-supported__content-container' }, { children: [jsxs("div", Object.assign({ className: 'network-not-supported__img-container' }, { children: [((_a = userProfile === null || userProfile === void 0 ? void 0 : userProfile.ens) === null || _a === void 0 ? void 0 : _a.avatar) && (jsx("div", Object.assign({ className: 'network-not-supported__network-container' }, { children: jsx("img", { src: (_b = userProfile === null || userProfile === void 0 ? void 0 : userProfile.ens) === null || _b === void 0 ? void 0 : _b.avatar, alt: 'user ens avatar', className: 'network-not-supported__img' }) }))), !((_c = userProfile === null || userProfile === void 0 ? void 0 : userProfile.ens) === null || _c === void 0 ? void 0 : _c.avatar) && onboardingOnlyJwt && (jsx(AuthProviderIcon, { jwt: onboardingOnlyJwt })), !((_d = userProfile === null || userProfile === void 0 ? void 0 : userProfile.ens) === null || _d === void 0 ? void 0 : _d.avatar) && !onboardingOnlyJwt && (jsx(WalletIcon, { style: { height: 64, width: 64 }, walletName: walletConnector.name }))] })), jsx(UserAddress, { walletConnector: walletConnector, userProfile: userProfile }), jsx("div", Object.assign({ className: 'network-not-supported__network-container' }, { children: evmNetworks.length > 1 && (jsx(NetworkPicker, { evmNetworks: evmNetworks, connector: walletConnector, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, showNetworkName: true, buttonClassName: 'network-not-supported__network-picker-button', mainClassName: 'network-not-supported__network-picker'
|
|
83
|
+
return (jsxs("div", Object.assign({ className: 'network-not-supported', "data-testid": 'network-not-supported' }, { children: [onboardingImageUrl && (jsx("img", { className: 'network-not-supported__main-img', src: onboardingImageUrl, alt: 'onboarding' })), !_isSupportedNetwork && (jsx(ErrorContainer, Object.assign({ variant: 'info', withIcon: false, className: 'network-not-supported__error--not-supported' }, { children: "This network is not available, please update." }))), jsxs("div", Object.assign({ className: 'network-not-supported__content-container' }, { children: [jsxs("div", Object.assign({ className: 'network-not-supported__img-container' }, { children: [((_a = userProfile === null || userProfile === void 0 ? void 0 : userProfile.ens) === null || _a === void 0 ? void 0 : _a.avatar) && (jsx("div", Object.assign({ className: 'network-not-supported__network-container' }, { children: jsx("img", { src: (_b = userProfile === null || userProfile === void 0 ? void 0 : userProfile.ens) === null || _b === void 0 ? void 0 : _b.avatar, alt: 'user ens avatar', className: 'network-not-supported__img' }) }))), !((_c = userProfile === null || userProfile === void 0 ? void 0 : userProfile.ens) === null || _c === void 0 ? void 0 : _c.avatar) && onboardingOnlyJwt && (jsx(AuthProviderIcon, { jwt: onboardingOnlyJwt })), !((_d = userProfile === null || userProfile === void 0 ? void 0 : userProfile.ens) === null || _d === void 0 ? void 0 : _d.avatar) && !onboardingOnlyJwt && (jsx(WalletIcon, { style: { height: 64, width: 64 }, walletName: walletConnector.name }))] })), jsx(UserAddress, { walletConnector: walletConnector, userProfile: userProfile }), jsx("div", Object.assign({ className: 'network-not-supported__network-container' }, { children: evmNetworks.length > 1 && (jsx(NetworkPicker, { evmNetworks: evmNetworks, connector: walletConnector, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, showNetworkName: true, buttonClassName: 'network-not-supported__network-picker-button', mainClassName: 'network-not-supported__network-picker' })) })), jsxs("div", Object.assign({ className: 'network-not-supported__welcome-container' }, { children: [jsx(Typography, Object.assign({ variant: 'title', color: 'primary', className: 'network-not-supported__welcome-title' }, { children: "Update Network" })), jsx(Typography, Object.assign({ variant: 'body_normal', weight: 'regular', color: 'secondary' }, { children: "Your wallet is not connected to a supported network. Please update before continuing." }))] })), evmNetworks.length === 1 && (jsx(SelectNetworkButton, { onClick: onSelectNetworkButtonClick, networkId: evmNetworks[0].networkId, networkName: evmNetworks[0].vanityName || evmNetworks[0].name, networkIconUrl: evmNetworks[0].iconUrls[0] }))] }))] })));
|
|
84
84
|
};
|
|
85
85
|
|
|
86
86
|
export { NetworkNotSupported };
|
|
@@ -41,6 +41,7 @@ require('../../context/MockContext/MockContext.cjs');
|
|
|
41
41
|
var useConnectAndSign = require('../../utils/hooks/authenticationHooks/useConnectAndSign/useConnectAndSign.cjs');
|
|
42
42
|
require('../../context/CaptchaContext/CaptchaContext.cjs');
|
|
43
43
|
require('../../utils/hooks/useUserUpdateRequest/useUserUpdateRequest.cjs');
|
|
44
|
+
var useWalletConnectorEvents = require('../../utils/hooks/useWalletConnectorEvents/useWalletConnectorEvents.cjs');
|
|
44
45
|
require('../../components/Popper/Popper/Popper.cjs');
|
|
45
46
|
require('../../components/Popper/PopperContext/PopperContext.cjs');
|
|
46
47
|
require('formik');
|
|
@@ -52,31 +53,26 @@ var useUpdateUserProfileByJWTCallback = require('../../utils/hooks/useUpdateUser
|
|
|
52
53
|
// as the wallet does not support programmatic network change.
|
|
53
54
|
const NetworkNotSupportedSwitchManual = () => {
|
|
54
55
|
var _a, _b;
|
|
55
|
-
const { user, onboardingOnlyJwt, selectedWalletConnector: walletConnector,
|
|
56
|
+
const { user, onboardingOnlyJwt, selectedWalletConnector: walletConnector, } = useInternalDynamicContext.useInternalDynamicContext();
|
|
56
57
|
const { updateUserProfileByJWT } = useUpdateUserProfileByJWTCallback.useUpdateUserProfileByJWTCallback();
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
});
|
|
76
|
-
return () => {
|
|
77
|
-
walletConnector.teardownEventListeners();
|
|
78
|
-
};
|
|
79
|
-
}, [onboardingOnlyJwt, walletConnector, updateUserProfileByJWT]);
|
|
58
|
+
const finishConnectAndSign = useConnectAndSign.useConnectAndSign();
|
|
59
|
+
const onChainChange = React.useCallback((network) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
60
|
+
if (isSupportedNetwork.isSupportedNetwork({ network, walletConnector })) {
|
|
61
|
+
finishConnectAndSign({
|
|
62
|
+
walletConnector: walletConnector,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}),
|
|
66
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
67
|
+
[
|
|
68
|
+
finishConnectAndSign,
|
|
69
|
+
onboardingOnlyJwt,
|
|
70
|
+
updateUserProfileByJWT,
|
|
71
|
+
walletConnector,
|
|
72
|
+
]);
|
|
73
|
+
// We can't listen on the network defined in the context,
|
|
74
|
+
// because events on the primaryWallet are defined after message is signed.
|
|
75
|
+
useWalletConnectorEvents.useWalletConnectorEvents(walletConnector, { onChainChange });
|
|
80
76
|
const iconSize = 80;
|
|
81
77
|
const icon = (jsxRuntime.jsx(walletBook.WalletIcon, { walletName: walletConnector === null || walletConnector === void 0 ? void 0 : walletConnector.name, style: {
|
|
82
78
|
height: pixelToRem.pixelToRem(iconSize * IconWithSpinner.iconRatio),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __awaiter } from '../../../../_virtual/_tslib.js';
|
|
2
2
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
|
-
import {
|
|
3
|
+
import { useCallback } from 'react';
|
|
4
4
|
import { WalletIcon } from '@dynamic-labs/wallet-book';
|
|
5
5
|
import { Typography } from '../../components/Typography/Typography.js';
|
|
6
6
|
import '@dynamic-labs/sdk-api';
|
|
@@ -37,6 +37,7 @@ import '../../context/MockContext/MockContext.js';
|
|
|
37
37
|
import { useConnectAndSign } from '../../utils/hooks/authenticationHooks/useConnectAndSign/useConnectAndSign.js';
|
|
38
38
|
import '../../context/CaptchaContext/CaptchaContext.js';
|
|
39
39
|
import '../../utils/hooks/useUserUpdateRequest/useUserUpdateRequest.js';
|
|
40
|
+
import { useWalletConnectorEvents } from '../../utils/hooks/useWalletConnectorEvents/useWalletConnectorEvents.js';
|
|
40
41
|
import '../../components/Popper/Popper/Popper.js';
|
|
41
42
|
import '../../components/Popper/PopperContext/PopperContext.js';
|
|
42
43
|
import 'formik';
|
|
@@ -48,31 +49,26 @@ import { useUpdateUserProfileByJWTCallback } from '../../utils/hooks/useUpdateUs
|
|
|
48
49
|
// as the wallet does not support programmatic network change.
|
|
49
50
|
const NetworkNotSupportedSwitchManual = () => {
|
|
50
51
|
var _a, _b;
|
|
51
|
-
const { user, onboardingOnlyJwt, selectedWalletConnector: walletConnector,
|
|
52
|
+
const { user, onboardingOnlyJwt, selectedWalletConnector: walletConnector, } = useInternalDynamicContext();
|
|
52
53
|
const { updateUserProfileByJWT } = useUpdateUserProfileByJWTCallback();
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
});
|
|
72
|
-
return () => {
|
|
73
|
-
walletConnector.teardownEventListeners();
|
|
74
|
-
};
|
|
75
|
-
}, [onboardingOnlyJwt, walletConnector, updateUserProfileByJWT]);
|
|
54
|
+
const finishConnectAndSign = useConnectAndSign();
|
|
55
|
+
const onChainChange = useCallback((network) => __awaiter(void 0, void 0, void 0, function* () {
|
|
56
|
+
if (isSupportedNetwork({ network, walletConnector })) {
|
|
57
|
+
finishConnectAndSign({
|
|
58
|
+
walletConnector: walletConnector,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}),
|
|
62
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
63
|
+
[
|
|
64
|
+
finishConnectAndSign,
|
|
65
|
+
onboardingOnlyJwt,
|
|
66
|
+
updateUserProfileByJWT,
|
|
67
|
+
walletConnector,
|
|
68
|
+
]);
|
|
69
|
+
// We can't listen on the network defined in the context,
|
|
70
|
+
// because events on the primaryWallet are defined after message is signed.
|
|
71
|
+
useWalletConnectorEvents(walletConnector, { onChainChange });
|
|
76
72
|
const iconSize = 80;
|
|
77
73
|
const icon = (jsx(WalletIcon, { walletName: walletConnector === null || walletConnector === void 0 ? void 0 : walletConnector.name, style: {
|
|
78
74
|
height: pixelToRem(iconSize * iconRatio),
|