@dynamic-labs/sdk-react-core 2.1.0-alpha.3 → 2.1.0-alpha.5

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 (54) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +12 -13
  5. package/src/index.cjs +0 -2
  6. package/src/index.d.ts +1 -1
  7. package/src/index.js +0 -1
  8. package/src/lib/locale/en/translation.cjs +2 -2
  9. package/src/lib/locale/en/translation.d.ts +1 -1
  10. package/src/lib/locale/en/translation.js +2 -2
  11. package/src/lib/utils/constants/errors.cjs +0 -2
  12. package/src/lib/utils/constants/errors.js +1 -2
  13. package/src/lib/utils/functions/findTurnkeyWallet/findTurnkeyWallet.cjs +12 -9
  14. package/src/lib/utils/functions/findTurnkeyWallet/findTurnkeyWallet.d.ts +6 -2
  15. package/src/lib/utils/functions/findTurnkeyWallet/findTurnkeyWallet.js +13 -10
  16. package/src/lib/utils/functions/findTurnkeyWallet/index.d.ts +1 -1
  17. package/src/lib/utils/functions/index.d.ts +1 -0
  18. package/src/lib/utils/functions/serializeWalletConnectors/index.d.ts +1 -0
  19. package/src/lib/utils/functions/serializeWalletConnectors/serializeWalletConnectors.cjs +32 -0
  20. package/src/lib/utils/functions/serializeWalletConnectors/serializeWalletConnectors.d.ts +2 -0
  21. package/src/lib/utils/functions/serializeWalletConnectors/serializeWalletConnectors.js +28 -0
  22. package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.cjs +7 -8
  23. package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.js +7 -8
  24. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.cjs +7 -8
  25. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.d.ts +10 -1
  26. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.js +7 -8
  27. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useMPCEmbeddedWallet.cjs +1 -1
  28. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useMPCEmbeddedWallet.js +1 -1
  29. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.cjs +137 -25
  30. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.d.ts +17 -7
  31. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.js +140 -28
  32. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useTurnkey/useTurnkey.cjs +31 -9
  33. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useTurnkey/useTurnkey.js +31 -9
  34. package/src/lib/utils/hooks/useSendDynamicProps/useSendDynamicProps.cjs +6 -13
  35. package/src/lib/utils/hooks/useSendDynamicProps/useSendDynamicProps.d.ts +1 -3
  36. package/src/lib/utils/hooks/useSendDynamicProps/useSendDynamicProps.js +6 -12
  37. package/src/lib/utils/hooks/useWalletConnectorOptions/useWalletConnectorOptions.cjs +25 -2
  38. package/src/lib/utils/hooks/useWalletConnectorOptions/useWalletConnectorOptions.js +25 -2
  39. package/src/lib/views/EmailVerification/EmailVerification.cjs +38 -11
  40. package/src/lib/views/EmailVerification/EmailVerification.js +38 -11
  41. package/src/lib/views/EmbeddedReveal/utils/turnkeyExport/turnkeyExport.cjs +2 -2
  42. package/src/lib/views/EmbeddedReveal/utils/turnkeyExport/turnkeyExport.js +2 -2
  43. package/src/lib/views/Passkey/PasskeyIntroView/PasskeyIntroView.cjs +6 -7
  44. package/src/lib/views/Passkey/PasskeyIntroView/PasskeyIntroView.js +6 -7
  45. package/src/lib/views/Passkey/utils/createEmbeddedWalletWithPasskey/createEmbeddedWalletWithPasskey.cjs +1 -1
  46. package/src/lib/views/Passkey/utils/createEmbeddedWalletWithPasskey/createEmbeddedWalletWithPasskey.js +1 -1
  47. package/src/lib/views/Passkey/utils/createPregeneratedWallet/createPregeneratedWallet.cjs +1 -1
  48. package/src/lib/views/Passkey/utils/createPregeneratedWallet/createPregeneratedWallet.js +1 -1
  49. package/src/lib/views/Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.cjs +16 -0
  50. package/src/lib/views/Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.d.ts +2 -0
  51. package/src/lib/views/Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.js +12 -0
  52. package/src/lib/views/Passkey/utils/findPrimaryEmbeddedChain/index.d.ts +1 -0
  53. package/src/lib/views/Passkey/utils/passkeyRecovery/passkeyRecovery.cjs +7 -7
  54. package/src/lib/views/Passkey/utils/passkeyRecovery/passkeyRecovery.js +7 -7
@@ -40,6 +40,8 @@ require('react-dom');
40
40
  var useCreateDynamicEmbeddedWalletMutation = require('../../../useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.cjs');
41
41
  require('../../../../../context/WalletContext/WalletContext.cjs');
42
42
  var smartWallet = require('../../../useWalletConnectors/utils/smartWallet/smartWallet.cjs');
43
+ var findPrimaryEmbeddedChain = require('../../../../../views/Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.cjs');
44
+ var findPasskeyEmailWalletConnector = require('../../../../../views/Passkey/utils/findPasskeyEmailWalletConnector/findPasskeyEmailWalletConnector.cjs');
43
45
  require('../../../../../context/ThemeContext/ThemeContext.cjs');
44
46
  require('@dynamic-labs/types');
45
47
  require('yup');
@@ -160,26 +162,46 @@ const useTurnkey = () => {
160
162
  return Promise.resolve(passkeyWallet);
161
163
  }), [setPrimaryWalletId, walletConnectorOptions]);
