@dynamic-labs/sdk-react-core 2.1.0-alpha.16 → 2.1.0-alpha.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,4 +1,13 @@
1
1
 
2
+ ## [2.1.0-alpha.18](https://github.com/dynamic-labs/DynamicAuth/compare/v2.1.0-alpha.17...v2.1.0-alpha.18) (2024-05-15)
3
+
4
+ ## [2.1.0-alpha.17](https://github.com/dynamic-labs/DynamicAuth/compare/v2.1.0-alpha.16...v2.1.0-alpha.17) (2024-05-15)
5
+
6
+
7
+ ### Features
8
+
9
+ * add coinbaseWalletPreference prop ([#5607](https://github.com/dynamic-labs/DynamicAuth/issues/5607)) ([1ac3b2c](https://github.com/dynamic-labs/DynamicAuth/commit/1ac3b2ce7abb136465f4aa88b045dfb70d99aad7))
10
+
2
11
  ## [2.1.0-alpha.16](https://github.com/dynamic-labs/DynamicAuth/compare/v2.1.0-alpha.15...v2.1.0-alpha.16) (2024-05-14)
3
12
 
4
13
 
package/package.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var version = "2.1.0-alpha.16";
6
+ var version = "2.1.0-alpha.18";
7
7
  var dependencies = {
8
8
  "@dynamic-labs/sdk-api-core": "0.0.433",
9
9
  "@hcaptcha/react-hcaptcha": "1.4.4",
package/package.js CHANGED
@@ -1,5 +1,5 @@
1
1
  'use client'
2
- var version = "2.1.0-alpha.16";
2
+ var version = "2.1.0-alpha.18";
3
3
  var dependencies = {
4
4
  "@dynamic-labs/sdk-api-core": "0.0.433",
5
5
  "@hcaptcha/react-hcaptcha": "1.4.4",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/sdk-react-core",
3
- "version": "2.1.0-alpha.16",
3
+ "version": "2.1.0-alpha.18",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/dynamic-labs/DynamicAuth.git",
@@ -18,17 +18,17 @@
18
18
  "yup": "0.32.11",
19
19
  "react-international-phone": "4.2.5",
20
20
  "zustand": "4.5.2",
21
- "@dynamic-labs/iconic": "2.1.0-alpha.16",
22
- "@dynamic-labs/logger": "2.1.0-alpha.16",
23
- "@dynamic-labs/multi-wallet": "2.1.0-alpha.16",
24
- "@dynamic-labs/rpc-provider-ethereum": "2.1.0-alpha.16",
25
- "@dynamic-labs/rpc-provider-solana": "2.1.0-alpha.16",
26
- "@dynamic-labs/rpc-providers": "2.1.0-alpha.16",
27
- "@dynamic-labs/types": "2.1.0-alpha.16",
28
- "@dynamic-labs/utils": "2.1.0-alpha.16",
29
- "@dynamic-labs/viem-utils": "2.1.0-alpha.16",
30
- "@dynamic-labs/wallet-book": "2.1.0-alpha.16",
31
- "@dynamic-labs/wallet-connector-core": "2.1.0-alpha.16",
21
+ "@dynamic-labs/iconic": "2.1.0-alpha.18",
22
+ "@dynamic-labs/logger": "2.1.0-alpha.18",
23
+ "@dynamic-labs/multi-wallet": "2.1.0-alpha.18",
24
+ "@dynamic-labs/rpc-provider-ethereum": "2.1.0-alpha.18",
25
+ "@dynamic-labs/rpc-provider-solana": "2.1.0-alpha.18",
26
+ "@dynamic-labs/rpc-providers": "2.1.0-alpha.18",
27
+ "@dynamic-labs/types": "2.1.0-alpha.18",
28
+ "@dynamic-labs/utils": "2.1.0-alpha.18",
29
+ "@dynamic-labs/viem-utils": "2.1.0-alpha.18",
30
+ "@dynamic-labs/wallet-book": "2.1.0-alpha.18",
31
+ "@dynamic-labs/wallet-connector-core": "2.1.0-alpha.18",
32
32
  "eventemitter3": "5.0.1"
33
33
  },
34
34
  "devDependencies": {
@@ -13,21 +13,18 @@ require('@dynamic-labs/wallet-connector-core');
13
13
  require('react/jsx-runtime');
14
14
  require('../../context/ViewContext/ViewContext.cjs');
15
15
  require('@dynamic-labs/wallet-book');
16
- var localStorage$1 = require('../../utils/constants/localStorage.cjs');
17
16
  require('../../utils/constants/colors.cjs');
18
17
  require('../../utils/constants/values.cjs');
19
- var localStorage = require('../../shared/utils/classes/storage/localStorage.cjs');
18
+ require('../../shared/utils/classes/storage/localStorage.cjs');
20
19
  require('@dynamic-labs/utils');
21
20
  require('../../shared/consts/index.cjs');
22
- require('../../events/dynamicEvents.cjs');
21
+ var useDynamicEvents = require('../../utils/hooks/events/useDynamicEvents/useDynamicEvents.cjs');
23
22
  require('../../context/CaptchaContext/CaptchaContext.cjs');
24
23
  require('../../context/ErrorContext/ErrorContext.cjs');
25
24
  require('@dynamic-labs/multi-wallet');
26
25
  require('react-international-phone');
27
- var isTurnkeyEnabled = require('../../utils/functions/isTurnkeyEnabled/isTurnkeyEnabled.cjs');
28
26
  require('viem');
29
27
  require('viem/chains');
30
- var isCoinbaseWaasEnabled = require('../../utils/functions/isCoinbaseWaasEnabled/isCoinbaseWaasEnabled.cjs');
31
28
  require('../../config/ApiEndpoint.cjs');
32
29
  require('../../locale/locale.cjs');
33
30
  require('../../context/AccessDeniedContext/AccessDeniedContext.cjs');
@@ -35,11 +32,12 @@ require('../../context/AccountExistsContext/AccountExistsContext.cjs');
35
32
  require('../../context/UserWalletsContext/UserWalletsContext.cjs');
36
33
  require('../../context/VerificationContext/VerificationContext.cjs');
37
34
  require('react-dom');
35
+ require('../../events/dynamicEvents.cjs');
38
36
  var useEmbeddedWallet = require('../../utils/hooks/useEmbeddedWallet/useEmbeddedWallet.cjs');
39
37
  var WalletContext = require('../../context/WalletContext/WalletContext.cjs');
40
38
  require('../../context/ThemeContext/ThemeContext.cjs');
41
39
  require('@dynamic-labs/types');
42
- require('../../context/LoadingContext/LoadingContext.cjs');
40
+ var LoadingContext = require('../../context/LoadingContext/LoadingContext.cjs');
43
41
  require('yup');
44
42
  require('../../context/MockContext/MockContext.cjs');
45
43
  require('react-i18next');
@@ -81,15 +79,17 @@ var useInternalDynamicContext = require('../../context/DynamicContext/useDynamic
81
79
  const SyncEmbeddedWalletAuthFlow = () => {
82
80
  const { projectSettings, isProjectSettingsLoading, user, primaryWalletId, walletConnectorOptions, } = useInternalDynamicContext.useInternalDynamicContext();
83
81
  const { isLoadingEmbeddedWallet } = WalletContext.useWalletContext();
84
- const lastUsedWallet = localStorage.LocalStorage.getFromLS(localStorage$1.LAST_USED_WALLET);
85
- const { createEmbeddedWallet } = useEmbeddedWallet.useEmbeddedWallet();
82
+ const { loading: globalLoading } = LoadingContext.useLoadingContext();
83
+ const { createEmbeddedWallet, shouldAutoCreateEmbeddedWallet } = useEmbeddedWallet.useEmbeddedWallet();
86
84
  const triggeredCreate = React.useRef(false);
85
+ useDynamicEvents.useInternalDynamicEvents('logout', () => {
86
+ triggeredCreate.current = false;
87
+ });
87
88
  // this is used to trigger createEmbeddedWallet
88
- // when user didn't create a passkey after login and refresh page to skip it
89
+ // when user didn't create a passkey after login,
89
90
  // we force them to created it before they can use the app
90
91
  // ** It must be an useEffect because some of the dependencies are async
91
92
  React.useEffect(() => {
92
- var _a, _b, _c, _d, _e, _f;
93
93
  const createWallet = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
94
94
  triggeredCreate.current = true;
95
95
  try {
@@ -99,41 +99,29 @@ const SyncEmbeddedWalletAuthFlow = () => {
99
99
  return;
100
100
  }
101
101
  });
102
- const hasEmbeddedWalletProviderEnabled = isTurnkeyEnabled.isTurnkeyEnabled(projectSettings) ||
103
- isCoinbaseWaasEnabled.isCoinbaseWaasEnabled(projectSettings);
104
- if (!user ||
102
+ const shouldCreateWallet = shouldAutoCreateEmbeddedWallet();
103
+ if (!shouldCreateWallet ||
104
+ !user ||
105
105
  isProjectSettingsLoading ||
106
106
  !projectSettings ||
107
- !hasEmbeddedWalletProviderEnabled ||
108
107
  !walletConnectorOptions.length || // no connectors to use for the embedded wallet
109
- primaryWalletId || //should not override primary wallet
110
108
  isLoadingEmbeddedWallet || // already has a wallet
111
- lastUsedWallet !== undefined || //untill embedded wallet is generated it's undefined
109
+ globalLoading || // this will be true if auth is in progress
112
110
  triggeredCreate.current // already triggered
113
111
  ) {
114
112
  return;
115
113
  }
116
- // Turnkey specific rules
117
- if (
118
- // if coinbase is enabled it should still call createWallet, despite the turnkey rules
119
- !isCoinbaseWaasEnabled.isCoinbaseWaasEnabled(projectSettings) &&
120
- isTurnkeyEnabled.isTurnkeyEnabled(projectSettings) &&
121
- // If customer allows user to skip passkey creation, don't trigger createEmbeddedWallet on refresh
122
- (!((_b = (_a = projectSettings.sdk) === null || _a === void 0 ? void 0 : _a.embeddedWallets) === null || _b === void 0 ? void 0 : _b.automaticEmbeddedWalletCreation) ||
123
- ((_d = (_c = projectSettings.sdk) === null || _c === void 0 ? void 0 : _c.embeddedWallets) === null || _d === void 0 ? void 0 : _d.allowSkippingAuthenticatorAtSignup) ||
124
- !((_f = (_e = projectSettings.sdk) === null || _e === void 0 ? void 0 : _e.embeddedWallets) === null || _f === void 0 ? void 0 : _f.forceAuthenticatorAtSignup))) {
125
- return;
126
- }
127
114
  createWallet();
128
115
  }, [
129
116
  user,
130
117
  isProjectSettingsLoading,
131
118
  projectSettings,
132
119
  primaryWalletId,
133
- lastUsedWallet,
134
120
  createEmbeddedWallet,
135
121
  isLoadingEmbeddedWallet,
136
122
  walletConnectorOptions,
123
+ globalLoading,
124
+ shouldAutoCreateEmbeddedWallet,
137
125
  ]);
138
126
  return null;
139
127
  };
@@ -9,21 +9,18 @@ import '@dynamic-labs/wallet-connector-core';
9
9
  import 'react/jsx-runtime';
10
10
  import '../../context/ViewContext/ViewContext.js';
11
11
  import '@dynamic-labs/wallet-book';
12
- import { LAST_USED_WALLET } from '../../utils/constants/localStorage.js';
13
12
  import '../../utils/constants/colors.js';
14
13
  import '../../utils/constants/values.js';
15
- import { LocalStorage } from '../../shared/utils/classes/storage/localStorage.js';
14
+ import '../../shared/utils/classes/storage/localStorage.js';
16
15
  import '@dynamic-labs/utils';
17
16
  import '../../shared/consts/index.js';
18
- import '../../events/dynamicEvents.js';
17
+ import { useInternalDynamicEvents } from '../../utils/hooks/events/useDynamicEvents/useDynamicEvents.js';
19
18
  import '../../context/CaptchaContext/CaptchaContext.js';
20
19
  import '../../context/ErrorContext/ErrorContext.js';
21
20
  import '@dynamic-labs/multi-wallet';
22
21
  import 'react-international-phone';
23
- import { isTurnkeyEnabled } from '../../utils/functions/isTurnkeyEnabled/isTurnkeyEnabled.js';
24
22
  import 'viem';
25
23
  import 'viem/chains';
26
- import { isCoinbaseWaasEnabled } from '../../utils/functions/isCoinbaseWaasEnabled/isCoinbaseWaasEnabled.js';
27
24
  import '../../config/ApiEndpoint.js';
28
25
  import '../../locale/locale.js';
29
26
  import '../../context/AccessDeniedContext/AccessDeniedContext.js';
@@ -31,11 +28,12 @@ import '../../context/AccountExistsContext/AccountExistsContext.js';
31
28
  import '../../context/UserWalletsContext/UserWalletsContext.js';
32
29
  import '../../context/VerificationContext/VerificationContext.js';
33
30
  import 'react-dom';
31
+ import '../../events/dynamicEvents.js';
34
32
  import { useEmbeddedWallet } from '../../utils/hooks/useEmbeddedWallet/useEmbeddedWallet.js';
35
33
  import { useWalletContext } from '../../context/WalletContext/WalletContext.js';
36
34
  import '../../context/ThemeContext/ThemeContext.js';
37
35
  import '@dynamic-labs/types';
38
- import '../../context/LoadingContext/LoadingContext.js';
36
+ import { useLoadingContext } from '../../context/LoadingContext/LoadingContext.js';
39
37
  import 'yup';
40
38
  import '../../context/MockContext/MockContext.js';
41
39
  import 'react-i18next';
@@ -77,15 +75,17 @@ import { useInternalDynamicContext } from '../../context/DynamicContext/useDynam
77
75
  const SyncEmbeddedWalletAuthFlow = () => {
78
76
  const { projectSettings, isProjectSettingsLoading, user, primaryWalletId, walletConnectorOptions, } = useInternalDynamicContext();
79
77
  const { isLoadingEmbeddedWallet } = useWalletContext();
80
- const lastUsedWallet = LocalStorage.getFromLS(LAST_USED_WALLET);
81
- const { createEmbeddedWallet } = useEmbeddedWallet();
78
+ const { loading: globalLoading } = useLoadingContext();
79
+ const { createEmbeddedWallet, shouldAutoCreateEmbeddedWallet } = useEmbeddedWallet();
82
80
  const triggeredCreate = useRef(false);
81
+ useInternalDynamicEvents('logout', () => {
82
+ triggeredCreate.current = false;
83
+ });
83
84
  // this is used to trigger createEmbeddedWallet
84
- // when user didn't create a passkey after login and refresh page to skip it
85
+ // when user didn't create a passkey after login,
85
86
  // we force them to created it before they can use the app
86
87
  // ** It must be an useEffect because some of the dependencies are async
87
88
  useEffect(() => {
88
- var _a, _b, _c, _d, _e, _f;
89
89
  const createWallet = () => __awaiter(void 0, void 0, void 0, function* () {
90
90
  triggeredCreate.current = true;
91
91
  try {
@@ -95,41 +95,29 @@ const SyncEmbeddedWalletAuthFlow = () => {
95
95
  return;
96
96
  }
97
97
  });
98
- const hasEmbeddedWalletProviderEnabled = isTurnkeyEnabled(projectSettings) ||
99
- isCoinbaseWaasEnabled(projectSettings);
100
- if (!user ||
98
+ const shouldCreateWallet = shouldAutoCreateEmbeddedWallet();
99
+ if (!shouldCreateWallet ||
100
+ !user ||
101
101
  isProjectSettingsLoading ||
102
102
  !projectSettings ||
103
- !hasEmbeddedWalletProviderEnabled ||
104
103
  !walletConnectorOptions.length || // no connectors to use for the embedded wallet
105
- primaryWalletId || //should not override primary wallet
106
104
  isLoadingEmbeddedWallet || // already has a wallet
107
- lastUsedWallet !== undefined || //untill embedded wallet is generated it's undefined
105
+ globalLoading || // this will be true if auth is in progress
108
106
  triggeredCreate.current // already triggered
109
107
  ) {
110
108
  return;
111
109
  }
112
- // Turnkey specific rules
113
- if (
114
- // if coinbase is enabled it should still call createWallet, despite the turnkey rules
115
- !isCoinbaseWaasEnabled(projectSettings) &&
116
- isTurnkeyEnabled(projectSettings) &&
117
- // If customer allows user to skip passkey creation, don't trigger createEmbeddedWallet on refresh
118
- (!((_b = (_a = projectSettings.sdk) === null || _a === void 0 ? void 0 : _a.embeddedWallets) === null || _b === void 0 ? void 0 : _b.automaticEmbeddedWalletCreation) ||
119
- ((_d = (_c = projectSettings.sdk) === null || _c === void 0 ? void 0 : _c.embeddedWallets) === null || _d === void 0 ? void 0 : _d.allowSkippingAuthenticatorAtSignup) ||
120
- !((_f = (_e = projectSettings.sdk) === null || _e === void 0 ? void 0 : _e.embeddedWallets) === null || _f === void 0 ? void 0 : _f.forceAuthenticatorAtSignup))) {
121
- return;
122
- }
123
110
  createWallet();
124
111
  }, [
125
112
  user,
126
113
  isProjectSettingsLoading,
127
114
  projectSettings,
128
115
  primaryWalletId,
129
- lastUsedWallet,
130
116
  createEmbeddedWallet,
131
117
  isLoadingEmbeddedWallet,
132
118
  walletConnectorOptions,
119
+ globalLoading,
120
+ shouldAutoCreateEmbeddedWallet,
133
121
  ]);
134
122
  return null;
135
123
  };
@@ -135,7 +135,7 @@ const DynamicContext = React.createContext(undefined);
135
135
  /** The context provider itself we only use internally */
136
136
  const InnerDynamicContextProvider = ({ children, theme, settings: settings$1, locale: locale$1, }) => {
137
137
  var _a, _b, _c, _d, _e, _f, _g;
138
- const { accessDeniedMessagePrimary, accessDeniedMessageSecondary, accessDeniedButton, apiBaseUrl, enableConnectOnlyFallback = false, deepLinkPreference: deepLinkPreferenceProp = 'native', bridgeChains, cssOverrides, defaultNumberOfWalletsToShow = values.DEFAULT_NUMBER_OF_WALLETS_TO_SHOW, flowNetwork, initialAuthenticationMode = 'connect-and-sign', debugError = false, displaySiweStatement = true, newToWeb3WalletChainMap, enableVisitTrackingOnConnectOnly = true, environmentId, walletsFilter, logLevel = 'WARN', mobileExperience = 'in-app-browser', notInTheListImageUrl, onboardingImageUrl, policiesConsentInnerComponent, customPrivacyPolicy, privacyPolicyUrl, signWithEmailWalletName, socialMediaLinkText, socialMediaIconUrl, socialMediaUrl, customTermsOfServices, termsOfServiceUrl, toolkitEnabled, siweStatement, shadowDOMEnabled = true, walletConnectors: walletConnectorsProp, socialProvidersFilter, showLockedWalletView = false, walletConnectPreferredChains, walletConnectorExtensions, recommendedWallets, hideEmbeddedWalletTransactionUIs, handlers, } = settings$1;
138
+ const { accessDeniedMessagePrimary, accessDeniedMessageSecondary, accessDeniedButton, apiBaseUrl, coinbaseWalletPreference, enableConnectOnlyFallback = false, deepLinkPreference: deepLinkPreferenceProp = 'native', bridgeChains, cssOverrides, defaultNumberOfWalletsToShow = values.DEFAULT_NUMBER_OF_WALLETS_TO_SHOW, flowNetwork, initialAuthenticationMode = 'connect-and-sign', debugError = false, displaySiweStatement = true, newToWeb3WalletChainMap, enableVisitTrackingOnConnectOnly = true, environmentId, walletsFilter, logLevel = 'WARN', mobileExperience = 'in-app-browser', notInTheListImageUrl, onboardingImageUrl, policiesConsentInnerComponent, customPrivacyPolicy, privacyPolicyUrl, signWithEmailWalletName, socialMediaLinkText, socialMediaIconUrl, socialMediaUrl, customTermsOfServices, termsOfServiceUrl, toolkitEnabled, siweStatement, shadowDOMEnabled = true, walletConnectors: walletConnectorsProp, socialProvidersFilter, showLockedWalletView = false, walletConnectPreferredChains, walletConnectorExtensions, recommendedWallets, hideEmbeddedWalletTransactionUIs, handlers, } = settings$1;
139
139
  localStorage.LocalStorage.setSuffix(settings$1.localStorageSuffix);
140
140
  /**
141
141
  * initialize global store
@@ -224,6 +224,7 @@ const InnerDynamicContextProvider = ({ children, theme, settings: settings$1, lo
224
224
  const { walletConnectorOptions } = useWalletConnectorOptions.useWalletConnectorOptions({
225
225
  appLogoUrl,
226
226
  appName,
227
+ coinbaseWalletPreference,
227
228
  deepLinkPreference,
228
229
  flowNetwork,
229
230
  mobileExperience,
@@ -1,6 +1,6 @@
1
1
  import { FC, ReactNode } from 'react';
2
2
  import { LogLevel } from '@dynamic-labs/logger';
3
- import { SocialProviderFilter } from '@dynamic-labs/types';
3
+ import { type CoinbaseWalletPreference, type SocialProviderFilter } from '@dynamic-labs/types';
4
4
  import { DeepLinkVariant, WalletConnectorExtension, WalletConnectorsMethod } from '@dynamic-labs/wallet-connector-core';
5
5
  import { LocaleResource } from '../../locale';
6
6
  import { AccessDeniedCustomButton, AuthModeType, ChainToWalletMap, DynamicEventsCallbacks, RecommendedWallet, WalletOption } from '../../shared';
@@ -20,6 +20,7 @@ export interface DynamicContextProps {
20
20
  appLogoUrl?: string;
21
21
  appName?: string;
22
22
  bridgeChains?: ChainsToConnect[];
23
+ coinbaseWalletPreference?: CoinbaseWalletPreference;
23
24
  cssOverrides?: string | JSX.Element;
24
25
  customPrivacyPolicy?: ReactNode;
25
26
  customTermsOfServices?: ReactNode;
@@ -131,7 +131,7 @@ const DynamicContext = createContext(undefined);
131
131
  /** The context provider itself we only use internally */
132
132
  const InnerDynamicContextProvider = ({ children, theme, settings, locale, }) => {
133
133
  var _a, _b, _c, _d, _e, _f, _g;
134
- const { accessDeniedMessagePrimary, accessDeniedMessageSecondary, accessDeniedButton, apiBaseUrl, enableConnectOnlyFallback = false, deepLinkPreference: deepLinkPreferenceProp = 'native', bridgeChains, cssOverrides, defaultNumberOfWalletsToShow = DEFAULT_NUMBER_OF_WALLETS_TO_SHOW, flowNetwork, initialAuthenticationMode = 'connect-and-sign', debugError = false, displaySiweStatement = true, newToWeb3WalletChainMap, enableVisitTrackingOnConnectOnly = true, environmentId, walletsFilter, logLevel = 'WARN', mobileExperience = 'in-app-browser', notInTheListImageUrl, onboardingImageUrl, policiesConsentInnerComponent, customPrivacyPolicy, privacyPolicyUrl, signWithEmailWalletName, socialMediaLinkText, socialMediaIconUrl, socialMediaUrl, customTermsOfServices, termsOfServiceUrl, toolkitEnabled, siweStatement, shadowDOMEnabled = true, walletConnectors: walletConnectorsProp, socialProvidersFilter, showLockedWalletView = false, walletConnectPreferredChains, walletConnectorExtensions, recommendedWallets, hideEmbeddedWalletTransactionUIs, handlers, } = settings;
134
+ const { accessDeniedMessagePrimary, accessDeniedMessageSecondary, accessDeniedButton, apiBaseUrl, coinbaseWalletPreference, enableConnectOnlyFallback = false, deepLinkPreference: deepLinkPreferenceProp = 'native', bridgeChains, cssOverrides, defaultNumberOfWalletsToShow = DEFAULT_NUMBER_OF_WALLETS_TO_SHOW, flowNetwork, initialAuthenticationMode = 'connect-and-sign', debugError = false, displaySiweStatement = true, newToWeb3WalletChainMap, enableVisitTrackingOnConnectOnly = true, environmentId, walletsFilter, logLevel = 'WARN', mobileExperience = 'in-app-browser', notInTheListImageUrl, onboardingImageUrl, policiesConsentInnerComponent, customPrivacyPolicy, privacyPolicyUrl, signWithEmailWalletName, socialMediaLinkText, socialMediaIconUrl, socialMediaUrl, customTermsOfServices, termsOfServiceUrl, toolkitEnabled, siweStatement, shadowDOMEnabled = true, walletConnectors: walletConnectorsProp, socialProvidersFilter, showLockedWalletView = false, walletConnectPreferredChains, walletConnectorExtensions, recommendedWallets, hideEmbeddedWalletTransactionUIs, handlers, } = settings;
135
135
  LocalStorage.setSuffix(settings.localStorageSuffix);
136
136
  /**
137
137
  * initialize global store
@@ -220,6 +220,7 @@ const InnerDynamicContextProvider = ({ children, theme, settings, locale, }) =>
220
220
  const { walletConnectorOptions } = useWalletConnectorOptions({
221
221
  appLogoUrl,
222
222
  appName,
223
+ coinbaseWalletPreference,
223
224
  deepLinkPreference,
224
225
  flowNetwork,
225
226
  mobileExperience,
@@ -24,8 +24,10 @@ require('../../../context/ErrorContext/ErrorContext.cjs');
24
24
  require('@dynamic-labs/multi-wallet');
25
25
  var getAuthToken = require('../../functions/getAuthToken/getAuthToken.cjs');
26
26
  require('react-international-phone');
27
+ var isTurnkeyEnabled = require('../../functions/isTurnkeyEnabled/isTurnkeyEnabled.cjs');
27
28
  require('viem');
28
29
  require('viem/chains');
30
+ var isCoinbaseWaasEnabled = require('../../functions/isCoinbaseWaasEnabled/isCoinbaseWaasEnabled.cjs');
29
31
  require('../../../config/ApiEndpoint.cjs');
30
32
  require('../../../locale/locale.cjs');
31
33
  var hasEmbeddedWallet = require('../../functions/hasEmbeddedWallet/hasEmbeddedWallet.cjs');
@@ -95,7 +97,7 @@ var useInternalDynamicContext = require('../../../context/DynamicContext/useDyna
95
97
  * }
96
98
  */
97
99
  const useEmbeddedWallet = () => {
98
- const { onboardingOnlyJwt, user } = useInternalDynamicContext.useInternalDynamicContext();
100
+ const { onboardingOnlyJwt, user, projectSettings, primaryWalletId } = useInternalDynamicContext.useInternalDynamicContext();
99
101
  const { isTurnkeyWallet } = useIsTurnkeyWallet.useIsTurnkeyWallet();
100
102
  const { createEmbeddedWallet: createCoinbaseMPCWallet, canCreateMPCWallet, createPassword, revealEmbeddedWalletKey: reveaCoinbaseMPCEmbeddedWalletKey, } = useMPCEmbeddedWallet.useMPCEmbeddedWallet();
101
103
  const { createEmbeddedWallet: createTurnkeyEmbeddedWallet, createOrRestoreSession, createPasskey, revealEmbeddedWalletKey: revealTurnkeyEmbeddedWalletKey, getPasskeys, isSessionActive, sendOneTimeCode, } = useSecureEnclaveEmbeddedWallet.useSecureEnclaveEmbeddedWallet();
@@ -136,6 +138,23 @@ const useEmbeddedWallet = () => {
136
138
  }
137
139
  return reveaCoinbaseMPCEmbeddedWalletKey();
138
140
  });
141
+ const shouldAutoCreateEmbeddedWallet = React.useCallback(() => {
142
+ var _a, _b;
143
+ const hasEmbeddedWalletProviderEnabled = isTurnkeyEnabled.isTurnkeyEnabled(projectSettings) ||
144
+ isCoinbaseWaasEnabled.isCoinbaseWaasEnabled(projectSettings);
145
+ if (!hasEmbeddedWalletProviderEnabled || primaryWalletId) {
146
+ return false;
147
+ }
148
+ // Turnkey specific rules
149
+ if (
150
+ // if coinbase is enabled it should still call createWallet, despite the turnkey rules
151
+ !isCoinbaseWaasEnabled.isCoinbaseWaasEnabled(projectSettings) &&
152
+ isTurnkeyEnabled.isTurnkeyEnabled(projectSettings) &&
153
+ !((_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)) {
154
+ return false;
155
+ }
156
+ return true;
157
+ }, [primaryWalletId, projectSettings]);
139
158
  return {
140
159
  createEmbeddedWallet,
141
160
  createOrRestoreSession,
@@ -146,6 +165,7 @@ const useEmbeddedWallet = () => {
146
165
  isSessionActive,
147
166
  revealWalletKey,
148
167
  sendOneTimeCode,
168
+ shouldAutoCreateEmbeddedWallet,
149
169
  userHasEmbeddedWallet,
150
170
  };
151
171
  };
@@ -33,5 +33,6 @@ export declare const useEmbeddedWallet: () => {
33
33
  htmlContainerId?: string | undefined;
34
34
  } | undefined) => Promise<boolean>;
35
35
  readonly sendOneTimeCode: () => Promise<string>;
36
+ readonly shouldAutoCreateEmbeddedWallet: () => boolean;
36
37
  readonly userHasEmbeddedWallet: () => boolean;
37
38
  };
@@ -20,8 +20,10 @@ import '../../../context/ErrorContext/ErrorContext.js';
20
20
  import '@dynamic-labs/multi-wallet';
21
21
  import { getAuthToken } from '../../functions/getAuthToken/getAuthToken.js';
22
22
  import 'react-international-phone';
23
+ import { isTurnkeyEnabled } from '../../functions/isTurnkeyEnabled/isTurnkeyEnabled.js';
23
24
  import 'viem';
24
25
  import 'viem/chains';
26
+ import { isCoinbaseWaasEnabled } from '../../functions/isCoinbaseWaasEnabled/isCoinbaseWaasEnabled.js';
25
27
  import '../../../config/ApiEndpoint.js';
26
28
  import '../../../locale/locale.js';
27
29
  import { hasEmbeddedWallet } from '../../functions/hasEmbeddedWallet/hasEmbeddedWallet.js';
@@ -91,7 +93,7 @@ import { useInternalDynamicContext } from '../../../context/DynamicContext/useDy
91
93
  * }
92
94
  */
93
95
  const useEmbeddedWallet = () => {
94
- const { onboardingOnlyJwt, user } = useInternalDynamicContext();
96
+ const { onboardingOnlyJwt, user, projectSettings, primaryWalletId } = useInternalDynamicContext();
95
97
  const { isTurnkeyWallet } = useIsTurnkeyWallet();
96
98
  const { createEmbeddedWallet: createCoinbaseMPCWallet, canCreateMPCWallet, createPassword, revealEmbeddedWalletKey: reveaCoinbaseMPCEmbeddedWalletKey, } = useMPCEmbeddedWallet();
97
99
  const { createEmbeddedWallet: createTurnkeyEmbeddedWallet, createOrRestoreSession, createPasskey, revealEmbeddedWalletKey: revealTurnkeyEmbeddedWalletKey, getPasskeys, isSessionActive, sendOneTimeCode, } = useSecureEnclaveEmbeddedWallet();
@@ -132,6 +134,23 @@ const useEmbeddedWallet = () => {
132
134
  }
133
135
  return reveaCoinbaseMPCEmbeddedWalletKey();
134
136
  });
137
+ const shouldAutoCreateEmbeddedWallet = useCallback(() => {
138
+ var _a, _b;
139
+ const hasEmbeddedWalletProviderEnabled = isTurnkeyEnabled(projectSettings) ||
140
+ isCoinbaseWaasEnabled(projectSettings);
141
+ if (!hasEmbeddedWalletProviderEnabled || primaryWalletId) {
142
+ return false;
143
+ }
144
+ // Turnkey specific rules
145
+ if (
146
+ // if coinbase is enabled it should still call createWallet, despite the turnkey rules
147
+ !isCoinbaseWaasEnabled(projectSettings) &&
148
+ isTurnkeyEnabled(projectSettings) &&
149
+ !((_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)) {
150
+ return false;
151
+ }
152
+ return true;
153
+ }, [primaryWalletId, projectSettings]);
135
154
  return {
136
155
  createEmbeddedWallet,
137
156
  createOrRestoreSession,
@@ -142,6 +161,7 @@ const useEmbeddedWallet = () => {
142
161
  isSessionActive,
143
162
  revealWalletKey,
144
163
  sendOneTimeCode,
164
+ shouldAutoCreateEmbeddedWallet,
145
165
  userHasEmbeddedWallet,
146
166
  };
147
167
  };
@@ -81,15 +81,15 @@ var useInternalDynamicContext = require('../../../context/DynamicContext/useDyna
81
81
 
82
82
  const sleepToShowSuccessMessage = () => utils.sleep(1500);
83
83
  const useUserAuth = ({ authMethod, }) => {
84
- const { handleLogOut, setOnboardingOnlyJwt, setShowAuthFlow, setCallback, onboardingOnlyJwt, setMultiWalletWidgetState, projectSettings, } = useInternalDynamicContext.useInternalDynamicContext();
84
+ const { handleLogOut, setOnboardingOnlyJwt, setShowAuthFlow, setCallback, onboardingOnlyJwt, setMultiWalletWidgetState, } = useInternalDynamicContext.useInternalDynamicContext();
85
85
  const { view, setView, goToInitialView } = ViewContext.useViewContext();
86
86
  const { setLoading } = LoadingContext.useLoadingContext();
87
87
  const { setErrorMessage, setError } = ErrorContext.useErrorContext();
88
88
  const { setExistentAccountData } = AccountExistsContext.useAccountExistsContext();
89
- const { createEmbeddedWallet } = useEmbeddedWallet.useEmbeddedWallet();
90
89
  const { handleVerifiedUserWithJWT } = useHandleVerifiedUser.useHandleVerifiedUser();
91
90
  const { createUserProfileByJWT } = useCreateUserProfileByJWTCallback.useCreateUserProfileByJWTCallback();
92
91
  const { displayedDestination: formattedPhone } = VerificationContext.useVerification();
92
+ const { shouldAutoCreateEmbeddedWallet } = useEmbeddedWallet.useEmbeddedWallet();
93
93
  const initAuth = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ isSignIn = true, verifyFunction, onVerifySuccess, onSettled, onError, showSuccessMessage = false, skipDefaultErrorHandling = false, }) {
94
94
  logger.logger.debug('initAuth', { authMethod, isSignIn });
95
95
  try {
@@ -115,9 +115,13 @@ const useUserAuth = ({ authMethod, }) => {
115
115
  yield createUserProfileByJWT(jwt, minifiedJwt);
116
116
  if (isSignIn) {
117
117
  setCallback('authSuccess');
118
- yield createEmbeddedWalletIfEnabled();
119
118
  }
120
- setShowAuthFlow(false);
119
+ // we should only close auth flow if no wallet is going to be created,
120
+ // otherwise there will be a glitch with auth flow closing and then reopening for passkeys
121
+ const shouldCreateWallet = shouldAutoCreateEmbeddedWallet();
122
+ if (!shouldCreateWallet) {
123
+ setShowAuthFlow(false);
124
+ }
121
125
  onSettled === null || onSettled === void 0 ? void 0 : onSettled();
122
126
  }
123
127
  catch (error) {
@@ -156,21 +160,6 @@ const useUserAuth = ({ authMethod, }) => {
156
160
  }
157
161
  onSettled === null || onSettled === void 0 ? void 0 : onSettled();
158
162
  });
159
- const createEmbeddedWalletIfEnabled = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
160
- var _b, _c;
161
- if (!((_c = (_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _b === void 0 ? void 0 : _b.embeddedWallets) === null || _c === void 0 ? void 0 : _c.automaticEmbeddedWalletCreation)) {
162
- return;
163
- }
164
- try {
165
- // this function will check if embedded wallet is enabled and create wallet if needed
166
- // if not enabled, it will throw an error.
167
- yield createEmbeddedWallet();
168
- }
169
- catch (e) {
170
- logger.logger.debug('createEmbeddedWallet', e);
171
- setShowAuthFlow(false);
172
- }
173
- });
174
163
  const handleError = (error, { options = {}, onError, }) => {
175
164
  if (error instanceof utils.NoAccessError) {
176
165
  setView('no-access');
@@ -201,29 +190,35 @@ const useUserAuth = ({ authMethod, }) => {
201
190
  setError(error.message);
202
191
  }
203
192
  };
204
- const completeAuth = (_d) => _tslib.__awaiter(void 0, [_d], void 0, function* ({ completeSignInFlow, updateJwtFunction, onValidUpdatedJwt, options = {}, }) {
193
+ const handleVerifyMissingFields = (_b) => _tslib.__awaiter(void 0, [_b], void 0, function* ({ missingFields, isEmailVerificationRequired, isSmsVerificationRequired, }) {
194
+ if (isEmailVerificationRequired &&
195
+ missingFields.map((field) => field.name).toString() === 'email') {
196
+ setView('verify-email');
197
+ return;
198
+ }
199
+ if (isSmsVerificationRequired &&
200
+ missingFields.map((field) => field.name).toString() === 'phoneNumber') {
201
+ setView('verify-sms');
202
+ return;
203
+ }
204
+ setView(view.type);
205
+ });
206
+ const completeAuth = (_c) => _tslib.__awaiter(void 0, [_c], void 0, function* ({ completeSignInFlow, updateJwtFunction, onValidUpdatedJwt, options = {}, }) {
205
207
  logger.logger.debug('completeAuth', { authMethod });
206
208
  try {
207
209
  const { updateUserProfileResponse, isSmsVerificationRequired, isEmailVerificationRequired, missingFields, } = yield updateJwtFunction();
208
210
  onValidUpdatedJwt === null || onValidUpdatedJwt === void 0 ? void 0 : onValidUpdatedJwt();
209
211
  setOnboardingOnlyJwt(updateUserProfileResponse.jwt);
210
212
  localStorage.LocalStorage.setToLS(localStorage$1.AUTH_ONBOARDING_TOKEN, updateUserProfileResponse.minifiedJwt, true);
211
- if (isEmailVerificationRequired &&
212
- missingFields.map((field) => field.name).toString() === 'email') {
213
- setView('verify-email');
214
- return;
215
- }
216
- else if (isSmsVerificationRequired &&
217
- missingFields.map((field) => field.name).toString() === 'phoneNumber') {
218
- setView('verify-sms');
219
- return;
220
- }
221
- else if (missingFields.length > 0) {
222
- // make sure we capture the fields that are required and still missing!
223
- // do not change the view, just use the current one
224
- setView(view.type);
213
+ if (missingFields.length > 0) {
214
+ yield handleVerifyMissingFields({
215
+ isEmailVerificationRequired,
216
+ isSmsVerificationRequired,
217
+ missingFields,
218
+ });
225
219
  return;
226
220
  }
221
+ // no more onboarding needed, clean up onboarding jwt
227
222
  if (onboardingOnlyJwt) {
228
223
  yield handleVerifiedUserWithJWT(updateUserProfileResponse.jwt);
229
224
  setOnboardingOnlyJwt(undefined);
@@ -236,7 +231,12 @@ const useUserAuth = ({ authMethod, }) => {
236
231
  return;
237
232
  }
238
233
  }
239
- yield createEmbeddedWalletIfEnabled();
234
+ // we should only close auth flow if no wallet is going to be created,
235
+ // otherwise there will be a glitch with auth flow closing and then reopening for passkeys
236
+ const shouldCreateWallet = shouldAutoCreateEmbeddedWallet();
237
+ if (!shouldCreateWallet) {
238
+ setShowAuthFlow(false);
239
+ }
240
240
  }
241
241
  catch (error) {
242
242
  logger.logger.debug(error);
@@ -77,15 +77,15 @@ import { useInternalDynamicContext } from '../../../context/DynamicContext/useDy
77
77
 
78
78
  const sleepToShowSuccessMessage = () => sleep(1500);
79
79
  const useUserAuth = ({ authMethod, }) => {
80
- const { handleLogOut, setOnboardingOnlyJwt, setShowAuthFlow, setCallback, onboardingOnlyJwt, setMultiWalletWidgetState, projectSettings, } = useInternalDynamicContext();
80
+ const { handleLogOut, setOnboardingOnlyJwt, setShowAuthFlow, setCallback, onboardingOnlyJwt, setMultiWalletWidgetState, } = useInternalDynamicContext();
81
81
  const { view, setView, goToInitialView } = useViewContext();
82
82
  const { setLoading } = useLoadingContext();
83
83
  const { setErrorMessage, setError } = useErrorContext();
84
84
  const { setExistentAccountData } = useAccountExistsContext();
85
- const { createEmbeddedWallet } = useEmbeddedWallet();
86
85
  const { handleVerifiedUserWithJWT } = useHandleVerifiedUser();
87
86
  const { createUserProfileByJWT } = useCreateUserProfileByJWTCallback();
88
87
  const { displayedDestination: formattedPhone } = useVerification();
88
+ const { shouldAutoCreateEmbeddedWallet } = useEmbeddedWallet();
89
89
  const initAuth = (_a) => __awaiter(void 0, [_a], void 0, function* ({ isSignIn = true, verifyFunction, onVerifySuccess, onSettled, onError, showSuccessMessage = false, skipDefaultErrorHandling = false, }) {
90
90
  logger.debug('initAuth', { authMethod, isSignIn });
91
91
  try {
@@ -111,9 +111,13 @@ const useUserAuth = ({ authMethod, }) => {
111
111
  yield createUserProfileByJWT(jwt, minifiedJwt);
112
112
  if (isSignIn) {
113
113
  setCallback('authSuccess');
114
- yield createEmbeddedWalletIfEnabled();
115
114
  }
116
- setShowAuthFlow(false);
115
+ // we should only close auth flow if no wallet is going to be created,
116
+ // otherwise there will be a glitch with auth flow closing and then reopening for passkeys
117
+ const shouldCreateWallet = shouldAutoCreateEmbeddedWallet();
118
+ if (!shouldCreateWallet) {
119
+ setShowAuthFlow(false);
120
+ }
117
121
  onSettled === null || onSettled === void 0 ? void 0 : onSettled();
118
122
  }
119
123
  catch (error) {
@@ -152,21 +156,6 @@ const useUserAuth = ({ authMethod, }) => {
152
156
  }
153
157
  onSettled === null || onSettled === void 0 ? void 0 : onSettled();
154
158
  });
155
- const createEmbeddedWalletIfEnabled = () => __awaiter(void 0, void 0, void 0, function* () {
156
- var _b, _c;
157
- if (!((_c = (_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _b === void 0 ? void 0 : _b.embeddedWallets) === null || _c === void 0 ? void 0 : _c.automaticEmbeddedWalletCreation)) {
158
- return;
159
- }
160
- try {
161
- // this function will check if embedded wallet is enabled and create wallet if needed
162
- // if not enabled, it will throw an error.
163
- yield createEmbeddedWallet();
164
- }
165
- catch (e) {
166
- logger.debug('createEmbeddedWallet', e);
167
- setShowAuthFlow(false);
168
- }
169
- });
170
159
  const handleError = (error, { options = {}, onError, }) => {
171
160
  if (error instanceof NoAccessError) {
172
161
  setView('no-access');
@@ -197,29 +186,35 @@ const useUserAuth = ({ authMethod, }) => {
197
186
  setError(error.message);
198
187
  }
199
188
  };
200
- const completeAuth = (_d) => __awaiter(void 0, [_d], void 0, function* ({ completeSignInFlow, updateJwtFunction, onValidUpdatedJwt, options = {}, }) {
189
+ const handleVerifyMissingFields = (_b) => __awaiter(void 0, [_b], void 0, function* ({ missingFields, isEmailVerificationRequired, isSmsVerificationRequired, }) {
190
+ if (isEmailVerificationRequired &&
191
+ missingFields.map((field) => field.name).toString() === 'email') {
192
+ setView('verify-email');
193
+ return;
194
+ }
195
+ if (isSmsVerificationRequired &&
196
+ missingFields.map((field) => field.name).toString() === 'phoneNumber') {
197
+ setView('verify-sms');
198
+ return;
199
+ }
200
+ setView(view.type);
201
+ });
202
+ const completeAuth = (_c) => __awaiter(void 0, [_c], void 0, function* ({ completeSignInFlow, updateJwtFunction, onValidUpdatedJwt, options = {}, }) {
201
203
  logger.debug('completeAuth', { authMethod });
202
204
  try {
203
205
  const { updateUserProfileResponse, isSmsVerificationRequired, isEmailVerificationRequired, missingFields, } = yield updateJwtFunction();
204
206
  onValidUpdatedJwt === null || onValidUpdatedJwt === void 0 ? void 0 : onValidUpdatedJwt();
205
207
  setOnboardingOnlyJwt(updateUserProfileResponse.jwt);
206
208
  LocalStorage.setToLS(AUTH_ONBOARDING_TOKEN, updateUserProfileResponse.minifiedJwt, true);
207
- if (isEmailVerificationRequired &&
208
- missingFields.map((field) => field.name).toString() === 'email') {
209
- setView('verify-email');
210
- return;
211
- }
212
- else if (isSmsVerificationRequired &&
213
- missingFields.map((field) => field.name).toString() === 'phoneNumber') {
214
- setView('verify-sms');
215
- return;
216
- }
217
- else if (missingFields.length > 0) {
218
- // make sure we capture the fields that are required and still missing!
219
- // do not change the view, just use the current one
220
- setView(view.type);
209
+ if (missingFields.length > 0) {
210
+ yield handleVerifyMissingFields({
211
+ isEmailVerificationRequired,
212
+ isSmsVerificationRequired,
213
+ missingFields,
214
+ });
221
215
  return;
222
216
  }
217
+ // no more onboarding needed, clean up onboarding jwt
223
218
  if (onboardingOnlyJwt) {
224
219
  yield handleVerifiedUserWithJWT(updateUserProfileResponse.jwt);
225
220
  setOnboardingOnlyJwt(undefined);
@@ -232,7 +227,12 @@ const useUserAuth = ({ authMethod, }) => {
232
227
  return;
233
228
  }
234
229
  }
235
- yield createEmbeddedWalletIfEnabled();
230
+ // we should only close auth flow if no wallet is going to be created,
231
+ // otherwise there will be a glitch with auth flow closing and then reopening for passkeys
232
+ const shouldCreateWallet = shouldAutoCreateEmbeddedWallet();
233
+ if (!shouldCreateWallet) {
234
+ setShowAuthFlow(false);
235
+ }
236
236
  }
237
237
  catch (error) {
238
238
  logger.debug(error);
@@ -27,7 +27,7 @@ require('../../../locale/locale.cjs');
27
27
  var serializeWalletConnectors = require('../../functions/serializeWalletConnectors/serializeWalletConnectors.cjs');
28
28
  var verifyRequiredConnectorsAreSetup = require('./utils/verifyRequiredConnectorsAreSetup/verifyRequiredConnectorsAreSetup.cjs');
29
29
 
30
- const useWalletConnectorOptions = ({ projectSettings, appLogoUrl, appName, deepLinkPreference, flowNetwork, mobileExperience, networkConfigurations, walletBook, walletUiUtils, walletConnectorsProp, walletConnectPreferredChains, walletConnectorExtensions, }) => {
30
+ const useWalletConnectorOptions = ({ projectSettings, appLogoUrl, appName, coinbaseWalletPreference, deepLinkPreference, flowNetwork, mobileExperience, networkConfigurations, walletBook, walletUiUtils, walletConnectorsProp, walletConnectPreferredChains, walletConnectorExtensions, }) => {
31
31
  const walletConnectorsKey = React.useMemo(() => { var _a; return (_a = serializeWalletConnectors.serializeWalletConnectors(walletConnectorsProp)) === null || _a === void 0 ? void 0 : _a.join(','); }, [walletConnectorsProp]);
32
32
  const walletBookLength = React.useMemo(() => Object.keys(walletBook !== null && walletBook !== void 0 ? walletBook : {}).length, [walletBook]);
33
33
  const walletConnectorOptions = React.useMemo(() => {
@@ -39,6 +39,7 @@ const useWalletConnectorOptions = ({ projectSettings, appLogoUrl, appName, deepL
39
39
  getSupportedWalletOpts: {
40
40
  appLogoUrl,
41
41
  appName,
42
+ coinbaseWalletPreference,
42
43
  deepLinkPreference,
43
44
  flowNetwork,
44
45
  mobileExperience,
@@ -1,10 +1,11 @@
1
1
  import { ProjectSettings } from '@dynamic-labs/sdk-api-core';
2
- import { NetworkConfigurationMap, WalletUiUtils } from '@dynamic-labs/types';
2
+ import { type CoinbaseWalletPreference, type NetworkConfigurationMap, type WalletUiUtils } from '@dynamic-labs/types';
3
3
  import { DeepLinkVariant, WalletConnector, WalletConnectorExtension, WalletConnectorsMethod } from '@dynamic-labs/wallet-connector-core';
4
4
  import { WalletBookSchema } from '@dynamic-labs/wallet-book';
5
5
  type Props = {
6
6
  appLogoUrl?: string;
7
7
  appName?: string;
8
+ coinbaseWalletPreference?: CoinbaseWalletPreference;
8
9
  deepLinkPreference?: DeepLinkVariant;
9
10
  flowNetwork?: 'mainnet' | 'testnet';
10
11
  mobileExperience?: 'in-app-browser' | 'redirect';
@@ -16,7 +17,7 @@ type Props = {
16
17
  walletUiUtils: WalletUiUtils<WalletConnector>;
17
18
  walletConnectorExtensions?: WalletConnectorExtension[];
18
19
  };
19
- export declare const useWalletConnectorOptions: ({ projectSettings, appLogoUrl, appName, deepLinkPreference, flowNetwork, mobileExperience, networkConfigurations, walletBook, walletUiUtils, walletConnectorsProp, walletConnectPreferredChains, walletConnectorExtensions, }: Props) => {
20
+ export declare const useWalletConnectorOptions: ({ projectSettings, appLogoUrl, appName, coinbaseWalletPreference, deepLinkPreference, flowNetwork, mobileExperience, networkConfigurations, walletBook, walletUiUtils, walletConnectorsProp, walletConnectPreferredChains, walletConnectorExtensions, }: Props) => {
20
21
  walletConnectorOptions: import("../../../shared").WalletOption[];
21
22
  };
22
23
  export {};
@@ -23,7 +23,7 @@ import '../../../locale/locale.js';
23
23
  import { serializeWalletConnectors } from '../../functions/serializeWalletConnectors/serializeWalletConnectors.js';
24
24
  import { verifyRequiredConnectorsAreSetup } from './utils/verifyRequiredConnectorsAreSetup/verifyRequiredConnectorsAreSetup.js';
25
25
 
26
- const useWalletConnectorOptions = ({ projectSettings, appLogoUrl, appName, deepLinkPreference, flowNetwork, mobileExperience, networkConfigurations, walletBook, walletUiUtils, walletConnectorsProp, walletConnectPreferredChains, walletConnectorExtensions, }) => {
26
+ const useWalletConnectorOptions = ({ projectSettings, appLogoUrl, appName, coinbaseWalletPreference, deepLinkPreference, flowNetwork, mobileExperience, networkConfigurations, walletBook, walletUiUtils, walletConnectorsProp, walletConnectPreferredChains, walletConnectorExtensions, }) => {
27
27
  const walletConnectorsKey = useMemo(() => { var _a; return (_a = serializeWalletConnectors(walletConnectorsProp)) === null || _a === void 0 ? void 0 : _a.join(','); }, [walletConnectorsProp]);
28
28
  const walletBookLength = useMemo(() => Object.keys(walletBook !== null && walletBook !== void 0 ? walletBook : {}).length, [walletBook]);
29
29
  const walletConnectorOptions = useMemo(() => {
@@ -35,6 +35,7 @@ const useWalletConnectorOptions = ({ projectSettings, appLogoUrl, appName, deepL
35
35
  getSupportedWalletOpts: {
36
36
  appLogoUrl,
37
37
  appName,
38
+ coinbaseWalletPreference,
38
39
  deepLinkPreference,
39
40
  flowNetwork,
40
41
  mobileExperience,