@dynamic-labs/sdk-react-core 3.0.0-alpha.5 → 3.0.0-alpha.7

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 (108) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/package.cjs +2 -2
  3. package/package.js +2 -2
  4. package/package.json +11 -11
  5. package/src/index.cjs +7 -1
  6. package/src/index.d.ts +3 -1
  7. package/src/index.js +4 -1
  8. package/src/lib/Main.cjs +1 -0
  9. package/src/lib/Main.js +1 -0
  10. package/src/lib/components/NetworkPicker/components/EvmNetworkControl/EvmNetworkControl.cjs +2 -1
  11. package/src/lib/components/NetworkPicker/components/EvmNetworkControl/EvmNetworkControl.js +2 -1
  12. package/src/lib/components/QRCode/QRCode.d.ts +15 -0
  13. package/src/lib/context/DynamicContext/DynamicContext.cjs +15 -9
  14. package/src/lib/context/DynamicContext/DynamicContext.js +15 -9
  15. package/src/lib/context/DynamicContext/hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.cjs +17 -8
  16. package/src/lib/context/DynamicContext/hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.js +17 -8
  17. package/src/lib/context/DynamicContext/types/index.d.ts +4 -2
  18. package/src/lib/context/DynamicContext/useCustomerCallbacks/useCustomerCallbacks.cjs +3 -67
  19. package/src/lib/context/DynamicContext/useCustomerCallbacks/useCustomerCallbacks.js +3 -67
  20. package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.cjs +3 -2
  21. package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.d.ts +1 -1
  22. package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.js +3 -2
  23. package/src/lib/context/WidgetRegistry/WidgetRegistryContextProvider.cjs +128 -0
  24. package/src/lib/context/WidgetRegistry/WidgetRegistryContextProvider.d.ts +6 -0
  25. package/src/lib/context/WidgetRegistry/WidgetRegistryContextProvider.js +122 -0
  26. package/src/lib/context/WidgetRegistry/index.d.ts +1 -0
  27. package/src/lib/data/api/externalAuth/externalAuth.d.ts +5 -0
  28. package/src/lib/data/api/externalAuth/index.d.ts +1 -0
  29. package/src/lib/data/api/index.d.ts +1 -0
  30. package/src/lib/data/api/wallets/wallets.cjs +2 -1
  31. package/src/lib/data/api/wallets/wallets.d.ts +2 -1
  32. package/src/lib/data/api/wallets/wallets.js +2 -1
  33. package/src/lib/events/auth.d.ts +1 -0
  34. package/src/lib/events/dynamicEvents.d.ts +2 -1
  35. package/src/lib/events/embeddedWallet.d.ts +1 -1
  36. package/src/lib/events/multiWallet.d.ts +5 -0
  37. package/src/lib/locale/en/translation.cjs +4 -4
  38. package/src/lib/locale/en/translation.d.ts +2 -2
  39. package/src/lib/locale/en/translation.js +4 -4
  40. package/src/lib/shared/types/dynamicEventsCallbacks.d.ts +1 -3
  41. package/src/lib/styles/index.shadow.cjs +1 -1
  42. package/src/lib/styles/index.shadow.js +1 -1
  43. package/src/lib/utils/functions/index.d.ts +1 -0
  44. package/src/lib/utils/functions/logVerboseTroubleshootingMessage/index.d.ts +1 -0
  45. package/src/lib/utils/functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.cjs +28 -0
  46. package/src/lib/utils/functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.d.ts +1 -0
  47. package/src/lib/utils/functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.js +24 -0
  48. package/src/lib/utils/functions/walletListBuilder/walletListBuilder.cjs +2 -1
  49. package/src/lib/utils/functions/walletListBuilder/walletListBuilder.js +2 -1
  50. package/src/lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.cjs +20 -0
  51. package/src/lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.d.ts +2 -2
  52. package/src/lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.js +20 -1
  53. package/src/lib/utils/hooks/index.d.ts +2 -0
  54. package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.cjs +1 -2
  55. package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.js +1 -2
  56. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.cjs +6 -4
  57. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.js +6 -4
  58. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useCoinbaseMPC/useCoinbaseMPC.cjs +1 -2
  59. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useCoinbaseMPC/useCoinbaseMPC.js +1 -2
  60. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useTurnkey/useTurnkey.cjs +1 -2
  61. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useTurnkey/useTurnkey.js +1 -2
  62. package/src/lib/utils/hooks/useExternalAuth/index.d.ts +1 -0
  63. package/src/lib/utils/hooks/useExternalAuth/useExternalAuth.d.ts +9 -0
  64. package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.cjs +4 -7
  65. package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.js +4 -7
  66. package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.cjs +6 -2
  67. package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.js +6 -2
  68. package/src/lib/utils/hooks/useRefreshUser/index.d.ts +1 -0
  69. package/src/lib/utils/hooks/useRefreshUser/useRefreshUser.cjs +90 -0
  70. package/src/lib/utils/hooks/useRefreshUser/useRefreshUser.d.ts +8 -0
  71. package/src/lib/utils/hooks/useRefreshUser/useRefreshUser.js +86 -0
  72. package/src/lib/utils/hooks/useSwitchNetwork/index.d.ts +1 -0
  73. package/src/lib/utils/hooks/useSwitchNetwork/useSwitchNetwork.cjs +26 -0
  74. package/src/lib/utils/hooks/useSwitchNetwork/useSwitchNetwork.d.ts +5 -0
  75. package/src/lib/utils/hooks/useSwitchNetwork/useSwitchNetwork.js +22 -0
  76. package/src/lib/utils/hooks/useSwitchWallet/useSwitchWallet.cjs +1 -1
  77. package/src/lib/utils/hooks/useSwitchWallet/useSwitchWallet.js +1 -1
  78. package/src/lib/utils/hooks/useUserAuth/useUserAuth.cjs +4 -1
  79. package/src/lib/utils/hooks/useUserAuth/useUserAuth.js +4 -1
  80. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.cjs +7 -6
  81. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.js +7 -6
  82. package/src/lib/utils/hooks/useWalletConnectors/utils/findWallet/findWallet.cjs +1 -1
  83. package/src/lib/utils/hooks/useWalletConnectors/utils/findWallet/findWallet.js +1 -1
  84. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.cjs +44 -27
  85. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.js +45 -28
  86. package/src/lib/views/EmailVerification/EmailVerification.cjs +8 -5
  87. package/src/lib/views/EmailVerification/EmailVerification.js +8 -5
  88. package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.cjs +4 -14
  89. package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.js +5 -15
  90. package/src/lib/views/TransactionConfirmationView/TransactionConfirmationView.cjs +3 -1
  91. package/src/lib/views/TransactionConfirmationView/TransactionConfirmationView.js +3 -1
  92. package/src/lib/views/WalletList/WalletList.cjs +1 -3
  93. package/src/lib/views/WalletList/WalletList.js +1 -3
  94. package/src/lib/views/WalletList/hooks/useTabState.cjs +6 -81
  95. package/src/lib/views/WalletList/hooks/useTabState.d.ts +6 -3
  96. package/src/lib/views/WalletList/hooks/useTabState.js +6 -81
  97. package/src/lib/widgets/DynamicMultiWalletPromptsWidget/DynamicMultiWalletPromptsWidget.cjs +5 -5
  98. package/src/lib/widgets/DynamicMultiWalletPromptsWidget/DynamicMultiWalletPromptsWidget.js +5 -5
  99. package/src/lib/widgets/DynamicWidget/components/DynamicUserProfile/DynamicUserProfile.cjs +4 -1
  100. package/src/lib/widgets/DynamicWidget/components/DynamicUserProfile/DynamicUserProfile.js +4 -1
  101. package/src/lib/widgets/DynamicWidget/components/Wallet/Wallet.cjs +2 -2
  102. package/src/lib/widgets/DynamicWidget/components/Wallet/Wallet.js +2 -2
  103. package/src/lib/widgets/DynamicWidget/prompts/PrimaryNotConnectedModal/PrimaryNotConnectedModal.cjs +1 -1
  104. package/src/lib/widgets/DynamicWidget/prompts/PrimaryNotConnectedModal/PrimaryNotConnectedModal.js +1 -1
  105. package/src/lib/views/WalletList/utils/getInitialTabIndex/getInitialTabIndex.cjs +0 -22
  106. package/src/lib/views/WalletList/utils/getInitialTabIndex/getInitialTabIndex.d.ts +0 -2
  107. package/src/lib/views/WalletList/utils/getInitialTabIndex/getInitialTabIndex.js +0 -18
  108. package/src/lib/views/WalletList/utils/getInitialTabIndex/index.d.ts +0 -1
