@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.
Files changed (35) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/package.cjs +2 -2
  3. package/package.js +2 -2
  4. package/package.json +9 -9
  5. package/src/lib/context/DynamicContext/DynamicContext.cjs +3 -1
  6. package/src/lib/context/DynamicContext/DynamicContext.d.ts +4 -2
  7. package/src/lib/context/DynamicContext/DynamicContext.js +3 -1
  8. package/src/lib/utils/functions/isEmailProviderEnabled/isEmailProviderEnabled.cjs +1 -0
  9. package/src/lib/utils/functions/isEmailProviderEnabled/isEmailProviderEnabled.js +1 -0
  10. package/src/lib/utils/hooks/authenticationHooks/helpers/showPendingConnectView.cjs +1 -1
  11. package/src/lib/utils/hooks/authenticationHooks/helpers/showPendingConnectView.js +1 -1
  12. package/src/lib/utils/hooks/authenticationHooks/useConnectAndSign/useConnectAndSign.cjs +4 -3
  13. package/src/lib/utils/hooks/authenticationHooks/useConnectAndSign/useConnectAndSign.js +5 -4
  14. package/src/lib/utils/hooks/index.d.ts +1 -0
  15. package/src/lib/utils/hooks/useConnectWithEmail/index.d.ts +1 -0
  16. package/src/lib/utils/hooks/useConnectWithEmail/useConnectWithEmail.cjs +1 -4
  17. package/src/lib/utils/hooks/useConnectWithEmail/useConnectWithEmail.d.ts +1 -4
  18. package/src/lib/utils/hooks/useConnectWithEmail/useConnectWithEmail.js +1 -4
  19. package/src/lib/utils/hooks/useEmailProvider/index.d.ts +1 -0
  20. package/src/lib/utils/hooks/useEmailProvider/useEmailProvider.cjs +54 -0
  21. package/src/lib/utils/hooks/useEmailProvider/useEmailProvider.d.ts +10 -0
  22. package/src/lib/utils/hooks/useEmailProvider/useEmailProvider.js +50 -0
  23. package/src/lib/utils/hooks/useValidateSession/useValidateSession.cjs +3 -0
  24. package/src/lib/utils/hooks/useValidateSession/useValidateSession.js +3 -0
  25. package/src/lib/utils/hooks/useWalletConnectorEvents/useWalletConnectorEvents.cjs +17 -0
  26. package/src/lib/utils/hooks/useWalletConnectorEvents/useWalletConnectorEvents.d.ts +2 -0
  27. package/src/lib/utils/hooks/useWalletConnectorEvents/useWalletConnectorEvents.js +13 -0
  28. package/src/lib/views/LoginWithEmailView/components/LoginWithEmailForm/LoginWithEmailForm.cjs +24 -51
  29. package/src/lib/views/LoginWithEmailView/components/LoginWithEmailForm/LoginWithEmailForm.js +24 -51
  30. package/src/lib/views/LoginWithEmailView/components/SocialSignIn/SocialSignIn.cjs +7 -5
  31. package/src/lib/views/LoginWithEmailView/components/SocialSignIn/SocialSignIn.js +7 -5
  32. package/src/lib/views/NetworkNotSupported/NetworkNotSupported.cjs +14 -14
  33. package/src/lib/views/NetworkNotSupported/NetworkNotSupported.js +14 -14
  34. package/src/lib/views/NetworkNotSupportedSwitchManual/NetworkNotSupportedSwitchManual.cjs +20 -24
  35. 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.12";
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.222",
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.12";
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.222",
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.12",
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.222",
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.12",
20
- "@dynamic-labs/multi-wallet": "0.18.0-RC.12",
21
- "@dynamic-labs/rpc-providers": "0.18.0-RC.12",
22
- "@dynamic-labs/types": "0.18.0-RC.12",
23
- "@dynamic-labs/utils": "0.18.0-RC.12",
24
- "@dynamic-labs/wallet-book": "0.18.0-RC.12",
25
- "@dynamic-labs/wallet-connector-core": "0.18.0-RC.12"
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,2 @@
1
+ import { WalletConnector, WalletEventListeners } from '@dynamic-labs/wallet-connector-core';
2
+ export declare const useWalletConnectorEvents: (walletConnector?: WalletConnector | null, listeners?: Partial<WalletEventListeners>) => void;
@@ -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 };
@@ -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
- var ViewContext = require('../../../../context/ViewContext/ViewContext.cjs');
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
- var ErrorContext = require('../../../../context/ErrorContext/ErrorContext.cjs');
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 Button = require('../../../../components/Button/Button.cjs');
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 { handleInstalledExtensionClick } = useWalletItemActions.useWalletItemActions();
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(() => isMagicLoading || loading, [isMagicLoading, loading]);
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 handleMagicLinkSubmit = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
75
- yield connectWithEmail();
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(emailValue)) {
70
+ if (!EMAIL_REGEX.test(emailInput)) {
98
71
  setEmailError(true);
99
72
  return;
100
73
  }
101
74
  try {
102
75
  setLoading(true);
103
- if (magicLinkEnabled &&
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: emailValue,
81
+ email: emailInput,
109
82
  environmentId,
110
83
  });
111
84
  if (emailProvider === sdkApi.ProviderEnum.EmailOnly) {
112
- yield handleEmailLoginSubmit(emailValue);
85
+ yield handleEmailOnlyLoginSubmit(emailInput);
113
86
  return;
114
87
  }
115
88
  }