162
164
  const createTurnkeyWallet = React.useCallback((jwt, decodedJwt, chain) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
163
- var _e, _f;
165
+ var _e, _f, _g, _h;
164
166
  const isManualMode = ((_e = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _e === void 0 ? void 0 : _e.automaticEmbeddedWalletCreation) === false;
165
167
  const embeddedWalletVerifiedCredential = findEmbeddedWalletFromVerifiedCredentials.findEmbeddedWalletFromVerifiedCredentials(jwt, chain);
166
- const userWaletsCredentials = getUserWalletsFromVerifiedCredentials.getUserWalletsFromVerifiedCredentials(jwt);
168
+ const userWalletsCredentials = getUserWalletsFromVerifiedCredentials.getUserWalletsFromVerifiedCredentials(jwt);
167
169
  // If the user doesn't have a wallet, or if the customer is in Manual
168
170
  // Mode, we should attempt to create a new wallet. Note that if in manual
169
171
  // mode, the check for the existance of an embedded wallet was arbitrarily
170
172
  // added as a safeguard given the pre-existing condition we're overriding.
171
- if (!(userWaletsCredentials === null || userWaletsCredentials === void 0 ? void 0 : userWaletsCredentials.length) ||
173
+ if (!(userWalletsCredentials === null || userWalletsCredentials === void 0 ? void 0 : userWalletsCredentials.length) ||
172
174
  (!embeddedWalletVerifiedCredential && isManualMode)) {
173
175
  const hasEmailVC = getUserVerifiedCredentialType.getUserVerifiedCredentialType(decodedJwt, sdkApiCore.JwtVerifiedCredentialFormatEnum.Email);
174
- // create wallet without authenticator
175
- // if users log in and doesn't have an email vc they won't be able to use passkey recovery
176
- // and it means that they need to create it while creating a wallet
177
176
  if (!((_f = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _f === void 0 ? void 0 : _f.forceAuthenticatorAtSignup) &&
178
- Boolean(hasEmailVC)) {
177
+ hasEmailVC) {
179
178
  return startPregeneratedWalletCreationFlow(jwt, decodedJwt);
180
179
  }
181
- // show the passkey view to create an embedded wallet
182
- return startEmbeddedWalletCreationFlow();
180
+ else {
181
+ // show the passkey view to create an embedded wallet
182
+ return startEmbeddedWalletCreationFlow();
183
+ }
184
+ }
185
+ else {
186
+ // the pregenerated wallet must have been created at this point in the
187
+ // backend if this called as part of a new user sign up.
188
+ if (embeddedWalletVerifiedCredential &&
189
+ decodedJwt.newUser &&
190
+ ((_g = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _g === void 0 ? void 0 : _g.automaticEmbeddedWalletCreation)) {
191
+ const walletConnector = findPasskeyEmailWalletConnector.findPasskeyEmailWalletConnector(walletConnectorOptions, findPrimaryEmbeddedChain.findPrimaryEmbeddedChain(projectSettings));
192
+ if (!walletConnector) {
193
+ throw new Error('Could not find the Embedded wallet connector');
194
+ }
195
+ const wallet = {
196
+ address: (yield walletConnector.getAddress()) || '',
197
+ authenticated: Boolean((_h = embeddedWalletVerifiedCredential === null || embeddedWalletVerifiedCredential === void 0 ? void 0 : embeddedWalletVerifiedCredential.walletProperties) === null || _h === void 0 ? void 0 : _h.isAuthenticatorAttached),
198
+ chain: walletConnector.connectedChain || '',
199
+ connected: true,
200
+ connector: walletConnector,
201
+ id: embeddedWalletVerifiedCredential.id,
202
+ };
203
+ dynamicEvents.dynamicEvents.emit('embeddedWalletCreated', wallet, embeddedWalletVerifiedCredential, jwt);
204
+ }
183
205
  }
184
206
  setShowAuthFlow(false, { performMultiWalletChecks: false });
185
207
  // if user logged in with MM for example, just continue the flow
@@ -36,6 +36,8 @@ import 'react-dom';
36
36
  import { useCreateDynamicEmbeddedWalletMutation } from '../../../useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.js';
37
37
  import '../../../../../context/WalletContext/WalletContext.js';
38
38
  import { findSmartWallet, initializeSmartWallet } from '../../../useWalletConnectors/utils/smartWallet/smartWallet.js';
39
+ import { findPrimaryEmbeddedChain } from '../../../../../views/Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.js';
40
+ import { findPasskeyEmailWalletConnector } from '../../../../../views/Passkey/utils/findPasskeyEmailWalletConnector/findPasskeyEmailWalletConnector.js';
39
41
  import '../../../../../context/ThemeContext/ThemeContext.js';
40
42
  import '@dynamic-labs/types';
41
43
  import 'yup';
@@ -156,26 +158,46 @@ const useTurnkey = () => {
156
158
  return Promise.resolve(passkeyWallet);
157
159
  }), [setPrimaryWalletId, walletConnectorOptions]);
158
160
  const createTurnkeyWallet = useCallback((jwt, decodedJwt, chain) => __awaiter(void 0, void 0, void 0, function* () {
159
- var _e, _f;
161
+ var _e, _f, _g, _h;
160
162
  const isManualMode = ((_e = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _e === void 0 ? void 0 : _e.automaticEmbeddedWalletCreation) === false;
161
163
  const embeddedWalletVerifiedCredential = findEmbeddedWalletFromVerifiedCredentials(jwt, chain);
162
- const userWaletsCredentials = getUserWalletsFromVerifiedCredentials(jwt);
164
+ const userWalletsCredentials = getUserWalletsFromVerifiedCredentials(jwt);
163
165
  // If the user doesn't have a wallet, or if the customer is in Manual
164
166
  // Mode, we should attempt to create a new wallet. Note that if in manual
165
167
  // mode, the check for the existance of an embedded wallet was arbitrarily
166
168
  // added as a safeguard given the pre-existing condition we're overriding.
167
- if (!(userWaletsCredentials === null || userWaletsCredentials === void 0 ? void 0 : userWaletsCredentials.length) ||
169
+ if (!(userWalletsCredentials === null || userWalletsCredentials === void 0 ? void 0 : userWalletsCredentials.length) ||
168
170
  (!embeddedWalletVerifiedCredential && isManualMode)) {
169
171
  const hasEmailVC = getUserVerifiedCredentialType(decodedJwt, JwtVerifiedCredentialFormatEnum.Email);
170
- // create wallet without authenticator
171
- // if users log in and doesn't have an email vc they won't be able to use passkey recovery
172
- // and it means that they need to create it while creating a wallet
173
172
  if (!((_f = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _f === void 0 ? void 0 : _f.forceAuthenticatorAtSignup) &&
174
- Boolean(hasEmailVC)) {
173
+ hasEmailVC) {
175
174
  return startPregeneratedWalletCreationFlow(jwt, decodedJwt);
176
175
  }
177
- // show the passkey view to create an embedded wallet
178
- return startEmbeddedWalletCreationFlow();
176
+ else {
177
+ // show the passkey view to create an embedded wallet
178
+ return startEmbeddedWalletCreationFlow();
179
+ }
180
+ }
181
+ else {
182
+ // the pregenerated wallet must have been created at this point in the
183
+ // backend if this called as part of a new user sign up.
184
+ if (embeddedWalletVerifiedCredential &&
185
+ decodedJwt.newUser &&
186
+ ((_g = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _g === void 0 ? void 0 : _g.automaticEmbeddedWalletCreation)) {
187
+ const walletConnector = findPasskeyEmailWalletConnector(walletConnectorOptions, findPrimaryEmbeddedChain(projectSettings));
188
+ if (!walletConnector) {
189
+ throw new Error('Could not find the Embedded wallet connector');
190
+ }
191
+ const wallet = {
192
+ address: (yield walletConnector.getAddress()) || '',
193
+ authenticated: Boolean((_h = embeddedWalletVerifiedCredential === null || embeddedWalletVerifiedCredential === void 0 ? void 0 : embeddedWalletVerifiedCredential.walletProperties) === null || _h === void 0 ? void 0 : _h.isAuthenticatorAttached),
194
+ chain: walletConnector.connectedChain || '',
195
+ connected: true,
196
+ connector: walletConnector,
197
+ id: embeddedWalletVerifiedCredential.id,
198
+ };
199
+ dynamicEvents.emit('embeddedWalletCreated', wallet, embeddedWalletVerifiedCredential, jwt);
200
+ }
179
201
  }
180
202
  setShowAuthFlow(false, { performMultiWalletChecks: false });
181
203
  // if user logged in with MM for example, just continue the flow
@@ -21,6 +21,11 @@ require('../../../../../_virtual/_tslib.cjs');
21
21
  require('../../../config/ApiEndpoint.cjs');
22
22
  var settings = require('../../../data/api/settings/settings.cjs');
23
23
  require('../../../locale/locale.cjs');
24
+ require('@dynamic-labs/multi-wallet');
25
+ require('react-international-phone');
26
+ require('viem');
27
+ require('viem/chains');
28
+ var serializeWalletConnectors = require('../../functions/serializeWalletConnectors/serializeWalletConnectors.cjs');
24
29
 
25
30
  const useSendDynamicProps = ({ settings: settings$1, environmentId, }) => {
26
31
  useEffectOnce.useEffectOnce(() => {
@@ -32,7 +37,7 @@ const useSendDynamicProps = ({ settings: settings$1, environmentId, }) => {
32
37
  settings: Object.assign(Object.assign({}, settings$1), { customPrivacyPolicy: Boolean(settings$1.customPrivacyPolicy), customTermsOfServices: Boolean(settings$1.customTermsOfServices), policiesConsentInnerComponent: Boolean(settings$1.policiesConsentInnerComponent) }),
33
38
  };
34
39
  const serializedEventsCallbacks = serializeEventsCallbacks(settings$1.events);
35
- const serializedWalletConnectors = serializeWalletConnectors(settings$1.walletConnectors);
40
+ const serializedWalletConnectors = serializeWalletConnectors.serializeWalletConnectors(settings$1.walletConnectors);
36
41
  const serializedDynamicContextProps = Object.assign(Object.assign({}, updatedDynamicProps), { settings: Object.assign(Object.assign({}, updatedDynamicProps.settings), { events: serializedEventsCallbacks, walletConnectors: serializedWalletConnectors }) });
37
42
  settings.sendDynamicProps(environmentId, {
38
43
  dynamicContextProps: serializedDynamicContextProps,
@@ -58,17 +63,6 @@ const serializeEventsCallbacks = (events) => {
58
63
  return undefined;
59
64
  }
60
65
  };
61
- const serializeWalletConnectors = (walletConnectors) => {
62
- try {
63
- if (!walletConnectors)
64
- return undefined;
65
- return walletConnectors.map((connector) => connector.name);
66
- }
67
- catch (error) {
68
- logger.logger.error('error serializing walletConnectors', error);
69
- return undefined;
70
- }
71
- };
72
66
  const getFrameworkSettings = () => {
73
67
  var _a;
74
68
  return ({
@@ -84,5 +78,4 @@ const getFrameworkSettings = () => {
84
78
  };
85
79
 
86
80
  exports.serializeEventsCallbacks = serializeEventsCallbacks;
87
- exports.serializeWalletConnectors = serializeWalletConnectors;
88
81
  exports.useSendDynamicProps = useSendDynamicProps;
@@ -1,5 +1,4 @@
1
- import { WalletConnectorsMethod } from '@dynamic-labs/wallet-connector-core';
2
- import { DynamicContextProps } from '../../../..';
1
+ import { DynamicContextProps } from '../../../context/DynamicContext';
3
2
  import { DynamicEventsCallbacks } from '../../../shared';
4
3
  type UseSendDynamicHookProps = {
5
4
  settings: DynamicContextProps['settings'];
@@ -7,5 +6,4 @@ type UseSendDynamicHookProps = {
7
6
  };
8
7
  export declare const useSendDynamicProps: ({ settings, environmentId, }: UseSendDynamicHookProps) => void;
9
8
  export declare const serializeEventsCallbacks: (events: DynamicEventsCallbacks | undefined) => string[] | undefined;
10
- export declare const serializeWalletConnectors: (walletConnectors?: WalletConnectorsMethod[]) => string[] | undefined;
11
9
  export {};
@@ -17,6 +17,11 @@ import '../../../../../_virtual/_tslib.js';
17
17
  import '../../../config/ApiEndpoint.js';
18
18
  import { sendDynamicProps } from '../../../data/api/settings/settings.js';
19
19
  import '../../../locale/locale.js';
20
+ import '@dynamic-labs/multi-wallet';
21
+ import 'react-international-phone';
22
+ import 'viem';
23
+ import 'viem/chains';
24
+ import { serializeWalletConnectors } from '../../functions/serializeWalletConnectors/serializeWalletConnectors.js';
20
25
 
21
26
  const useSendDynamicProps = ({ settings, environmentId, }) => {
22
27
  useEffectOnce(() => {
@@ -54,17 +59,6 @@ const serializeEventsCallbacks = (events) => {
54
59
  return undefined;
55
60
  }
56
61
  };
57
- const serializeWalletConnectors = (walletConnectors) => {
58
- try {
59
- if (!walletConnectors)
60
- return undefined;
61
- return walletConnectors.map((connector) => connector.name);
62
- }
63
- catch (error) {
64
- logger.error('error serializing walletConnectors', error);
65
- return undefined;
66
- }
67
- };
68
62
  const getFrameworkSettings = () => {
69
63
  var _a;
70
64
  return ({
@@ -79,4 +73,4 @@ const getFrameworkSettings = () => {
79
73
  });
80
74
  };
81
75
 
82
- export { serializeEventsCallbacks, serializeWalletConnectors, useSendDynamicProps };
76
+ export { serializeEventsCallbacks, useSendDynamicProps };
@@ -5,9 +5,31 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var React = require('react');
7
7
  var data = require('../../../views/WalletList/data.cjs');
8
+ require('@dynamic-labs/wallet-connector-core');
9
+ require('@dynamic-labs/sdk-api-core');
10
+ require('../../../shared/logger.cjs');
11
+ require('@dynamic-labs/iconic');
12
+ require('react/jsx-runtime');
13
+ require('../../../context/ViewContext/ViewContext.cjs');
14
+ require('@dynamic-labs/wallet-book');
15
+ require('../../constants/colors.cjs');
16
+ require('../../constants/values.cjs');
17
+ require('../../../shared/utils/classes/storage/localStorage.cjs');
18
+ require('@dynamic-labs/utils');
19
+ require('../../../shared/consts/index.cjs');
20
+ require('../../../../../_virtual/_tslib.cjs');
21
+ require('@dynamic-labs/multi-wallet');
22
+ require('react-international-phone');
23
+ require('viem');
24
+ require('viem/chains');
25
+ require('../../../config/ApiEndpoint.cjs');
26
+ require('../../../locale/locale.cjs');
27
+ var serializeWalletConnectors = require('../../functions/serializeWalletConnectors/serializeWalletConnectors.cjs');
8
28
  var verifyRequiredConnectorsAreSetup = require('./utils/verifyRequiredConnectorsAreSetup/verifyRequiredConnectorsAreSetup.cjs');
9
29
 
10
30
  const useWalletConnectorOptions = ({ projectSettings, appLogoUrl, appName, deepLinkPreference, flowNetwork, mobileExperience, networkConfigurations, walletBook, walletUiUtils, walletConnectorsProp, walletConnectPreferredChains, walletConnectorExtensions, }) => {
31
+ const walletConnectorsKey = React.useMemo(() => { var _a; return (_a = serializeWalletConnectors.serializeWalletConnectors(walletConnectorsProp)) === null || _a === void 0 ? void 0 : _a.join(','); }, [walletConnectorsProp]);
32
+ const walletBookLength = React.useMemo(() => Object.keys(walletBook !== null && walletBook !== void 0 ? walletBook : {}).length, [walletBook]);
11
33
  const walletConnectorOptions = React.useMemo(() => {
12
34
  if (!projectSettings ||
13
35
  !Object.keys(walletBook !== null && walletBook !== void 0 ? walletBook : {}).length ||
@@ -31,14 +53,15 @@ const useWalletConnectorOptions = ({ projectSettings, appLogoUrl, appName, deepL
31
53
  walletConnectorExtensions,
32
54
  });
33
55
  // Cannot include walletUiUtils in the dependency array because it will cause an infinite loop
56
+ // eslint-disable-next-line react-hooks/exhaustive-deps
34
57
  }, [
35
58
  appLogoUrl,
36
59
  appName,
37
60
  projectSettings,
38
- walletConnectorsProp,
61
+ walletConnectorsKey,
39
62
  walletConnectPreferredChains,
40
63
  flowNetwork,
41
- Object.keys(walletBook !== null && walletBook !== void 0 ? walletBook : {}).length,
64
+ walletBookLength,
42
65
  networkConfigurations,
43
66
  ]);
44
67
  React.useEffect(() => {
@@ -1,9 +1,31 @@
1
1
  'use client'
2
2
  import { useMemo, useEffect } from 'react';
3
3
  import { getWallets } from '../../../views/WalletList/data.js';
4
+ import '@dynamic-labs/wallet-connector-core';
5
+ import '@dynamic-labs/sdk-api-core';
6
+ import '../../../shared/logger.js';
7
+ import '@dynamic-labs/iconic';
8
+ import 'react/jsx-runtime';
9
+ import '../../../context/ViewContext/ViewContext.js';
10
+ import '@dynamic-labs/wallet-book';
11
+ import '../../constants/colors.js';
12
+ import '../../constants/values.js';
13
+ import '../../../shared/utils/classes/storage/localStorage.js';
14
+ import '@dynamic-labs/utils';
15
+ import '../../../shared/consts/index.js';
16
+ import '../../../../../_virtual/_tslib.js';
17
+ import '@dynamic-labs/multi-wallet';
18
+ import 'react-international-phone';
19
+ import 'viem';
20
+ import 'viem/chains';
21
+ import '../../../config/ApiEndpoint.js';
22
+ import '../../../locale/locale.js';
23
+ import { serializeWalletConnectors } from '../../functions/serializeWalletConnectors/serializeWalletConnectors.js';
4
24
  import { verifyRequiredConnectorsAreSetup } from './utils/verifyRequiredConnectorsAreSetup/verifyRequiredConnectorsAreSetup.js';
5
25
 
6
26
  const useWalletConnectorOptions = ({ projectSettings, appLogoUrl, appName, deepLinkPreference, flowNetwork, mobileExperience, networkConfigurations, walletBook, walletUiUtils, walletConnectorsProp, walletConnectPreferredChains, walletConnectorExtensions, }) => {
27
+ const walletConnectorsKey = useMemo(() => { var _a; return (_a = serializeWalletConnectors(walletConnectorsProp)) === null || _a === void 0 ? void 0 : _a.join(','); }, [walletConnectorsProp]);
28
+ const walletBookLength = useMemo(() => Object.keys(walletBook !== null && walletBook !== void 0 ? walletBook : {}).length, [walletBook]);
7
29
  const walletConnectorOptions = useMemo(() => {
8
30
  if (!projectSettings ||
9
31
  !Object.keys(walletBook !== null && walletBook !== void 0 ? walletBook : {}).length ||
@@ -27,14 +49,15 @@ const useWalletConnectorOptions = ({ projectSettings, appLogoUrl, appName, deepL
27
49
  walletConnectorExtensions,
28
50
  });
29
51
  // Cannot include walletUiUtils in the dependency array because it will cause an infinite loop
52
+ // eslint-disable-next-line react-hooks/exhaustive-deps
30
53
  }, [
31
54
  appLogoUrl,
32
55
  appName,
33
56
  projectSettings,
34
- walletConnectorsProp,
57
+ walletConnectorsKey,
35
58
  walletConnectPreferredChains,
36
59
  flowNetwork,
37
- Object.keys(walletBook !== null && walletBook !== void 0 ? walletBook : {}).length,
60
+ walletBookLength,
38
61
  networkConfigurations,
39
62
  ]);
40
63
  useEffect(() => {
@@ -27,6 +27,7 @@ require('../../shared/consts/index.cjs');
27
27
  var useInternalDynamicContext = require('../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.cjs');
28
28
  require('../../context/CaptchaContext/CaptchaContext.cjs');
29
29
  var ErrorContext = require('../../context/ErrorContext/ErrorContext.cjs');
30
+ var findEmbeddedWalletFromVerifiedCredentials = require('../../utils/functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.cjs');
30
31
  require('@dynamic-labs/multi-wallet');
31
32
  require('react-international-phone');
32
33
  var shortenEmail = require('../../shared/utils/functions/shortenEmail/shortenEmail.cjs');
@@ -100,7 +101,7 @@ require('../LoginView/sections/PhoneNumberSignInSection/PhoneNumberSignInSection
100
101
  const SECONDS_TO_RETRY = 15;
101
102
  const sleepToShowSuccessMessage = () => utils.sleep(1500);
102
103
  const EmailVerification = ({ isEmailRecoveryFlow = false, showRetryButton: _showRetryButton = true, showTransferMessage: _showTransferMessage = false, }) => {
103
- var _a, _b, _c, _d;
104
+ var _a, _b, _c, _d, _e, _f;
104
105
  const [showRetryButton, setShowRetryButton] = React.useState(_showRetryButton);
105
106
  const [showTransferMessage, setShowTransferMessage] = React.useState(_showTransferMessage);
106
107
  const { handleVerifiedUserWithJWT } = useHandleVerifiedUser.useHandleVerifiedUser();
@@ -135,7 +136,7 @@ const EmailVerification = ({ isEmailRecoveryFlow = false, showRetryButton: _show
135
136
  const { createUserProfileByJWT } = useCreateUserProfileByJWTCallback.useCreateUserProfileByJWTCallback();
136
137
  const isTurnkeyProviderEnabled = isTurnkeyEnabled.isTurnkeyEnabled(projectSettings);
137
138
  const handleComplete = React.useCallback((verificationToken) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
138
- var _e, _f, _g;
139
+ var _g, _h, _j, _k, _l, _m, _o;
139
140
  setError(undefined);
140
141
  setLoading(true);
141
142
  if (!verificationUUID || (!authToken && !onboardingOnlyJwt)) {
@@ -172,16 +173,41 @@ const EmailVerification = ({ isEmailRecoveryFlow = false, showRetryButton: _show
172
173
  if (isTurnkeyWallet &&
173
174
  hasTurnkeyVerifiedCredentialAuthenticator &&
174
175
  !hasRecoveryEmail &&
175
- ((_e = updateUserProfileResponse === null || updateUserProfileResponse === void 0 ? void 0 : updateUserProfileResponse.user) === null || _e === void 0 ? void 0 : _e.email)) {
176
+ ((_g = updateUserProfileResponse === null || updateUserProfileResponse === void 0 ? void 0 : updateUserProfileResponse.user) === null || _g === void 0 ? void 0 : _g.email)) {
176
177
  setUser(updateJWTAndCreateUserProfile.updateJWTAndCreateUserProfile(updateUserProfileResponse.jwt, updateUserProfileResponse.minifiedJwt));
177
178
  yield addRecoveryEmail(updateUserProfileResponse.user.email);
178
179
  setShowAuthFlow(false);
179
180
  return;
180
181
  }
181
- if (isTurnkeyProviderEnabled &&
182
- !((_g = (_f = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _f === void 0 ? void 0 : _f.embeddedWallets) === null || _g === void 0 ? void 0 : _g.automaticEmbeddedWalletCreation)) {
183
- setShowAuthFlow(false);
184
- return;
182
+ if (isTurnkeyProviderEnabled) {
183
+ const isManualMode = !((_j = (_h = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _h === void 0 ? void 0 : _h.embeddedWallets) === null || _j === void 0 ? void 0 : _j.automaticEmbeddedWalletCreation);
184
+ const isUsingPregeneratedWallets = Boolean(((_l = (_k = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _k === void 0 ? void 0 : _k.embeddedWallets) === null || _l === void 0 ? void 0 : _l.automaticEmbeddedWalletCreation) &&
185
+ !((_o = (_m = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _m === void 0 ? void 0 : _m.embeddedWallets) === null || _o === void 0 ? void 0 : _o.forceAuthenticatorAtSignup));
186
+ if (isUsingPregeneratedWallets) {
187
+ // Pregenerated wallet was created during an
188
+ // additional email validation step as part of onboarding
189
+ // cannot rely on newUser JWT field here due to session being counted twice
190
+ // when authentication happens followed by a separate email kyc step
191
+ const embeddedWalletVerifiedCredential = findEmbeddedWalletFromVerifiedCredentials.findEmbeddedWalletFromVerifiedCredentials(updateUserProfileResponse.jwt);
192
+ if (!embeddedWalletVerifiedCredential) {
193
+ throw new Error('Could not find an embedded wallet');
194
+ }
195
+ const wallet = {
196
+ address: embeddedWalletVerifiedCredential.address,
197
+ authenticated: false,
198
+ chain: embeddedWalletVerifiedCredential.chain,
199
+ connected: true,
200
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
201
+ // @ts-ignore
202
+ connector: undefined,
203
+ id: embeddedWalletVerifiedCredential.id,
204
+ };
205
+ dynamicEvents.dynamicEvents.emit('embeddedWalletCreated', wallet, embeddedWalletVerifiedCredential, updateUserProfileResponse.jwt);
206
+ }
207
+ if (isUsingPregeneratedWallets || isManualMode) {
208
+ setShowAuthFlow(false);
209
+ return;
210
+ }
185
211
  }
186
212
  // this function will check turnkey wallet enabled and create wallet if needed
187
213
  // if not enabled, it will throw an error.
@@ -217,7 +243,6 @@ const EmailVerification = ({ isEmailRecoveryFlow = false, showRetryButton: _show
217
243
  hasTurnkeyVerifiedCredentialAuthenticator,
218
244
  hasRecoveryEmail,
219
245
  isTurnkeyProviderEnabled,
220
- (_b = (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _a === void 0 ? void 0 : _a.embeddedWallets) === null || _b === void 0 ? void 0 : _b.automaticEmbeddedWalletCreation,
221
246
  createEmbeddedWallet,
222
247
  setOnboardingOnlyJwt,
223
248
  setView,
@@ -226,10 +251,12 @@ const EmailVerification = ({ isEmailRecoveryFlow = false, showRetryButton: _show
226
251
  setUser,
227
252
  addRecoveryEmail,
228
253
  setShowAuthFlow,
254
+ (_b = (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _a === void 0 ? void 0 : _a.embeddedWallets) === null || _b === void 0 ? void 0 : _b.automaticEmbeddedWalletCreation,
255
+ (_d = (_c = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _c === void 0 ? void 0 : _c.embeddedWallets) === null || _d === void 0 ? void 0 : _d.forceAuthenticatorAtSignup,
229
256
  setErrorMessage,
230
257
  ]);
231
258
  const handleEmailLogin = React.useCallback((verificationToken) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
232
- var _h, _j;
259
+ var _p, _q;
233
260
  setError(undefined);
234
261
  setLoading(true);
235
262
  if (!verificationUUID) {
@@ -264,7 +291,7 @@ const EmailVerification = ({ isEmailRecoveryFlow = false, showRetryButton: _show
264
291
  yield sleepToShowSuccessMessage();
265
292
  yield createUserProfileByJWT(jwt, minifiedJwt);
266
293
  if (isTurnkeyProviderEnabled &&
267
- !((_j = (_h = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _h === void 0 ? void 0 : _h.embeddedWallets) === null || _j === void 0 ? void 0 : _j.automaticEmbeddedWalletCreation)) {
294
+ !((_q = (_p = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _p === void 0 ? void 0 : _p.embeddedWallets) === null || _q === void 0 ? void 0 : _q.automaticEmbeddedWalletCreation)) {
268
295
  setShowAuthFlow(false);
269
296
  return;
270
297
  }
@@ -297,7 +324,7 @@ const EmailVerification = ({ isEmailRecoveryFlow = false, showRetryButton: _show
297
324
  setCallback,
298
325
  createUserProfileByJWT,
299
326
  isTurnkeyProviderEnabled,
300
- (_d = (_c = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _c === void 0 ? void 0 : _c.embeddedWallets) === null || _d === void 0 ? void 0 : _d.automaticEmbeddedWalletCreation,
327
+ (_f = (_e = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _e === void 0 ? void 0 : _e.embeddedWallets) === null || _f === void 0 ? void 0 : _f.automaticEmbeddedWalletCreation,
301
328
  createEmbeddedWallet,
302
329
  setOnboardingOnlyJwt,
303
330
  setView,
@@ -23,6 +23,7 @@ import '../../shared/consts/index.js';
23
23
  import { useInternalDynamicContext } from '../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.js';
24
24
  import '../../context/CaptchaContext/CaptchaContext.js';
25
25
  import { useErrorContext } from '../../context/ErrorContext/ErrorContext.js';
26
+ import { findEmbeddedWalletFromVerifiedCredentials } from '../../utils/functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.js';
26
27
  import '@dynamic-labs/multi-wallet';
27
28
  import 'react-international-phone';
28
29
  import { shortenEmail } from '../../shared/utils/functions/shortenEmail/shortenEmail.js';
@@ -96,7 +97,7 @@ import '../LoginView/sections/PhoneNumberSignInSection/PhoneNumberSignInSection.
96
97
  const SECONDS_TO_RETRY = 15;
97
98
  const sleepToShowSuccessMessage = () => sleep(1500);
98
99
  const EmailVerification = ({ isEmailRecoveryFlow = false, showRetryButton: _showRetryButton = true, showTransferMessage: _showTransferMessage = false, }) => {
99
- var _a, _b, _c, _d;
100
+ var _a, _b, _c, _d, _e, _f;
100
101
  const [showRetryButton, setShowRetryButton] = useState(_showRetryButton);
101
102
  const [showTransferMessage, setShowTransferMessage] = useState(_showTransferMessage);
102
103
  const { handleVerifiedUserWithJWT } = useHandleVerifiedUser();
@@ -131,7 +132,7 @@ const EmailVerification = ({ isEmailRecoveryFlow = false, showRetryButton: _show
131
132
  const { createUserProfileByJWT } = useCreateUserProfileByJWTCallback();
132
133
  const isTurnkeyProviderEnabled = isTurnkeyEnabled(projectSettings);
133
134
  const handleComplete = useCallback((verificationToken) => __awaiter(void 0, void 0, void 0, function* () {
134
- var _e, _f, _g;
135
+ var _g, _h, _j, _k, _l, _m, _o;
135
136
  setError(undefined);
136
137
  setLoading(true);
137
138
  if (!verificationUUID || (!authToken && !onboardingOnlyJwt)) {
@@ -168,16 +169,41 @@ const EmailVerification = ({ isEmailRecoveryFlow = false, showRetryButton: _show
168
169
  if (isTurnkeyWallet &&
169
170
  hasTurnkeyVerifiedCredentialAuthenticator &&
170
171
  !hasRecoveryEmail &&
171
- ((_e = updateUserProfileResponse === null || updateUserProfileResponse === void 0 ? void 0 : updateUserProfileResponse.user) === null || _e === void 0 ? void 0 : _e.email)) {
172
+ ((_g = updateUserProfileResponse === null || updateUserProfileResponse === void 0 ? void 0 : updateUserProfileResponse.user) === null || _g === void 0 ? void 0 : _g.email)) {
172
173
  setUser(updateJWTAndCreateUserProfile(updateUserProfileResponse.jwt, updateUserProfileResponse.minifiedJwt));
173
174
  yield addRecoveryEmail(updateUserProfileResponse.user.email);
174
175
  setShowAuthFlow(false);
175
176
  return;
176
177
  }
177
- if (isTurnkeyProviderEnabled &&
178
- !((_g = (_f = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _f === void 0 ? void 0 : _f.embeddedWallets) === null || _g === void 0 ? void 0 : _g.automaticEmbeddedWalletCreation)) {
179
- setShowAuthFlow(false);
180
- return;
178
+ if (isTurnkeyProviderEnabled) {
179
+ const isManualMode = !((_j = (_h = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _h === void 0 ? void 0 : _h.embeddedWallets) === null || _j === void 0 ? void 0 : _j.automaticEmbeddedWalletCreation);
180
+ const isUsingPregeneratedWallets = Boolean(((_l = (_k = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _k === void 0 ? void 0 : _k.embeddedWallets) === null || _l === void 0 ? void 0 : _l.automaticEmbeddedWalletCreation) &&
181
+ !((_o = (_m = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _m === void 0 ? void 0 : _m.embeddedWallets) === null || _o === void 0 ? void 0 : _o.forceAuthenticatorAtSignup));
182
+ if (isUsingPregeneratedWallets) {
183
+ // Pregenerated wallet was created during an
184
+ // additional email validation step as part of onboarding
185
+ // cannot rely on newUser JWT field here due to session being counted twice
186
+ // when authentication happens followed by a separate email kyc step
187
+ const embeddedWalletVerifiedCredential = findEmbeddedWalletFromVerifiedCredentials(updateUserProfileResponse.jwt);
188
+ if (!embeddedWalletVerifiedCredential) {
189
+ throw new Error('Could not find an embedded wallet');
190
+ }
191
+ const wallet = {
192
+ address: embeddedWalletVerifiedCredential.address,
193
+ authenticated: false,
194
+ chain: embeddedWalletVerifiedCredential.chain,
195
+ connected: true,
196
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
197
+ // @ts-ignore
198
+ connector: undefined,
199
+ id: embeddedWalletVerifiedCredential.id,
200
+ };
201
+ dynamicEvents.emit('embeddedWalletCreated', wallet, embeddedWalletVerifiedCredential, updateUserProfileResponse.jwt);
202
+ }
203
+ if (isUsingPregeneratedWallets || isManualMode) {
204
+ setShowAuthFlow(false);
205
+ return;
206
+ }
181
207
  }
182
208
  // this function will check turnkey wallet enabled and create wallet if needed
183
209
  // if not enabled, it will throw an error.
@@ -213,7 +239,6 @@ const EmailVerification = ({ isEmailRecoveryFlow = false, showRetryButton: _show
213
239
  hasTurnkeyVerifiedCredentialAuthenticator,
214
240
  hasRecoveryEmail,
215
241
  isTurnkeyProviderEnabled,
216
- (_b = (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _a === void 0 ? void 0 : _a.embeddedWallets) === null || _b === void 0 ? void 0 : _b.automaticEmbeddedWalletCreation,
217
242
  createEmbeddedWallet,
218
243
  setOnboardingOnlyJwt,
219
244
  setView,
@@ -222,10 +247,12 @@ const EmailVerification = ({ isEmailRecoveryFlow = false, showRetryButton: _show
222
247
  setUser,
223
248
  addRecoveryEmail,
224
249
  setShowAuthFlow,
250
+ (_b = (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _a === void 0 ? void 0 : _a.embeddedWallets) === null || _b === void 0 ? void 0 : _b.automaticEmbeddedWalletCreation,
251
+ (_d = (_c = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _c === void 0 ? void 0 : _c.embeddedWallets) === null || _d === void 0 ? void 0 : _d.forceAuthenticatorAtSignup,
225
252
  setErrorMessage,
226
253
  ]);
227
254
  const handleEmailLogin = useCallback((verificationToken) => __awaiter(void 0, void 0, void 0, function* () {
228
- var _h, _j;
255
+ var _p, _q;
229
256
  setError(undefined);
230
257
  setLoading(true);
231
258
  if (!verificationUUID) {
@@ -260,7 +287,7 @@ const EmailVerification = ({ isEmailRecoveryFlow = false, showRetryButton: _show
260
287
  yield sleepToShowSuccessMessage();
261
288
  yield createUserProfileByJWT(jwt, minifiedJwt);
262
289
  if (isTurnkeyProviderEnabled &&
263
- !((_j = (_h = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _h === void 0 ? void 0 : _h.embeddedWallets) === null || _j === void 0 ? void 0 : _j.automaticEmbeddedWalletCreation)) {
290
+ !((_q = (_p = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _p === void 0 ? void 0 : _p.embeddedWallets) === null || _q === void 0 ? void 0 : _q.automaticEmbeddedWalletCreation)) {
264
291
  setShowAuthFlow(false);
265
292
  return;
266
293
  }
@@ -293,7 +320,7 @@ const EmailVerification = ({ isEmailRecoveryFlow = false, showRetryButton: _show
293
320
  setCallback,
294
321
  createUserProfileByJWT,
295
322
  isTurnkeyProviderEnabled,
296
- (_d = (_c = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _c === void 0 ? void 0 : _c.embeddedWallets) === null || _d === void 0 ? void 0 : _d.automaticEmbeddedWalletCreation,
323
+ (_f = (_e = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _e === void 0 ? void 0 : _e.embeddedWallets) === null || _f === void 0 ? void 0 : _f.automaticEmbeddedWalletCreation,
297
324
  createEmbeddedWallet,
298
325
  setOnboardingOnlyJwt,
299
326
  setView,
@@ -27,7 +27,7 @@ const initExport = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ i
27
27
  if (!(wallet === null || wallet === void 0 ? void 0 : wallet.connector) ||
28
28
  !(wallet === null || wallet === void 0 ? void 0 : wallet.id) ||
29
29
  !walletConnectorCore.isPasskeyWalletConnector(wallet === null || wallet === void 0 ? void 0 : wallet.connector)) {
30
- throw new utils.DynamicError('PasskeyWalletConnector not found');
30
+ throw new utils.DynamicError('Connector is missing. Please make sure you added EthereumWalletConnectors and/or SolanaWalletConnectors to DynamicProvider settings');
31
31
  }
32
32
  const turnkeyExportHandler = (_b = wallet.connector) === null || _b === void 0 ? void 0 : _b.getExportHandler();
33
33
  const publicKey = yield turnkeyExportHandler.initExport(iframeContainer, iframeElementId);
@@ -48,7 +48,7 @@ const handleExportInitCheck = ({ authToken, userEmail, wallet, }) => {
48
48
  if (!(wallet === null || wallet === void 0 ? void 0 : wallet.connector) ||
49
49
  !(wallet === null || wallet === void 0 ? void 0 : wallet.id) ||
50
50
  !walletConnectorCore.isPasskeyWalletConnector(wallet === null || wallet === void 0 ? void 0 : wallet.connector)) {
51
- throw new utils.DynamicError('PasskeyWalletConnector not found');
51
+ throw new utils.DynamicError('Connector is missing. Please make sure you added EthereumWalletConnectors and/or SolanaWalletConnectors to DynamicProvider settings');
52
52
  }
53
53
  const connector = wallet.connector;
54
54
  connector.setEmail(userEmail);
@@ -23,7 +23,7 @@ const initExport = (_a) => __awaiter(void 0, [_a], void 0, function* ({ iframeCo
23
23
  if (!(wallet === null || wallet === void 0 ? void 0 : wallet.connector) ||
24
24
  !(wallet === null || wallet === void 0 ? void 0 : wallet.id) ||
25
25
  !isPasskeyWalletConnector(wallet === null || wallet === void 0 ? void 0 : wallet.connector)) {
26
- throw new DynamicError('PasskeyWalletConnector not found');
26
+ throw new DynamicError('Connector is missing. Please make sure you added EthereumWalletConnectors and/or SolanaWalletConnectors to DynamicProvider settings');
27
27
  }
28
28
  const turnkeyExportHandler = (_b = wallet.connector) === null || _b === void 0 ? void 0 : _b.getExportHandler();
29
29
  const publicKey = yield turnkeyExportHandler.initExport(iframeContainer, iframeElementId);
@@ -44,7 +44,7 @@ const handleExportInitCheck = ({ authToken, userEmail, wallet, }) => {
44
44
  if (!(wallet === null || wallet === void 0 ? void 0 : wallet.connector) ||
45
45
  !(wallet === null || wallet === void 0 ? void 0 : wallet.id) ||
46
46
  !isPasskeyWalletConnector(wallet === null || wallet === void 0 ? void 0 : wallet.connector)) {
47
- throw new DynamicError('PasskeyWalletConnector not found');
47
+ throw new DynamicError('Connector is missing. Please make sure you added EthereumWalletConnectors and/or SolanaWalletConnectors to DynamicProvider settings');
48
48
  }
49
49
  const connector = wallet.connector;
50
50
  connector.setEmail(userEmail);