@@ -77,3 +77,4 @@ export * from './storeExpiresAt';
77
77
  export * from './getExpiresAt';
78
78
  export * from './getSupportedCountriesForVerificationFromProjectSettings';
79
79
  export * from './getDefaultCountriesIfEmpty';
80
+ export * from './logVerboseTroubleshootingMessage';
@@ -0,0 +1 @@
1
+ export * from './logVerboseTroubleshootingMessage';
@@ -0,0 +1,28 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ require('@dynamic-labs/sdk-api-core');
7
+ var logger = require('../../../shared/logger.cjs');
8
+ require('@dynamic-labs/iconic');
9
+ require('@dynamic-labs/wallet-connector-core');
10
+ require('react/jsx-runtime');
11
+ require('../../../context/ViewContext/ViewContext.cjs');
12
+ require('react');
13
+ require('@dynamic-labs/wallet-book');
14
+ require('../../constants/colors.cjs');
15
+ require('../../constants/values.cjs');
16
+ require('../../../shared/utils/classes/storage/localStorage.cjs');
17
+ require('../../../shared/utils/classes/storage/sessionStorage.cjs');
18
+ require('@dynamic-labs/utils');
19
+ require('../../../shared/consts/index.cjs');
20
+
21
+ // use this in conjuction with dynamic_enableTroubleshootMode to see
22
+ // more verbose logging to help troubleshoot issues
23
+ // i.e: window.dynamic_enableTroubleshootMode = true
24
+ const logVerboseTroubleshootingMessage = (message, ...args) => {
25
+ logger.logger.log(-1, message, ...args);
26
+ };
27
+
28
+ exports.logVerboseTroubleshootingMessage = logVerboseTroubleshootingMessage;
@@ -0,0 +1 @@
1
+ export declare const logVerboseTroubleshootingMessage: (message: string | Error | unknown, ...args: any[]) => void;
@@ -0,0 +1,24 @@
1
+ 'use client'
2
+ import '@dynamic-labs/sdk-api-core';
3
+ import { logger } from '../../../shared/logger.js';
4
+ import '@dynamic-labs/iconic';
5
+ import '@dynamic-labs/wallet-connector-core';
6
+ import 'react/jsx-runtime';
7
+ import '../../../context/ViewContext/ViewContext.js';
8
+ import 'react';
9
+ import '@dynamic-labs/wallet-book';
10
+ import '../../constants/colors.js';
11
+ import '../../constants/values.js';
12
+ import '../../../shared/utils/classes/storage/localStorage.js';
13
+ import '../../../shared/utils/classes/storage/sessionStorage.js';
14
+ import '@dynamic-labs/utils';
15
+ import '../../../shared/consts/index.js';
16
+
17
+ // use this in conjuction with dynamic_enableTroubleshootMode to see
18
+ // more verbose logging to help troubleshoot issues
19
+ // i.e: window.dynamic_enableTroubleshootMode = true
20
+ const logVerboseTroubleshootingMessage = (message, ...args) => {
21
+ logger.log(-1, message, ...args);
22
+ };
23
+
24
+ export { logVerboseTroubleshootingMessage };
@@ -82,7 +82,8 @@ const walletListBuilder = ({ authMode, userWallets, multiWallet, numberOfWallets
82
82
  if (walletConnectorCore.isEmbeddedConnector(wallet.walletConnector)) {
83
83
  return;
84
84
  }
85
- else if (wallet.key === 'unknown') {
85
+ else if (wallet.key === 'unknown' ||
86
+ !wallet.walletConnector.isAvailable) {
86
87
  return;
87
88
  }
88
89
  else if (isRecommendedWallet) {
@@ -78,7 +78,8 @@ const walletListBuilder = ({ authMode, userWallets, multiWallet, numberOfWallets
78
78
  if (isEmbeddedConnector(wallet.walletConnector)) {
79
79
  return;
80
80
  }
81
- else if (wallet.key === 'unknown') {
81
+ else if (wallet.key === 'unknown' ||
82
+ !wallet.walletConnector.isAvailable) {
82
83
  return;
83
84
  }
84
85
  else if (isRecommendedWallet) {
@@ -18,5 +18,25 @@ const useInternalDynamicEvents = (event, listener) => {
18
18
  };
19
19
  }, [event]);
20
20
  };
21
+ // ATTENTION
22
+ // Everything below should be made public soon, but we need to plan this out first
23
+ // Main issues:
24
+ // 1. How should we map customer callback names to our dynamic event names?
25
+ // -> Gui's suggestion: breaking change to rename customer callbacks so they fit these events names
26
+ // 2. We would have to remove these callbacks from the useCustomerCallbacks hook
27
+ /** Which events are accessible by our clients */
28
+ const externalEvents = [
29
+ 'emailVerificationResult',
30
+ 'embeddedWalletCreated',
31
+ 'logout',
32
+ 'walletAdded',
33
+ ];
34
+ /** Allows subscribing to dynamic events directly inside components with a hook */
35
+ const useDynamicEvents = (event, listener) => {
36
+ if (!externalEvents.includes(event))
37
+ throw new Error(`Unrecognized event "${event}" used with useDynamicEvents`);
38
+ useInternalDynamicEvents(event, listener);
39
+ };
21
40
 
41
+ exports.useDynamicEvents = useDynamicEvents;
22
42
  exports.useInternalDynamicEvents = useInternalDynamicEvents;
@@ -2,7 +2,7 @@ import { DynamicEvents } from '../../../../events';
2
2
  import { EventArgs } from '../types';
3
3
  type DynamicEventListener<E extends keyof DynamicEvents> = (...args: EventArgs<DynamicEvents, E>) => void;
4
4
  /** Allows us to subscribe to all dynamicEvents with a hook, even the internal ones */
5
- export declare const useInternalDynamicEvents: <E extends keyof import("../../../../events/auth").AuthEvents | keyof import("../../../../events/ui").UIEvents | keyof import("../../../../events/otp").OTPEvents | keyof import("../../../../events/wallets").WalletEvents | keyof import("../../../../events/passkey").PasskeyEvents | "farcasterConnectCancelled" | keyof import("../../../../events/embeddedWallet").EmbeddedWalletEvents>(event: E, listener: DynamicEventListener<E>) => void;
5
+ export declare const useInternalDynamicEvents: <E extends keyof import("../../../../events/auth").AuthEvents | keyof import("../../../../events/ui").UIEvents | keyof import("../../../../events/otp").OTPEvents | keyof import("../../../../events/wallets").WalletEvents | keyof import("../../../../events/passkey").PasskeyEvents | "farcasterConnectCancelled" | keyof import("../../../../events/embeddedWallet").EmbeddedWalletEvents | "triggerComputePrimaryWalletMultiWalletStateFromAccounts">(event: E, listener: DynamicEventListener<E>) => void;
6
6
  /** Allows subscribing to dynamic events directly inside components with a hook */
7
- export declare const useDynamicEvents: <E extends "logout" | "emailVerificationResult" | "embeddedWalletCreated">(event: E, listener: DynamicEventListener<E>) => void;
7
+ export declare const useDynamicEvents: <E extends "logout" | "emailVerificationResult" | "walletAdded" | "embeddedWalletCreated">(event: E, listener: DynamicEventListener<E>) => void;
8
8
  export {};
@@ -14,5 +14,24 @@ const useInternalDynamicEvents = (event, listener) => {
14
14
  };
15
15
  }, [event]);
16
16
  };
17
+ // ATTENTION
18
+ // Everything below should be made public soon, but we need to plan this out first
19
+ // Main issues:
20
+ // 1. How should we map customer callback names to our dynamic event names?
21
+ // -> Gui's suggestion: breaking change to rename customer callbacks so they fit these events names
22
+ // 2. We would have to remove these callbacks from the useCustomerCallbacks hook
23
+ /** Which events are accessible by our clients */
24
+ const externalEvents = [
25
+ 'emailVerificationResult',
26
+ 'embeddedWalletCreated',
27
+ 'logout',
28
+ 'walletAdded',
29
+ ];
30
+ /** Allows subscribing to dynamic events directly inside components with a hook */
31
+ const useDynamicEvents = (event, listener) => {
32
+ if (!externalEvents.includes(event))
33
+ throw new Error(`Unrecognized event "${event}" used with useDynamicEvents`);
34
+ useInternalDynamicEvents(event, listener);
35
+ };
17
36
 
18
- export { useInternalDynamicEvents };
37
+ export { useDynamicEvents, useInternalDynamicEvents };
@@ -58,3 +58,5 @@ export { useUserAuth } from './useUserAuth';
58
58
  export { useSwitchWallet } from './useSwitchWallet';
59
59
  export { useSyncEmbeddedWalletFlow } from './useSyncEmbeddedWalletFlow';
60
60
  export { useSyncOnboardingFlow } from './useSyncOnboardingFlow';
61
+ export { useExternalAuth } from './useExternalAuth';
62
+ export { useRefreshUser } from './useRefreshUser';
@@ -24,7 +24,6 @@ require('../../../context/CaptchaContext/CaptchaContext.cjs');
24
24
  require('../../../context/ErrorContext/ErrorContext.cjs');
25
25
  var errors = require('../../constants/errors.cjs');
26
26
  require('@dynamic-labs/multi-wallet');
27
- var getAuthToken = require('../../functions/getAuthToken/getAuthToken.cjs');
28
27
  require('react-international-phone');
29
28
  require('../../../config/ApiEndpoint.cjs');
30
29
  require('@dynamic-labs/store');
@@ -133,7 +132,7 @@ const useCreateDynamicEmbeddedWalletMutation = () => {
133
132
  });
134
133
  setPrimaryWalletId(smartWallet$1.id);
135
134
  }