116
- yield submitHandler();
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: emailValue, 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" }))] })));
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;
@@ -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 { useViewContext } from '../../../../context/ViewContext/ViewContext.js';
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 { useErrorContext } from '../../../../context/ErrorContext/ErrorContext.js';
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 { Button } from '../../../../components/Button/Button.js';
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 { handleInstalledExtensionClick } = useWalletItemActions();
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(() => isMagicLoading || loading, [isMagicLoading, loading]);
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 handleMagicLinkSubmit = () => __awaiter(void 0, void 0, void 0, function* () {
71
- yield connectWithEmail();
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(emailValue)) {
66
+ if (!EMAIL_REGEX.test(emailInput)) {
94
67
  setEmailError(true);
95
68
  return;
96
69
  }
97
70
  try {
98
71
  setLoading(true);
99
- if (magicLinkEnabled &&
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: emailValue,
77
+ email: emailInput,
105
78
  environmentId,
106
79
  });
107
80
  if (emailProvider === ProviderEnum.EmailOnly) {
108
- yield handleEmailLoginSubmit(emailValue);
81
+ yield handleEmailOnlyLoginSubmit(emailInput);
109
82
  return;
110
83
  }
111
84
  }
112
- yield submitHandler();
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: emailValue, 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" }))] })));
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/DynamicContext.cjs');
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 numberOfEnabledSocialProviders = enabledSocialProviders.length;
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
- ? enabledSocialProviders.slice(0, 4)
67
- : enabledSocialProviders.slice(0, 5);
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: enabledSocialProviders.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))) }))] })) }))] }));
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/DynamicContext.js';
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 numberOfEnabledSocialProviders = enabledSocialProviders.length;
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
- ? enabledSocialProviders.slice(0, 4)
63
- : enabledSocialProviders.slice(0, 5);
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: enabledSocialProviders.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))) }))] })) }))] }));
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, setShowAuthFlow, setCallback, setNetwork, } = useInternalDynamicContext.useInternalDynamicContext();
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
- handleNetworkChange();
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', customCallbackOnSuccess: handleNetworkChange })) })), 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] }))] }))] })));
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, setShowAuthFlow, setCallback, setNetwork, } = useInternalDynamicContext();
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
- handleNetworkChange();
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', customCallbackOnSuccess: handleNetworkChange })) })), 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] }))] }))] })));
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, setShowAuthFlow, } = useInternalDynamicContext.useInternalDynamicContext();
56
+ const { user, onboardingOnlyJwt, selectedWalletConnector: walletConnector, } = useInternalDynamicContext.useInternalDynamicContext();
56
57
  const { updateUserProfileByJWT } = useUpdateUserProfileByJWTCallback.useUpdateUserProfileByJWTCallback();
57
- const finishSign = useConnectAndSign.useConnectAndSign();
58
- // Listen for network changes
59
- React.useEffect(() => {
60
- if (!walletConnector)
61
- return;
62
- const onChainChange = (network) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
63
- if (isSupportedNetwork.isSupportedNetwork({ network, walletConnector })) {
64
- if (onboardingOnlyJwt) {
65
- updateUserProfileByJWT(onboardingOnlyJwt);
66
- setShowAuthFlow(false);
67
- }
68
- else {
69
- finishSign({ walletConnector });
70
- }
71
- }
72
- });
73
- walletConnector.setupEventListeners({
74
- onChainChange,
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 { useEffect } from 'react';
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, setShowAuthFlow, } = useInternalDynamicContext();
52
+ const { user, onboardingOnlyJwt, selectedWalletConnector: walletConnector, } = useInternalDynamicContext();
52
53
  const { updateUserProfileByJWT } = useUpdateUserProfileByJWTCallback();
53
- const finishSign = useConnectAndSign();
54
- // Listen for network changes
55
- useEffect(() => {
56
- if (!walletConnector)
57
- return;
58
- const onChainChange = (network) => __awaiter(void 0, void 0, void 0, function* () {
59
- if (isSupportedNetwork({ network, walletConnector })) {
60
- if (onboardingOnlyJwt) {
61
- updateUserProfileByJWT(onboardingOnlyJwt);
62
- setShowAuthFlow(false);
63
- }
64
- else {
65
- finishSign({ walletConnector });
66
- }
67
- }
68
- });
69
- walletConnector.setupEventListeners({
70
- onChainChange,
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),