136
- dynamicEvents.dynamicEvents.emit('embeddedWalletCreated', passkeyWallet, turnkeyVerifiedCredentials, getAuthToken.getAuthToken(), updatedUser);
135
+ dynamicEvents.dynamicEvents.emit('embeddedWalletCreated', passkeyWallet, turnkeyVerifiedCredentials, updatedUser);
137
136
  setShowAuthFlow(false, { performMultiWalletChecks: false });
138
137
  }
139
138
  catch (err) {
@@ -20,7 +20,6 @@ import '../../../context/CaptchaContext/CaptchaContext.js';
20
20
  import '../../../context/ErrorContext/ErrorContext.js';
21
21
  import { USER_NOT_LOGGED_IN } from '../../constants/errors.js';
22
22
  import '@dynamic-labs/multi-wallet';
23
- import { getAuthToken } from '../../functions/getAuthToken/getAuthToken.js';
24
23
  import 'react-international-phone';
25
24
  import '../../../config/ApiEndpoint.js';
26
25
  import '@dynamic-labs/store';
@@ -129,7 +128,7 @@ const useCreateDynamicEmbeddedWalletMutation = () => {
129
128
  });
130
129
  setPrimaryWalletId(smartWallet.id);
131
130
  }
132
- dynamicEvents.emit('embeddedWalletCreated', passkeyWallet, turnkeyVerifiedCredentials, getAuthToken(), updatedUser);
131
+ dynamicEvents.emit('embeddedWalletCreated', passkeyWallet, turnkeyVerifiedCredentials, updatedUser);
133
132
  setShowAuthFlow(false, { performMultiWalletChecks: false });
134
133
  }
135
134
  catch (err) {
@@ -14,9 +14,10 @@ require('@dynamic-labs/wallet-connector-core');
14
14
  require('react/jsx-runtime');
15
15
  require('../../../context/ViewContext/ViewContext.cjs');
16
16
  require('@dynamic-labs/wallet-book');
17
+ var localStorage$1 = require('../../constants/localStorage.cjs');
17
18
  require('../../constants/colors.cjs');
18
19
  var values = require('../../constants/values.cjs');
19
- require('../../../shared/utils/classes/storage/localStorage.cjs');
20
+ var localStorage = require('../../../shared/utils/classes/storage/localStorage.cjs');
20
21
  require('../../../shared/utils/classes/storage/sessionStorage.cjs');
21
22
  require('../../../shared/consts/index.cjs');
22
23
  require('../../../events/dynamicEvents.cjs');
@@ -102,7 +103,7 @@ var useInternalDynamicContext = require('../../../context/DynamicContext/useDyna
102
103
  * }
103
104
  */
104
105
  const useEmbeddedWallet = () => {
105
- const { user, projectSettings, primaryWalletId, setPrimaryWalletId } = useInternalDynamicContext.useInternalDynamicContext();
106
+ const { user, projectSettings, setPrimaryWalletId } = useInternalDynamicContext.useInternalDynamicContext();
106
107
  const { isTurnkeyWallet } = useIsTurnkeyWallet.useIsTurnkeyWallet();
107
108
  const { createEmbeddedWallet: createMPCWallet, canCreateMPCWallet, createPassword, revealEmbeddedWalletKey: reveaCoinbaseMPCEmbeddedWalletKey, } = useMPCEmbeddedWallet.useMPCEmbeddedWallet();
108
109
  const { createEmbeddedWallet: createTurnkeyEmbeddedWallet, createOrRestoreSession, createPasskey, revealEmbeddedWalletKey: revealTurnkeyEmbeddedWalletKey, getPasskeys, isSessionActive, sendOneTimeCode, } = useSecureEnclaveEmbeddedWallet.useSecureEnclaveEmbeddedWallet();
@@ -143,7 +144,8 @@ const useEmbeddedWallet = () => {
143
144
  var _a, _b;
144
145
  const hasEmbeddedWalletProviderEnabled = isTurnkeyEnabled.isTurnkeyEnabled(projectSettings) ||
145
146
  isCoinbaseWaasEnabled.isCoinbaseWaasEnabled(projectSettings);
146
- if (!hasEmbeddedWalletProviderEnabled || primaryWalletId) {
147
+ const hasPrimaryWallet = localStorage.LocalStorage.getFromLS(localStorage$1.PRIMARY_WALLET_ID);
148
+ if (!hasEmbeddedWalletProviderEnabled || hasPrimaryWallet) {
147
149
  return false;
148
150
  }
149
151
  // Turnkey specific rules
@@ -166,7 +168,7 @@ const useEmbeddedWallet = () => {
166
168
  return false;
167
169
  }
168
170
  return true;
169
- }, [primaryWalletId, projectSettings]);
171
+ }, [projectSettings, setPrimaryWalletId]);
170
172
  return {
171
173
  createEmbeddedWallet,
172
174
  createOrRestoreSession,
@@ -10,9 +10,10 @@ import '@dynamic-labs/wallet-connector-core';
10
10
  import 'react/jsx-runtime';
11
11
  import '../../../context/ViewContext/ViewContext.js';
12
12
  import '@dynamic-labs/wallet-book';
13
+ import { PRIMARY_WALLET_ID } from '../../constants/localStorage.js';
13
14
  import '../../constants/colors.js';
14
15
  import { ChainEnumToVerifiedCredentialName } from '../../constants/values.js';
15
- import '../../../shared/utils/classes/storage/localStorage.js';
16
+ import { LocalStorage } from '../../../shared/utils/classes/storage/localStorage.js';
16
17
  import '../../../shared/utils/classes/storage/sessionStorage.js';
17
18
  import '../../../shared/consts/index.js';
18
19
  import '../../../events/dynamicEvents.js';
@@ -98,7 +99,7 @@ import { useInternalDynamicContext } from '../../../context/DynamicContext/useDy
98
99
  * }
99
100
  */
100
101
  const useEmbeddedWallet = () => {
101
- const { user, projectSettings, primaryWalletId, setPrimaryWalletId } = useInternalDynamicContext();
102
+ const { user, projectSettings, setPrimaryWalletId } = useInternalDynamicContext();
102
103
  const { isTurnkeyWallet } = useIsTurnkeyWallet();
103
104
  const { createEmbeddedWallet: createMPCWallet, canCreateMPCWallet, createPassword, revealEmbeddedWalletKey: reveaCoinbaseMPCEmbeddedWalletKey, } = useMPCEmbeddedWallet();
104
105
  const { createEmbeddedWallet: createTurnkeyEmbeddedWallet, createOrRestoreSession, createPasskey, revealEmbeddedWalletKey: revealTurnkeyEmbeddedWalletKey, getPasskeys, isSessionActive, sendOneTimeCode, } = useSecureEnclaveEmbeddedWallet();
@@ -139,7 +140,8 @@ const useEmbeddedWallet = () => {
139
140
  var _a, _b;
140
141
  const hasEmbeddedWalletProviderEnabled = isTurnkeyEnabled(projectSettings) ||
141
142
  isCoinbaseWaasEnabled(projectSettings);
142
- if (!hasEmbeddedWalletProviderEnabled || primaryWalletId) {
143
+ const hasPrimaryWallet = LocalStorage.getFromLS(PRIMARY_WALLET_ID);
144
+ if (!hasEmbeddedWalletProviderEnabled || hasPrimaryWallet) {
143
145
  return false;
144
146
  }
145
147
  // Turnkey specific rules
@@ -162,7 +164,7 @@ const useEmbeddedWallet = () => {
162
164
  return false;
163
165
  }
164
166
  return true;
165
- }, [primaryWalletId, projectSettings]);
167
+ }, [projectSettings, setPrimaryWalletId]);
166
168
  return {
167
169
  createEmbeddedWallet,
168
170
  createOrRestoreSession,
@@ -13,7 +13,6 @@ var findEmbeddedWalletFromVerifiedCredentials = require('../../../../functions/f
13
13
  require('../../../../constants/values.cjs');
14
14
  var errors = require('../../../../constants/errors.cjs');
15
15
  require('@dynamic-labs/multi-wallet');
16
- var getAuthToken = require('../../../../functions/getAuthToken/getAuthToken.cjs');
17
16
  var logger = require('../../../../../shared/logger.cjs');
18
17
  require('@dynamic-labs/iconic');
19
18
  require('react/jsx-runtime');
@@ -171,7 +170,7 @@ const useCoinbaseMPC = () => {
171
170
  id: newSelectedCredentialWallet.id,
172
171
  key: (_c = newSelectedCredentialWallet.walletName) !== null && _c !== void 0 ? _c : connector.key,
173
172
  };
174
- dynamicEvents.dynamicEvents.emit('embeddedWalletCreated', coinbaseMPCWallet, newSelectedCredentialWallet, getAuthToken.getAuthToken(), updatedUser);
173
+ dynamicEvents.dynamicEvents.emit('embeddedWalletCreated', coinbaseMPCWallet, newSelectedCredentialWallet, updatedUser);
175
174
  return coinbaseMPCWallet;
176
175
  }
177
176
  catch (error) {
@@ -9,7 +9,6 @@ import { findEmbeddedWalletFromVerifiedCredentials } from '../../../../functions
9
9
  import '../../../../constants/values.js';
10
10
  import { USER_NOT_LOGGED_IN } from '../../../../constants/errors.js';
11
11
  import '@dynamic-labs/multi-wallet';
12
- import { getAuthToken } from '../../../../functions/getAuthToken/getAuthToken.js';
13
12
  import { logger } from '../../../../../shared/logger.js';
14
13
  import '@dynamic-labs/iconic';
15
14
  import 'react/jsx-runtime';
@@ -167,7 +166,7 @@ const useCoinbaseMPC = () => {
167
166
  id: newSelectedCredentialWallet.id,
168
167
  key: (_c = newSelectedCredentialWallet.walletName) !== null && _c !== void 0 ? _c : connector.key,
169
168
  };
170
- dynamicEvents.emit('embeddedWalletCreated', coinbaseMPCWallet, newSelectedCredentialWallet, getAuthToken(), updatedUser);
169
+ dynamicEvents.emit('embeddedWalletCreated', coinbaseMPCWallet, newSelectedCredentialWallet, updatedUser);
171
170
  return coinbaseMPCWallet;
172
171
  }
173
172
  catch (error) {
@@ -25,7 +25,6 @@ require('../../../../../context/ErrorContext/ErrorContext.cjs');
25
25
  var findEmbeddedWalletFromVerifiedCredentials = require('../../../../functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.cjs');
26
26
  var findTurnkeyWallet = require('../../../../functions/findTurnkeyWallet/findTurnkeyWallet.cjs');
27
27
  require('@dynamic-labs/multi-wallet');
28
- var getAuthToken = require('../../../../functions/getAuthToken/getAuthToken.cjs');
29
28
  require('react-international-phone');
30
29
  require('../../../../../config/ApiEndpoint.cjs');
31
30
  require('@dynamic-labs/store');
@@ -213,7 +212,7 @@ const useTurnkey = () => {
213
212
  key: (_j = embeddedWalletVerifiedCredential.walletName) !== null && _j !== void 0 ? _j : walletConnector.key,
214
213
  };
215
214
  setPrimaryWalletId(embeddedWalletVerifiedCredential.id);
216
- dynamicEvents.dynamicEvents.emit('embeddedWalletCreated', wallet, embeddedWalletVerifiedCredential, getAuthToken.getAuthToken(), user);
215
+ dynamicEvents.dynamicEvents.emit('embeddedWalletCreated', wallet, embeddedWalletVerifiedCredential, user);
217
216
  }
218
217
  }
219
218
  setShowAuthFlow(false, { performMultiWalletChecks: false });
@@ -21,7 +21,6 @@ import '../../../../../context/ErrorContext/ErrorContext.js';
21
21
  import { findEmbeddedWalletFromVerifiedCredentials } from '../../../../functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.js';
22
22
  import { findTurnkeyWalletByChain } from '../../../../functions/findTurnkeyWallet/findTurnkeyWallet.js';
23
23
  import '@dynamic-labs/multi-wallet';
24
- import { getAuthToken } from '../../../../functions/getAuthToken/getAuthToken.js';
25
24
  import 'react-international-phone';
26
25
  import '../../../../../config/ApiEndpoint.js';
27
26
  import '@dynamic-labs/store';
@@ -209,7 +208,7 @@ const useTurnkey = () => {
209
208
  key: (_j = embeddedWalletVerifiedCredential.walletName) !== null && _j !== void 0 ? _j : walletConnector.key,
210
209
  };
211
210
  setPrimaryWalletId(embeddedWalletVerifiedCredential.id);
212
- dynamicEvents.emit('embeddedWalletCreated', wallet, embeddedWalletVerifiedCredential, getAuthToken(), user);
211
+ dynamicEvents.emit('embeddedWalletCreated', wallet, embeddedWalletVerifiedCredential, user);
213
212
  }
214
213
  }
215
214
  setShowAuthFlow(false, { performMultiWalletChecks: false });
@@ -0,0 +1 @@
1
+ export * from './useExternalAuth';
@@ -0,0 +1,9 @@
1
+ import { UserProfile } from '../../../..';
2
+ type Props = {
3
+ externalUserId: string;
4
+ externalJwt?: string;
5
+ };
6
+ export declare const useExternalAuth: () => {
7
+ signInWithExternalJwt: ({ externalUserId, externalJwt, }: Props) => Promise<UserProfile | undefined>;
8
+ };
9
+ export {};
@@ -5,11 +5,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var _tslib = require('../../../../../_virtual/_tslib.cjs');
7
7
  var React = require('react');
8
- var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
9
8
  var UserWalletsContext = require('../../../context/UserWalletsContext/UserWalletsContext.cjs');
10
9
  require('@dynamic-labs/sdk-api-core');
11
10
  require('../../../shared/logger.cjs');
12
11
  require('@dynamic-labs/iconic');
12
+ 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');
@@ -96,6 +96,9 @@ const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWall
96
96
  return;
97
97
  yield wallets.unlinkWallet({
98
98
  environmentId,
99
+ onSuccess: () => {
100
+ removedWalletsIds.current.push(walletId);
101
+ },
99
102
  primaryWalletId: currentPrimaryWalletId,
100
103
  walletId,
101
104
  });
@@ -103,14 +106,8 @@ const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWall
103
106
  const numberOfLinkedWallets = verifiedCredentials.filter((account) => account.walletName === ((wallet === null || wallet === void 0 ? void 0 : wallet.connector.key) || '')).length;
104
107
  // If there's only 1, it's the one being removed and we can kill the session
105
108
  if (numberOfLinkedWallets === 1) {
106
- if (wallet && walletConnectorCore.isBitcoinConnector(wallet.connector)) {
107
- // to avoid the infinite wallet popup issue experienced with the ME wallet
108
- // we only want to clear the cached connected accounts when we unlink, but not on logout
109
- yield (wallet === null || wallet === void 0 ? void 0 : wallet.connector.clearConnectedAccounts());
110
- }
111
109
  yield (wallet === null || wallet === void 0 ? void 0 : wallet.connector.endSession());
112
110
  }
113
- removedWalletsIds.current.push(walletId);
114
111
  }), [
115
112
  primaryWalletId,
116
113
  environmentId,
@@ -1,11 +1,11 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../../../../_virtual/_tslib.js';
3
3
  import { useCallback } from 'react';
4
- import { isBitcoinConnector } from '@dynamic-labs/wallet-connector-core';
5
4
  import { useInternalUserWallets } from '../../../context/UserWalletsContext/UserWalletsContext.js';
6
5
  import '@dynamic-labs/sdk-api-core';
7
6
  import '../../../shared/logger.js';
8
7
  import '@dynamic-labs/iconic';
8
+ 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';
@@ -92,6 +92,9 @@ const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWall
92
92
  return;
93
93
  yield unlinkWallet({
94
94
  environmentId,
95
+ onSuccess: () => {
96
+ removedWalletsIds.current.push(walletId);
97
+ },
95
98
  primaryWalletId: currentPrimaryWalletId,
96
99
  walletId,
97
100
  });
@@ -99,14 +102,8 @@ const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWall
99
102
  const numberOfLinkedWallets = verifiedCredentials.filter((account) => account.walletName === ((wallet === null || wallet === void 0 ? void 0 : wallet.connector.key) || '')).length;
100
103
  // If there's only 1, it's the one being removed and we can kill the session
101
104
  if (numberOfLinkedWallets === 1) {
102
- if (wallet && isBitcoinConnector(wallet.connector)) {
103
- // to avoid the infinite wallet popup issue experienced with the ME wallet
104
- // we only want to clear the cached connected accounts when we unlink, but not on logout
105
- yield (wallet === null || wallet === void 0 ? void 0 : wallet.connector.clearConnectedAccounts());
106
- }
107
105
  yield (wallet === null || wallet === void 0 ? void 0 : wallet.connector.endSession());
108
106
  }
109
- removedWalletsIds.current.push(walletId);
110
107
  }), [
111
108
  primaryWalletId,
112
109
  environmentId,
@@ -22,7 +22,7 @@ require('../../../config/ApiEndpoint.cjs');
22
22
  require('@dynamic-labs/multi-wallet');
23
23
  require('react-international-phone');
24
24
  require('@dynamic-labs/store');
25
- require('../../../events/dynamicEvents.cjs');
25
+ var dynamicEvents = require('../../../events/dynamicEvents.cjs');
26
26
  require('../../../context/DynamicContext/DynamicContext.cjs');
27
27
  var useInternalDynamicContext = require('../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.cjs');
28
28
  require('../../../context/CaptchaContext/CaptchaContext.cjs');
@@ -79,7 +79,7 @@ require('../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCa
79
79
  var user = require('../../../data/api/user/user.cjs');
80
80
 
81
81
  const useMergeUserAccounts = () => {
82
- const { environmentId, setShowAuthFlow } = useInternalDynamicContext.useInternalDynamicContext();
82
+ const { environmentId, setShowAuthFlow, selectedWalletConnector } = useInternalDynamicContext.useInternalDynamicContext();
83
83
  const { addedWalletsIds } = UserWalletsContext.useInternalUserWallets();
84
84
  const mergeUserAccounts = (mergeConflictResolutions) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
85
85
  const user$1 = yield user.verifyMergeUsers(environmentId, mergeConflictResolutions);
@@ -87,6 +87,10 @@ const useMergeUserAccounts = () => {
87
87
  if (walletId) {
88
88
  addedWalletsIds.current.push(walletId);
89
89
  }
90
+ const accounts = yield (selectedWalletConnector === null || selectedWalletConnector === void 0 ? void 0 : selectedWalletConnector.getConnectedAccounts());
91
+ if (accounts === null || accounts === void 0 ? void 0 : accounts.length) {
92
+ dynamicEvents.dynamicEvents.emit('triggerComputePrimaryWalletMultiWalletStateFromAccounts', { accounts });
93
+ }
90
94
  setShowAuthFlow(false);
91
95
  });
92
96
  return {
@@ -18,7 +18,7 @@ import '../../../config/ApiEndpoint.js';
18
18
  import '@dynamic-labs/multi-wallet';
19
19
  import 'react-international-phone';
20
20
  import '@dynamic-labs/store';
21
- import '../../../events/dynamicEvents.js';
21
+ import { dynamicEvents } from '../../../events/dynamicEvents.js';
22
22
  import '../../../context/DynamicContext/DynamicContext.js';
23
23
  import { useInternalDynamicContext } from '../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.js';
24
24
  import '../../../context/CaptchaContext/CaptchaContext.js';
@@ -75,7 +75,7 @@ import '../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCar
75
75
  import { verifyMergeUsers } from '../../../data/api/user/user.js';
76
76
 
77
77
  const useMergeUserAccounts = () => {
78
- const { environmentId, setShowAuthFlow } = useInternalDynamicContext();
78
+ const { environmentId, setShowAuthFlow, selectedWalletConnector } = useInternalDynamicContext();
79
79
  const { addedWalletsIds } = useInternalUserWallets();
80
80
  const mergeUserAccounts = (mergeConflictResolutions) => __awaiter(void 0, void 0, void 0, function* () {
81
81
  const user = yield verifyMergeUsers(environmentId, mergeConflictResolutions);
@@ -83,6 +83,10 @@ const useMergeUserAccounts = () => {
83
83
  if (walletId) {
84
84
  addedWalletsIds.current.push(walletId);
85
85
  }
86
+ const accounts = yield (selectedWalletConnector === null || selectedWalletConnector === void 0 ? void 0 : selectedWalletConnector.getConnectedAccounts());
87
+ if (accounts === null || accounts === void 0 ? void 0 : accounts.length) {
88
+ dynamicEvents.emit('triggerComputePrimaryWalletMultiWalletStateFromAccounts', { accounts });
89
+ }
86
90
  setShowAuthFlow(false);
87
91
  });
88
92
  return {
@@ -0,0 +1 @@
1
+ export { useRefreshUser } from './useRefreshUser';
@@ -0,0 +1,90 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var React = require('react');
7
+ require('../../../context/DynamicContext/DynamicContext.cjs');
8
+ require('@dynamic-labs/sdk-api-core');
9
+ require('../../../shared/logger.cjs');
10
+ require('@dynamic-labs/iconic');
11
+ require('@dynamic-labs/wallet-connector-core');
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('../../../shared/utils/classes/storage/sessionStorage.cjs');
19
+ require('@dynamic-labs/utils');
20
+ require('../../../shared/consts/index.cjs');
21
+ require('../../../events/dynamicEvents.cjs');
22
+ require('../../../../../_virtual/_tslib.cjs');
23
+ require('../../../context/CaptchaContext/CaptchaContext.cjs');
24
+ require('../../../context/ErrorContext/ErrorContext.cjs');
25
+ require('@dynamic-labs/multi-wallet');
26
+ require('react-international-phone');
27
+ require('../../../config/ApiEndpoint.cjs');
28
+ require('@dynamic-labs/store');
29
+ require('../../../locale/locale.cjs');
30
+ var user = require('../../../data/api/user/user.cjs');
31
+ require('../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
32
+ require('../../../context/AccountExistsContext/AccountExistsContext.cjs');
33
+ require('../../../context/UserWalletsContext/UserWalletsContext.cjs');
34
+ require('../../../context/VerificationContext/VerificationContext.cjs');
35
+ require('react-dom');
36
+ require('../../../context/WalletContext/WalletContext.cjs');
37
+ require('../../../context/ThemeContext/ThemeContext.cjs');
38
+ require('../useUserUpdateRequest/useUpdateUser/userFieldsSchema.cjs');
39
+ require('@dynamic-labs/types');
40
+ require('../../../context/LoadingContext/LoadingContext.cjs');
41
+ require('yup');
42
+ require('../../../context/MockContext/MockContext.cjs');
43
+ require('../../../views/CollectUserDataView/useFields.cjs');
44
+ require('../../../context/FieldsStateContext/FieldsStateContext.cjs');
45
+ require('../../../context/UserFieldEditorContext/UserFieldEditorContext.cjs');
46
+ require('@dynamic-labs/rpc-providers');
47
+ require('react-i18next');
48
+ require('../../../components/Accordion/components/AccordionItem/AccordionItem.cjs');
49
+ require('../../../components/Alert/Alert.cjs');
50
+ require('../../../components/ShadowDOM/ShadowDOM.cjs');
51
+ require('../../../components/IconButton/IconButton.cjs');
52
+ require('../../../components/InlineWidget/InlineWidget.cjs');
53
+ require('../../../components/Input/Input.cjs');
54
+ require('../../../components/IsBrowser/IsBrowser.cjs');
55
+ require('../../../components/MenuList/Dropdown/Dropdown.cjs');
56
+ require('../../../components/Transition/ZoomTransition/ZoomTransition.cjs');
57
+ require('../../../components/Transition/SlideInUpTransition/SlideInUpTransition.cjs');
58
+ require('../../../components/Transition/OpacityTransition/OpacityTransition.cjs');
59
+ require('../../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.cjs');
60
+ require('../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.cjs');
61
+ require('../../../components/Popper/Popper/Popper.cjs');
62
+ require('../../../components/Popper/PopperContext/PopperContext.cjs');
63
+ require('react-focus-lock');
64
+ require('qrcode');
65
+ require('formik');
66
+ require('../../../views/WalletList/WalletList.cjs');
67
+ require('../../../context/SocialRedirectContext/SocialRedirectContext.cjs');
68
+ require('../../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.cjs');
69
+ require('@hcaptcha/react-hcaptcha');
70
+ require('../../../context/FooterAnimationContext/index.cjs');
71
+ require('../../../context/WalletGroupContext/WalletGroupContext.cjs');
72
+ require('../../../context/MfaSettingsContext/MfaSettingsContext.cjs');
73
+ require('../../../context/IpConfigurationContext/IpConfigurationContext.cjs');
74
+ require('../../../context/PasskeyContext/PasskeyContext.cjs');
75
+ require('../../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.cjs');
76
+ require('../../../widgets/DynamicWidget/context/DynamicWidgetContext.cjs');
77
+ require('../../../views/TransactionConfirmationView/helpers/transactionErrorMessage.cjs');
78
+ require('../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
79
+ var useInternalDynamicContext = require('../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.cjs');
80
+
81
+ /**
82
+ * Refresh user state
83
+ * @returns A callback function that can be used to refresh the user state
84
+ */
85
+ const useRefreshUser = () => {
86
+ const { environmentId } = useInternalDynamicContext.useInternalDynamicContext();
87
+ return React.useCallback(() => user.refreshUserJwt({ environmentId }), [environmentId]);
88
+ };
89
+
90
+ exports.useRefreshUser = useRefreshUser;
@@ -0,0 +1,8 @@
1
+ import { UserProfile } from '@dynamic-labs/types';
2
+ type RefreshUserCallback = () => Promise<UserProfile | undefined>;
3
+ /**
4
+ * Refresh user state
5
+ * @returns A callback function that can be used to refresh the user state
6
+ */
7
+ export declare const useRefreshUser: () => RefreshUserCallback;
8
+ export {};