@dynamic-labs/sdk-react-core 4.29.3 → 4.29.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 (120) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/package.cjs +3 -3
  3. package/package.js +3 -3
  4. package/package.json +13 -13
  5. package/src/index.cjs +10 -2
  6. package/src/index.d.ts +2 -2
  7. package/src/index.js +4 -2
  8. package/src/lib/client/extension/deprecated/mfa/verifyTotpMfaDevice/verifyTotpMfaDevice.d.ts +1 -1
  9. package/src/lib/components/EmbeddedWalletExport/EmbeddedWalletExport.cjs +83 -0
  10. package/src/lib/components/EmbeddedWalletExport/EmbeddedWalletExport.d.ts +12 -0
  11. package/src/lib/components/EmbeddedWalletExport/EmbeddedWalletExport.js +79 -0
  12. package/src/lib/components/EmbeddedWalletExport/index.d.ts +2 -0
  13. package/src/lib/components/Input/Input.cjs +1 -1
  14. package/src/lib/components/Input/Input.js +1 -1
  15. package/src/lib/components/Textarea/Textarea.cjs +1 -1
  16. package/src/lib/components/Textarea/Textarea.js +1 -1
  17. package/src/lib/components/TransactionConfirmationPageLayout/TransactionConfirmationPageLayout.cjs +3 -2
  18. package/src/lib/components/TransactionConfirmationPageLayout/TransactionConfirmationPageLayout.js +3 -2
  19. package/src/lib/components/index.d.ts +1 -0
  20. package/src/lib/context/DynamicContext/hooks/useAutoselectPrimaryWallet/useAutoselectPrimaryWallet.cjs +7 -7
  21. package/src/lib/context/DynamicContext/hooks/useAutoselectPrimaryWallet/useAutoselectPrimaryWallet.js +7 -7
  22. package/src/lib/context/SocialRedirectContext/SocialRedirectContext.cjs +7 -7
  23. package/src/lib/context/SocialRedirectContext/SocialRedirectContext.js +7 -7
  24. package/src/lib/context/ViewContext/types/index.d.ts +1 -1
  25. package/src/lib/locale/en/translation.cjs +76 -0
  26. package/src/lib/locale/en/translation.d.ts +76 -0
  27. package/src/lib/locale/en/translation.js +76 -0
  28. package/src/lib/shared/assets/index.d.ts +1 -0
  29. package/src/lib/shared/assets/sparkles.cjs +54 -0
  30. package/src/lib/shared/assets/sparkles.js +30 -0
  31. package/src/lib/shared/assets/upgrade.cjs +93 -0
  32. package/src/lib/shared/assets/upgrade.js +69 -0
  33. package/src/lib/styles/index.shadow.cjs +1 -1
  34. package/src/lib/styles/index.shadow.js +1 -1
  35. package/src/lib/utils/constants/authViewLayoutChecks.cjs +4 -0
  36. package/src/lib/utils/constants/authViewLayoutChecks.js +4 -0
  37. package/src/lib/utils/functions/exportWalletCredential/exportWalletCredential.cjs +57 -0
  38. package/src/lib/utils/functions/exportWalletCredential/exportWalletCredential.d.ts +13 -0
  39. package/src/lib/utils/functions/exportWalletCredential/exportWalletCredential.js +53 -0
  40. package/src/lib/utils/functions/exportWalletCredential/index.d.ts +2 -0
  41. package/src/lib/utils/functions/findPrimaryWalletVCForUser/findPrimaryWalletVCForUser.cjs +57 -0
  42. package/src/lib/utils/functions/findPrimaryWalletVCForUser/findPrimaryWalletVCForUser.d.ts +11 -0
  43. package/src/lib/utils/functions/findPrimaryWalletVCForUser/findPrimaryWalletVCForUser.js +53 -0
  44. package/src/lib/utils/functions/findPrimaryWalletVCForUser/index.d.ts +1 -0
  45. package/src/lib/utils/functions/index.d.ts +1 -0
  46. package/src/lib/utils/hooks/index.d.ts +2 -0
  47. package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.cjs +3 -3
  48. package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.js +3 -3
  49. package/src/lib/utils/hooks/useDeletePasskey/index.d.ts +1 -0
  50. package/src/lib/utils/hooks/useDeletePasskey/useDeletePasskey.cjs +33 -0
  51. package/src/lib/utils/hooks/useDeletePasskey/useDeletePasskey.d.ts +22 -0
  52. package/src/lib/utils/hooks/useDeletePasskey/useDeletePasskey.js +29 -0
  53. package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.cjs +23 -23
  54. package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.d.ts +5 -4
  55. package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.js +24 -24
  56. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.cjs +25 -36
  57. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.js +26 -37
  58. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.cjs +2 -2
  59. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.js +2 -2
  60. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useTurnkey/useTurnkey.cjs +4 -4
  61. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useTurnkey/useTurnkey.js +4 -4
  62. package/src/lib/utils/hooks/useGetMfaToken/useGetMfaToken.cjs +39 -19
  63. package/src/lib/utils/hooks/useGetMfaToken/useGetMfaToken.js +39 -19
  64. package/src/lib/utils/hooks/useRefreshUser/useRefreshUser.cjs +11 -5
  65. package/src/lib/utils/hooks/useRefreshUser/useRefreshUser.js +11 -5
  66. package/src/lib/utils/hooks/useRefreshUserState/useRefreshUserState.cjs +2 -2
  67. package/src/lib/utils/hooks/useRefreshUserState/useRefreshUserState.js +2 -2
  68. package/src/lib/utils/hooks/useSetWalletConnectorFetchers/useSetWalletConnectorFetchers.cjs +1 -1
  69. package/src/lib/utils/hooks/useSetWalletConnectorFetchers/useSetWalletConnectorFetchers.js +1 -1
  70. package/src/lib/utils/hooks/useSmartWallets/useSmartWallets.cjs +1 -1
  71. package/src/lib/utils/hooks/useSmartWallets/useSmartWallets.js +1 -1
  72. package/src/lib/utils/hooks/useSyncDynamicWaas/useSyncDynamicWaas.cjs +1 -1
  73. package/src/lib/utils/hooks/useSyncDynamicWaas/useSyncDynamicWaas.js +1 -1
  74. package/src/lib/utils/hooks/useTokenBalances/useTokenBalances.cjs +5 -4
  75. package/src/lib/utils/hooks/useTokenBalances/useTokenBalances.js +5 -4
  76. package/src/lib/utils/hooks/useTransferWallet/useTransferWallet.cjs +3 -3
  77. package/src/lib/utils/hooks/useTransferWallet/useTransferWallet.js +3 -3
  78. package/src/lib/utils/hooks/useUpgradeEmbeddedWallet/useUpgradeEmbeddedWallet.cjs +3 -3
  79. package/src/lib/utils/hooks/useUpgradeEmbeddedWallet/useUpgradeEmbeddedWallet.js +3 -3
  80. package/src/lib/utils/hooks/useUpgradeToDynamicWaasFlow/index.d.ts +1 -0
  81. package/src/lib/utils/hooks/useUpgradeToDynamicWaasFlow/useUpgradeToDynamicWaasFlow.cjs +124 -0
  82. package/src/lib/utils/hooks/useUpgradeToDynamicWaasFlow/useUpgradeToDynamicWaasFlow.d.ts +7 -0
  83. package/src/lib/utils/hooks/useUpgradeToDynamicWaasFlow/useUpgradeToDynamicWaasFlow.js +120 -0
  84. package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.cjs +3 -3
  85. package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.js +3 -3
  86. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.cjs +6 -0
  87. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.js +6 -0
  88. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.cjs +6 -0
  89. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.js +6 -0
  90. package/src/lib/utils/hooks/useWalletOptions/useWalletOptions.cjs +44 -31
  91. package/src/lib/utils/hooks/useWalletOptions/useWalletOptions.d.ts +1 -1
  92. package/src/lib/utils/hooks/useWalletOptions/useWalletOptions.js +44 -31
  93. package/src/lib/views/AccountUpgradedView/AccountUpgradedView.cjs +124 -0
  94. package/src/lib/views/AccountUpgradedView/AccountUpgradedView.d.ts +2 -0
  95. package/src/lib/views/AccountUpgradedView/AccountUpgradedView.js +120 -0
  96. package/src/lib/views/AccountUpgradedView/index.d.ts +1 -0
  97. package/src/lib/views/EmailVerification/EmailVerification.cjs +3 -3
  98. package/src/lib/views/EmailVerification/EmailVerification.js +3 -3
  99. package/src/lib/views/EmbeddedReveal/EmbeddedRevealView/EmbeddedRevealView.cjs +17 -139
  100. package/src/lib/views/EmbeddedReveal/EmbeddedRevealView/EmbeddedRevealView.js +20 -142
  101. package/src/lib/views/TransactionConfirmationView/helpers/transactionErrorMessage.cjs +15 -0
  102. package/src/lib/views/TransactionConfirmationView/helpers/transactionErrorMessage.d.ts +2 -0
  103. package/src/lib/views/TransactionConfirmationView/helpers/transactionErrorMessage.js +14 -1
  104. package/src/lib/views/WaasUpgradeView/WaasUpgradeView.cjs +159 -0
  105. package/src/lib/views/WaasUpgradeView/WaasUpgradeView.d.ts +5 -0
  106. package/src/lib/views/WaasUpgradeView/WaasUpgradeView.js +155 -0
  107. package/src/lib/views/WaasUpgradeView/index.d.ts +2 -0
  108. package/src/lib/views/WalletUpgradeFlowView/WalletUpgradeFlowView.cjs +203 -0
  109. package/src/lib/views/WalletUpgradeFlowView/WalletUpgradeFlowView.d.ts +9 -0
  110. package/src/lib/views/WalletUpgradeFlowView/WalletUpgradeFlowView.js +199 -0
  111. package/src/lib/views/WalletUpgradeFlowView/index.d.ts +1 -0
  112. package/src/lib/views/viewToComponentMap.cjs +6 -0
  113. package/src/lib/views/viewToComponentMap.d.ts +3 -0
  114. package/src/lib/views/viewToComponentMap.js +6 -0
  115. package/src/lib/widgets/DynamicWidget/components/EmailOTPConnectorPendingSignModalContent/EmailOTPConnectorPendingSignModalContent.cjs +3 -3
  116. package/src/lib/widgets/DynamicWidget/components/EmailOTPConnectorPendingSignModalContent/EmailOTPConnectorPendingSignModalContent.js +3 -3
  117. package/src/lib/widgets/DynamicWidget/components/PasskeyCard/PasskeyCard.cjs +12 -1
  118. package/src/lib/widgets/DynamicWidget/components/PasskeyCard/PasskeyCard.js +12 -1
  119. package/src/lib/widgets/DynamicWidget/views/ManagePasskeysMfaWidgetView/ManagePasskeysMfaWidgetView.cjs +10 -1
  120. package/src/lib/widgets/DynamicWidget/views/ManagePasskeysMfaWidgetView/ManagePasskeysMfaWidgetView.js +10 -1
@@ -1,6 +1,6 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../../../../_virtual/_tslib.js';
3
- import { useCallback, useMemo } from 'react';
3
+ import { useRef, useCallback, useMemo } from 'react';
4
4
  import { EmbeddedWalletVersionEnum, JwtVerifiedCredentialFormatEnum, WalletProviderEnum } from '@dynamic-labs/sdk-api-core';
5
5
  import { DynamicError } from '@dynamic-labs/utils';
6
6
  import { logger } from '@dynamic-labs/wallet-connector-core';
@@ -27,6 +27,8 @@ import '../../../store/state/connectedWalletsInfo/connectedWalletsInfo.js';
27
27
  import { useApiBaseUrl, useEnvironmentId } from '../../../store/state/dynamicContextProps/dynamicContextProps.js';
28
28
  import '../../../store/state/primaryWalletId/primaryWalletId.js';
29
29
  import { useProjectSettings } from '../../../store/state/projectSettings/projectSettings.js';
30
+ import '../../../locale/locale.js';
31
+ import { softDeleteEmbeddedWallet, restoreEmbeddedWallet } from '../../../data/api/wallets/wallets.js';
30
32
  import { useOnboardingCompleteUserProfile } from '../../../client/extension/user/useOnboardingCompleteUser/useOnboardingCompleteUser.js';
31
33
  import '../../../context/DynamicContext/DynamicContext.js';
32
34
  import '../../../store/state/loadingAndLifecycle/loadingAndLifecycle.js';
@@ -35,8 +37,6 @@ import '../../../context/ErrorContext/ErrorContext.js';
35
37
  import '../../../context/AccessDeniedContext/AccessDeniedContext.js';
36
38
  import '../../../context/AccountExistsContext/AccountExistsContext.js';
37
39
  import { useInternalUserWallets } from '../../../context/UserWalletsContext/UserWalletsContext.js';
38
- import '../../../locale/locale.js';
39
- import { softDeleteEmbeddedWallet, restoreEmbeddedWallet } from '../../../data/api/wallets/wallets.js';
40
40
  import '../../../store/state/authMode/authMode.js';
41
41
  import '../../../context/VerificationContext/VerificationContext.js';
42
42
  import 'react-dom';
@@ -92,6 +92,11 @@ import '../../../context/FooterAnimationContext/index.js';
92
92
  import '../../../views/MfaChooseDeviceView/getMfaOptions/getMfaOptions.js';
93
93
  import '../../../context/PasskeyContext/PasskeyContext.js';
94
94
  import '../../../context/OnrampContext/OnrampContext.js';
95
+ import { DEFAULT_WAAS_API_URL } from '../../constants/waas/apiUrl.js';
96
+ import { useClientSessionKeys } from '../useClientSessionKeys/useClientSessionKeys.js';
97
+ import { useRefreshUser } from '../useRefreshUser/useRefreshUser.js';
98
+ import { useGetMfaToken } from '../useGetMfaToken/useGetMfaToken.js';
99
+ import { DYNAMIC_WAAS_CONNECTOR_NOT_FOUND_ERROR, NO_ENABLED_CHAINS_ERROR, INVALID_CHAINS_ERROR, WALLET_CREATION_FAILED_ERROR } from './constants.js';
95
100
  import '../../../store/state/sendBalances.js';
96
101
  import '../../../store/state/connectorsInitializing/connectorsInitializing.js';
97
102
  import '../../../components/OverlayCardBase/OverlayCardTarget/OverlayCardTarget.js';
@@ -100,11 +105,6 @@ import '../../../views/TransactionConfirmationView/TransactionConfirmationView.j
100
105
  import '../../../widgets/DynamicWidget/components/PasskeyCard/PasskeyCard.js';
101
106
  import '../../../../index.js';
102
107
  import '../../../widgets/DynamicWidget/views/ReceiveWalletFunds/ReceiveWalletFunds.js';
103
- import { DEFAULT_WAAS_API_URL } from '../../constants/waas/apiUrl.js';
104
- import { useClientSessionKeys } from '../useClientSessionKeys/useClientSessionKeys.js';
105
- import { useRefreshUser } from '../useRefreshUser/useRefreshUser.js';
106
- import { useGetMfaToken } from '../useGetMfaToken/useGetMfaToken.js';
107
- import { DYNAMIC_WAAS_CONNECTOR_NOT_FOUND_ERROR, NO_ENABLED_CHAINS_ERROR, INVALID_CHAINS_ERROR, WALLET_CREATION_FAILED_ERROR } from './constants.js';
108
108
  import '../../../store/state/tokenBalances.js';
109
109
  import '../../../store/state/multichainBalances.js';
110
110
  import '../../../shared/utils/functions/getInitialUrl/getInitialUrl.js';
@@ -151,6 +151,7 @@ const useDynamicWaas = () => {
151
151
  const { getSignedSessionId } = useClientSessionKeys();
152
152
  const getMfaToken = useGetMfaToken();
153
153
  const isCookieAuthEnabled = projectSettings && isCookieEnabled(projectSettings);
154
+ const isUpgrading = useRef(false);
154
155
  const getWalletConnector = useCallback((chainName) => {
155
156
  var _a;
156
157
  if (!isCookieAuthEnabled && !authToken) {
@@ -186,6 +187,9 @@ const useDynamicWaas = () => {
186
187
  // If no chain names are provided, filter out chains that already have a wallet
187
188
  // and make a wallet for each enabled chain
188
189
  const createWalletAccount = useCallback((chainNames, password) => __awaiter(void 0, void 0, void 0, function* () {
190
+ if (isUpgrading.current) {
191
+ return;
192
+ }
189
193
  if (!(enabledChainNames === null || enabledChainNames === void 0 ? void 0 : enabledChainNames.length)) {
190
194
  throw new DynamicError(NO_ENABLED_CHAINS_ERROR);
191
195
  }
@@ -268,15 +272,7 @@ const useDynamicWaas = () => {
268
272
  }
269
273
  setShowAuthFlow(false, { performMultiWalletChecks: false }); // close email otp pin modal
270
274
  return createdWalletAccounts;
271
- }), [
272
- getWalletConnector,
273
- primaryChain,
274
- enabledChainNames,
275
- refresh,
276
- setShowAuthFlow,
277
- user === null || user === void 0 ? void 0 : user.verifiedCredentials,
278
- addedWalletsIds,
279
- ]);
275
+ }), [getWalletConnector, primaryChain, enabledChainNames, setShowAuthFlow]);
280
276
  const needsAutoCreateWalletChains = useMemo(() => {
281
277
  if (!user ||
282
278
  !dynamicWaasIsEnabled ||
@@ -316,41 +312,45 @@ const useDynamicWaas = () => {
316
312
  });
317
313
  yield refresh();
318
314
  });
319
- const upgradeToDynamicWaas = useCallback((_e) => __awaiter(void 0, [_e], void 0, function* ({ privateKey }) {
315
+ const upgradeToDynamicWaas = useCallback((_e) => __awaiter(void 0, [_e], void 0, function* ({ privateKey, wallet, }) {
316
+ isUpgrading.current = true;
320
317
  if (!primaryWallet) {
321
318
  throw new DynamicError('Primary wallet not found');
322
319
  }
323
- const chainName = primaryWallet.chain;
324
- const walletId = primaryWallet.id;
320
+ const chainName = wallet.chain;
321
+ const walletId = wallet.id;
325
322
  const walletConnector = getWalletConnector(chainName);
326
323
  if (!walletConnector) {
327
324
  throw new DynamicError('Wallet connector not found');
328
325
  }
329
326
  let softDeleteSucceeded = false;
327
+ // 7702 wallets have a -zerodev suffix because it's a credential created on the fly
328
+ const normalizedWalletId = (walletId === null || walletId === void 0 ? void 0 : walletId.replace('-zerodev', '')) || walletId;
330
329
  try {
331
330
  yield softDeleteEmbeddedWallet({
332
331
  environmentId,
333
- walletId,
332
+ walletId: normalizedWalletId,
334
333
  });
335
334
  softDeleteSucceeded = true;
336
335
  yield walletConnector.importPrivateKey({
337
336
  chainName,
338
337
  privateKey,
339
338
  });
340
- yield refresh();
339
+ isUpgrading.current = false;
341
340
  }
342
341
  catch (error) {
343
342
  // If soft delete succeeded but import failed, try to restore the wallet
344
343
  if (softDeleteSucceeded) {
345
344
  yield restoreEmbeddedWallet({
346
345
  environmentId,
347
- walletId,
346
+ walletId: normalizedWalletId,
348
347
  });
349
348
  yield refresh();
350
349
  }
350
+ isUpgrading.current = false;
351
351
  throw error instanceof DynamicError
352
352
  ? error
353
- : new DynamicError('Upgrade failed');
353
+ : new DynamicError('Upgrade failed, please try again.');
354
354
  }
355
355
  }), [environmentId, getWalletConnector, primaryWallet, refresh]);
356
356
  const delegateKeyShares = useCallback((_f) => __awaiter(void 0, [_f], void 0, function* ({ chainName, accountAddress, }) {
@@ -8,22 +8,23 @@ var React = require('react');
8
8
  var sdkApiCore = require('@dynamic-labs/sdk-api-core');
9
9
  var utils = require('@dynamic-labs/utils');
10
10
  var client = require('../../../client/client.cjs');
11
- require('@dynamic-labs-sdk/client/core');
12
- require('@dynamic-labs-sdk/client');
13
- require('../../../config/ApiEndpoint.cjs');
14
- var findEmbeddedWalletFromVerifiedCredentials = require('../../functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.cjs');
15
- require('../../constants/values.cjs');
16
- var errors = require('../../constants/errors.cjs');
17
- require('@dynamic-labs/multi-wallet');
11
+ require('../../../context/DynamicContext/DynamicContext.cjs');
12
+ require('../../../store/state/loadingAndLifecycle/loadingAndLifecycle.cjs');
18
13
  require('../../../shared/logger.cjs');
19
- require('../../constants/colors.cjs');
20
- require('react-international-phone');
21
14
  require('@dynamic-labs/iconic');
22
15
  require('@dynamic-labs/wallet-connector-core');
23
16
  require('react/jsx-runtime');
24
17
  require('../../../context/ViewContext/ViewContext.cjs');
25
18
  require('@dynamic-labs/wallet-book');
19
+ require('../../constants/colors.cjs');
20
+ require('../../constants/values.cjs');
26
21
  require('../../../shared/consts/index.cjs');
22
+ require('../../../events/dynamicEvents.cjs');
23
+ require('../../../context/CaptchaContext/CaptchaContext.cjs');
24
+ require('../../../context/ErrorContext/ErrorContext.cjs');
25
+ var errors = require('../../constants/errors.cjs');
26
+ require('@dynamic-labs/multi-wallet');
27
+ require('react-international-phone');
27
28
  require('../../../store/state/nonce/nonce.cjs');
28
29
  var isTurnkeyEnabled = require('../../functions/isTurnkeyEnabled/isTurnkeyEnabled.cjs');
29
30
  var hasEmbeddedWallet = require('../../functions/hasEmbeddedWallet/hasEmbeddedWallet.cjs');
@@ -31,22 +32,19 @@ var updatePrimaryWalletId = require('../../functions/updatePrimaryWalletId/updat
31
32
  require('../../../store/state/connectedWalletsInfo/connectedWalletsInfo.cjs');
32
33
  require('../../../store/state/dynamicContextProps/dynamicContextProps.cjs');
33
34
  var primaryWalletId = require('../../../store/state/primaryWalletId/primaryWalletId.cjs');
34
- require('../../../events/dynamicEvents.cjs');
35
+ require('@dynamic-labs-sdk/client/core');
36
+ require('@dynamic-labs-sdk/client');
37
+ require('../../../config/ApiEndpoint.cjs');
35
38
  require('../../../store/state/projectSettings/projectSettings.cjs');
36
- var convertSdkUserToUserProfile = require('../../../client/extension/user/convertSdkUserToUserProfile/convertSdkUserToUserProfile.cjs');
37
- require('../../../context/DynamicContext/DynamicContext.cjs');
38
- require('../../../store/state/loadingAndLifecycle/loadingAndLifecycle.cjs');
39
- require('../../../context/CaptchaContext/CaptchaContext.cjs');
40
- require('../../../context/ErrorContext/ErrorContext.cjs');
39
+ require('../../../locale/locale.cjs');
41
40
  require('../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
42
41
  require('../../../context/AccountExistsContext/AccountExistsContext.cjs');
43
42
  require('../../../context/UserWalletsContext/UserWalletsContext.cjs');
44
- require('../../../locale/locale.cjs');
45
43
  require('../../../store/state/authMode/authMode.cjs');
46
44
  require('../../../context/VerificationContext/VerificationContext.cjs');
47
45
  require('react-dom');
48
46
  require('../../functions/compareChains/compareChains.cjs');
49
- var findPrimaryEmbeddedChain = require('../../../views/Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.cjs');
47
+ require('../../../views/Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.cjs');
50
48
  require('../../../context/ThemeContext/ThemeContext.cjs');
51
49
  require('../useUserUpdateRequest/useUpdateUser/userFieldsSchema.cjs');
52
50
  var useIsTurnkeyWallet = require('../useIsTurnkeyWallet/useIsTurnkeyWallet.cjs');
@@ -55,6 +53,7 @@ require('@dynamic-labs/types');
55
53
  require('../../../context/SocialRedirectContext/SocialRedirectContext.cjs');
56
54
  require('../../../context/LoadingContext/LoadingContext.cjs');
57
55
  var WalletContext = require('../../../context/WalletContext/WalletContext.cjs');
56
+ var findPrimaryWalletVCForUser = require('../../functions/findPrimaryWalletVCForUser/findPrimaryWalletVCForUser.cjs');
58
57
  var useSecureEnclaveEmbeddedWallet = require('./useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.cjs');
59
58
  require('./useSecureEnclaveEmbeddedWallet/constants.cjs');
60
59
  require('yup');
@@ -168,22 +167,7 @@ const useEmbeddedWallet = () => {
168
167
  });
169
168
  const shouldPromptForKeyExport = React.useCallback(() => { var _a; return Boolean((_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _a === void 0 ? void 0 : _a.promptForKeyExport); }, [projectSettings]);
170
169
  const embeddedWalletSettingVersion = React.useCallback(() => { var _a; return (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _a === void 0 ? void 0 : _a.defaultWalletVersion; }, [projectSettings]);
171
- const setPrimaryWalletIdIfAvailable = React.useCallback((user) => {
172
- var _a, _b, _c;
173
- if (!user)
174
- return false;
175
- const primaryEmbeddedChain = findPrimaryEmbeddedChain.findPrimaryEmbeddedChain(projectSettings);
176
- const embeddedWalletVerifiedCredentialId = (_a = findEmbeddedWalletFromVerifiedCredentials.findEmbeddedWalletFromVerifiedCredentials(convertSdkUserToUserProfile.convertSdkUserToUserProfile(user), [primaryEmbeddedChain])) === null || _a === void 0 ? void 0 : _a.id;
177
- const AAWalletCredentialId = (_c = (_b = user.verifiedCredentials) === null || _b === void 0 ? void 0 : _b.find((vc) => vc.walletProvider === sdkApiCore.WalletProviderEnum.SmartContractWallet)) === null || _c === void 0 ? void 0 : _c.id;
178
- const targetPrimaryWalletId = AAWalletCredentialId
179
- ? AAWalletCredentialId
180
- : embeddedWalletVerifiedCredentialId;
181
- if (targetPrimaryWalletId) {
182
- updatePrimaryWalletId.updatePrimaryWalletId(targetPrimaryWalletId);
183
- return true;
184
- }
185
- return false;
186
- }, [projectSettings]);
170
+ const findPrimaryWalletVCForUserCallback = React.useCallback((user) => findPrimaryWalletVCForUser.findPrimaryWalletVCForUser(user, projectSettings, true), [projectSettings]);
187
171
  const shouldAutoCreateEmbeddedWallet = React.useCallback(() => {
188
172
  var _a, _b;
189
173
  const hasEmbeddedWalletProviderEnabled = isTurnkeyEnabled.isTurnkeyEnabled(projectSettings);
@@ -191,7 +175,10 @@ const useEmbeddedWallet = () => {
191
175
  const hasPrimaryWallet = primaryWalletId.getPrimaryWalletId();
192
176
  // If V3 wallets are enabled, never create V1/V2 wallets - they should be handled by WAAS flow
193
177
  if (embeddedWalletSettingVersion() === sdkApiCore.EmbeddedWalletVersionEnum.V3) {
194
- !primaryWalletId.getPrimaryWalletId() && setPrimaryWalletIdIfAvailable(user);
178
+ const primaryWalletVC = findPrimaryWalletVCForUserCallback(user);
179
+ if (primaryWalletVC && !hasPrimaryWallet) {
180
+ updatePrimaryWalletId.updatePrimaryWalletId(primaryWalletVC.id);
181
+ }
195
182
  return false;
196
183
  }
197
184
  if (!hasEmbeddedWalletProviderEnabled || hasPrimaryWallet) {
@@ -199,7 +186,9 @@ const useEmbeddedWallet = () => {
199
186
  }
200
187
  // Turnkey and WAAS specific rules
201
188
  if (user) {
202
- if (setPrimaryWalletIdIfAvailable(user)) {
189
+ const primaryWalletVC = findPrimaryWalletVCForUserCallback(user);
190
+ if (primaryWalletVC) {
191
+ updatePrimaryWalletId.updatePrimaryWalletId(primaryWalletVC.id);
203
192
  return false;
204
193
  }
205
194
  }
@@ -211,7 +200,7 @@ const useEmbeddedWallet = () => {
211
200
  }, [
212
201
  projectSettings,
213
202
  embeddedWalletSettingVersion,
214
- setPrimaryWalletIdIfAvailable,
203
+ findPrimaryWalletVCForUserCallback,
215
204
  ]);
216
205
  return {
217
206
  createEmbeddedWallet,
@@ -1,25 +1,26 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../../../../_virtual/_tslib.js';
3
3
  import { useCallback } from 'react';
4
- import { WalletProviderEnum, EmbeddedWalletVersionEnum } from '@dynamic-labs/sdk-api-core';
4
+ import { EmbeddedWalletVersionEnum } from '@dynamic-labs/sdk-api-core';
5
5
  import { DynamicError } from '@dynamic-labs/utils';
6
6
  import { getDynamicClient } from '../../../client/client.js';
7
- import '@dynamic-labs-sdk/client/core';
8
- import '@dynamic-labs-sdk/client';
9
- import '../../../config/ApiEndpoint.js';
10
- import { findEmbeddedWalletFromVerifiedCredentials } from '../../functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.js';
11
- import '../../constants/values.js';
12
- import { USER_NOT_LOGGED_IN } from '../../constants/errors.js';
13
- import '@dynamic-labs/multi-wallet';
7
+ import '../../../context/DynamicContext/DynamicContext.js';
8
+ import '../../../store/state/loadingAndLifecycle/loadingAndLifecycle.js';
14
9
  import '../../../shared/logger.js';
15
- import '../../constants/colors.js';
16
- import 'react-international-phone';
17
10
  import '@dynamic-labs/iconic';
18
11
  import '@dynamic-labs/wallet-connector-core';
19
12
  import 'react/jsx-runtime';
20
13
  import '../../../context/ViewContext/ViewContext.js';
21
14
  import '@dynamic-labs/wallet-book';
15
+ import '../../constants/colors.js';
16
+ import '../../constants/values.js';
22
17
  import '../../../shared/consts/index.js';
18
+ import '../../../events/dynamicEvents.js';
19
+ import '../../../context/CaptchaContext/CaptchaContext.js';
20
+ import '../../../context/ErrorContext/ErrorContext.js';
21
+ import { USER_NOT_LOGGED_IN } from '../../constants/errors.js';
22
+ import '@dynamic-labs/multi-wallet';
23
+ import 'react-international-phone';
23
24
  import '../../../store/state/nonce/nonce.js';
24
25
  import { isTurnkeyEnabled } from '../../functions/isTurnkeyEnabled/isTurnkeyEnabled.js';
25
26
  import { hasEmbeddedWallet } from '../../functions/hasEmbeddedWallet/hasEmbeddedWallet.js';
@@ -27,22 +28,19 @@ import { updatePrimaryWalletId } from '../../functions/updatePrimaryWalletId/upd
27
28
  import '../../../store/state/connectedWalletsInfo/connectedWalletsInfo.js';
28
29
  import '../../../store/state/dynamicContextProps/dynamicContextProps.js';
29
30
  import { getPrimaryWalletId } from '../../../store/state/primaryWalletId/primaryWalletId.js';
30
- import '../../../events/dynamicEvents.js';
31
+ import '@dynamic-labs-sdk/client/core';
32
+ import '@dynamic-labs-sdk/client';
33
+ import '../../../config/ApiEndpoint.js';
31
34
  import '../../../store/state/projectSettings/projectSettings.js';
32
- import { convertSdkUserToUserProfile } from '../../../client/extension/user/convertSdkUserToUserProfile/convertSdkUserToUserProfile.js';
33
- import '../../../context/DynamicContext/DynamicContext.js';
34
- import '../../../store/state/loadingAndLifecycle/loadingAndLifecycle.js';
35
- import '../../../context/CaptchaContext/CaptchaContext.js';
36
- import '../../../context/ErrorContext/ErrorContext.js';
35
+ import '../../../locale/locale.js';
37
36
  import '../../../context/AccessDeniedContext/AccessDeniedContext.js';
38
37
  import '../../../context/AccountExistsContext/AccountExistsContext.js';
39
38
  import '../../../context/UserWalletsContext/UserWalletsContext.js';
40
- import '../../../locale/locale.js';
41
39
  import '../../../store/state/authMode/authMode.js';
42
40
  import '../../../context/VerificationContext/VerificationContext.js';
43
41
  import 'react-dom';
44
42
  import '../../functions/compareChains/compareChains.js';
45
- import { findPrimaryEmbeddedChain } from '../../../views/Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.js';
43
+ import '../../../views/Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.js';
46
44
  import '../../../context/ThemeContext/ThemeContext.js';
47
45
  import '../useUserUpdateRequest/useUpdateUser/userFieldsSchema.js';
48
46
  import { useIsTurnkeyWallet } from '../useIsTurnkeyWallet/useIsTurnkeyWallet.js';
@@ -51,6 +49,7 @@ import '@dynamic-labs/types';
51
49
  import '../../../context/SocialRedirectContext/SocialRedirectContext.js';
52
50
  import '../../../context/LoadingContext/LoadingContext.js';
53
51
  import { useWalletContext } from '../../../context/WalletContext/WalletContext.js';
52
+ import { findPrimaryWalletVCForUser } from '../../functions/findPrimaryWalletVCForUser/findPrimaryWalletVCForUser.js';
54
53
  import { useSecureEnclaveEmbeddedWallet } from './useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.js';
55
54
  import './useSecureEnclaveEmbeddedWallet/constants.js';
56
55
  import 'yup';
@@ -164,22 +163,7 @@ const useEmbeddedWallet = () => {
164
163
  });
165
164
  const shouldPromptForKeyExport = useCallback(() => { var _a; return Boolean((_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _a === void 0 ? void 0 : _a.promptForKeyExport); }, [projectSettings]);
166
165
  const embeddedWalletSettingVersion = useCallback(() => { var _a; return (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _a === void 0 ? void 0 : _a.defaultWalletVersion; }, [projectSettings]);
167
- const setPrimaryWalletIdIfAvailable = useCallback((user) => {
168
- var _a, _b, _c;
169
- if (!user)
170
- return false;
171
- const primaryEmbeddedChain = findPrimaryEmbeddedChain(projectSettings);
172
- const embeddedWalletVerifiedCredentialId = (_a = findEmbeddedWalletFromVerifiedCredentials(convertSdkUserToUserProfile(user), [primaryEmbeddedChain])) === null || _a === void 0 ? void 0 : _a.id;
173
- const AAWalletCredentialId = (_c = (_b = user.verifiedCredentials) === null || _b === void 0 ? void 0 : _b.find((vc) => vc.walletProvider === WalletProviderEnum.SmartContractWallet)) === null || _c === void 0 ? void 0 : _c.id;
174
- const targetPrimaryWalletId = AAWalletCredentialId
175
- ? AAWalletCredentialId
176
- : embeddedWalletVerifiedCredentialId;
177
- if (targetPrimaryWalletId) {
178
- updatePrimaryWalletId(targetPrimaryWalletId);
179
- return true;
180
- }
181
- return false;
182
- }, [projectSettings]);
166
+ const findPrimaryWalletVCForUserCallback = useCallback((user) => findPrimaryWalletVCForUser(user, projectSettings, true), [projectSettings]);
183
167
  const shouldAutoCreateEmbeddedWallet = useCallback(() => {
184
168
  var _a, _b;
185
169
  const hasEmbeddedWalletProviderEnabled = isTurnkeyEnabled(projectSettings);
@@ -187,7 +171,10 @@ const useEmbeddedWallet = () => {
187
171
  const hasPrimaryWallet = getPrimaryWalletId();
188
172
  // If V3 wallets are enabled, never create V1/V2 wallets - they should be handled by WAAS flow
189
173
  if (embeddedWalletSettingVersion() === EmbeddedWalletVersionEnum.V3) {
190
- !getPrimaryWalletId() && setPrimaryWalletIdIfAvailable(user);
174
+ const primaryWalletVC = findPrimaryWalletVCForUserCallback(user);
175
+ if (primaryWalletVC && !hasPrimaryWallet) {
176
+ updatePrimaryWalletId(primaryWalletVC.id);
177
+ }
191
178
  return false;
192
179
  }
193
180
  if (!hasEmbeddedWalletProviderEnabled || hasPrimaryWallet) {
@@ -195,7 +182,9 @@ const useEmbeddedWallet = () => {
195
182
  }
196
183
  // Turnkey and WAAS specific rules
197
184
  if (user) {
198
- if (setPrimaryWalletIdIfAvailable(user)) {
185
+ const primaryWalletVC = findPrimaryWalletVCForUserCallback(user);
186
+ if (primaryWalletVC) {
187
+ updatePrimaryWalletId(primaryWalletVC.id);
199
188
  return false;
200
189
  }
201
190
  }
@@ -207,7 +196,7 @@ const useEmbeddedWallet = () => {
207
196
  }, [
208
197
  projectSettings,
209
198
  embeddedWalletSettingVersion,
210
- setPrimaryWalletIdIfAvailable,
199
+ findPrimaryWalletVCForUserCallback,
211
200
  ]);
212
201
  return {
213
202
  createEmbeddedWallet,
@@ -44,11 +44,12 @@ var user = require('../../../../data/api/user/user.cjs');
44
44
  require('../../../../store/state/dynamicContextProps/dynamicContextProps.cjs');
45
45
  require('../../../../store/state/primaryWalletId/primaryWalletId.cjs');
46
46
  require('../../../../store/state/connectedWalletsInfo/connectedWalletsInfo.cjs');
47
+ var turnkeyExport = require('../../../../views/EmbeddedReveal/utils/turnkeyExport/turnkeyExport.cjs');
48
+ var errors = require('../../../constants/errors.cjs');
47
49
  require('../../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
48
50
  require('../../../../context/AccountExistsContext/AccountExistsContext.cjs');
49
51
  var UserWalletsContext = require('../../../../context/UserWalletsContext/UserWalletsContext.cjs');
50
52
  require('../../../../store/state/authMode/authMode.cjs');
51
- var errors = require('../../../constants/errors.cjs');
52
53
  require('../../../../context/VerificationContext/VerificationContext.cjs');
53
54
  require('react-dom');
54
55
  var useElementById = require('../../useElementById/useElementById.cjs');
@@ -65,7 +66,6 @@ require('../../../../context/SocialRedirectContext/SocialRedirectContext.cjs');
65
66
  require('../../../../context/LoadingContext/LoadingContext.cjs');
66
67
  var WalletContext = require('../../../../context/WalletContext/WalletContext.cjs');
67
68
  var useIsTurnkeyWallet = require('../../useIsTurnkeyWallet/useIsTurnkeyWallet.cjs');
68
- var turnkeyExport = require('../../../../views/EmbeddedReveal/utils/turnkeyExport/turnkeyExport.cjs');
69
69
  var passkeyRecovery = require('../../../../views/Passkey/utils/passkeyRecovery/passkeyRecovery.cjs');
70
70
  var getNewVerifiedCredentialsFromDiff = require('../../../functions/getNewVerifiedCredentialsFromDiff/getNewVerifiedCredentialsFromDiff.cjs');
71
71
  var validateTurnkeyProviderEnabled = require('../../../validations/validateTurnkeyProviderEnabled/validateTurnkeyProviderEnabled.cjs');
@@ -40,11 +40,12 @@ import { refreshUserJwt } from '../../../../data/api/user/user.js';
40
40
  import '../../../../store/state/dynamicContextProps/dynamicContextProps.js';
41
41
  import '../../../../store/state/primaryWalletId/primaryWalletId.js';
42
42
  import '../../../../store/state/connectedWalletsInfo/connectedWalletsInfo.js';
43
+ import { cleanupExport, initExport, exportCredential } from '../../../../views/EmbeddedReveal/utils/turnkeyExport/turnkeyExport.js';
44
+ import { USER_NOT_LOGGED_IN, ACTIVE_SESSION, SESSION_RESTORED, INVALID_REQUEST, INVALID_WALLET_DATA, SESSION_CREATED, ERROR_SENDING_CODE, CODE_SENT } from '../../../constants/errors.js';
43
45
  import '../../../../context/AccessDeniedContext/AccessDeniedContext.js';
44
46
  import '../../../../context/AccountExistsContext/AccountExistsContext.js';
45
47
  import { useInternalUserWallets } from '../../../../context/UserWalletsContext/UserWalletsContext.js';
46
48
  import '../../../../store/state/authMode/authMode.js';
47
- import { USER_NOT_LOGGED_IN, ACTIVE_SESSION, SESSION_RESTORED, INVALID_REQUEST, INVALID_WALLET_DATA, SESSION_CREATED, ERROR_SENDING_CODE, CODE_SENT } from '../../../constants/errors.js';
48
49
  import '../../../../context/VerificationContext/VerificationContext.js';
49
50
  import 'react-dom';
50
51
  import { useElementById } from '../../useElementById/useElementById.js';
@@ -61,7 +62,6 @@ import '../../../../context/SocialRedirectContext/SocialRedirectContext.js';
61
62
  import '../../../../context/LoadingContext/LoadingContext.js';
62
63
  import { useWalletContext } from '../../../../context/WalletContext/WalletContext.js';
63
64
  import { useIsTurnkeyWallet } from '../../useIsTurnkeyWallet/useIsTurnkeyWallet.js';
64
- import { cleanupExport, initExport, exportCredential } from '../../../../views/EmbeddedReveal/utils/turnkeyExport/turnkeyExport.js';
65
65
  import { canRestoreEmbeddedWalletSession, restoreEmbeddedWalletSession } from '../../../../views/Passkey/utils/passkeyRecovery/passkeyRecovery.js';
66
66
  import { getNewVerifiedCredentialsFromDiff } from '../../../functions/getNewVerifiedCredentialsFromDiff/getNewVerifiedCredentialsFromDiff.js';
67
67
  import { validateTurnkeyProviderEnabled } from '../../../validations/validateTurnkeyProviderEnabled/validateTurnkeyProviderEnabled.js';
@@ -32,17 +32,17 @@ var updatePrimaryWalletId = require('../../../../functions/updatePrimaryWalletId
32
32
  require('../../../../../store/state/connectedWalletsInfo/connectedWalletsInfo.cjs');
33
33
  require('../../../../../store/state/dynamicContextProps/dynamicContextProps.cjs');
34
34
  require('../../../../../store/state/primaryWalletId/primaryWalletId.cjs');
35
- require('../../../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
36
- require('../../../../../context/AccountExistsContext/AccountExistsContext.cjs');
37
- require('../../../../../context/UserWalletsContext/UserWalletsContext.cjs');
38
35
  require('@dynamic-labs-sdk/client/core');
39
36
  require('../../../../../client/client.cjs');
40
37
  require('@dynamic-labs-sdk/client');
41
38
  require('../../../../../config/ApiEndpoint.cjs');
42
39
  require('../../../../../store/state/projectSettings/projectSettings.cjs');
43
40
  require('../../../../../locale/locale.cjs');
44
- require('../../../../../store/state/authMode/authMode.cjs');
45
41
  var errors = require('../../../../constants/errors.cjs');
42
+ require('../../../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
43
+ require('../../../../../context/AccountExistsContext/AccountExistsContext.cjs');
44
+ require('../../../../../context/UserWalletsContext/UserWalletsContext.cjs');
45
+ require('../../../../../store/state/authMode/authMode.cjs');
46
46
  require('../../../../../context/VerificationContext/VerificationContext.cjs');
47
47
  require('react-dom');
48
48
  var useCreateDynamicEmbeddedWalletMutation = require('../../../useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.cjs');
@@ -28,17 +28,17 @@ import { updatePrimaryWalletId } from '../../../../functions/updatePrimaryWallet
28
28
  import '../../../../../store/state/connectedWalletsInfo/connectedWalletsInfo.js';
29
29
  import '../../../../../store/state/dynamicContextProps/dynamicContextProps.js';
30
30
  import '../../../../../store/state/primaryWalletId/primaryWalletId.js';
31
- import '../../../../../context/AccessDeniedContext/AccessDeniedContext.js';
32
- import '../../../../../context/AccountExistsContext/AccountExistsContext.js';
33
- import '../../../../../context/UserWalletsContext/UserWalletsContext.js';
34
31
  import '@dynamic-labs-sdk/client/core';
35
32
  import '../../../../../client/client.js';
36
33
  import '@dynamic-labs-sdk/client';
37
34
  import '../../../../../config/ApiEndpoint.js';
38
35
  import '../../../../../store/state/projectSettings/projectSettings.js';
39
36
  import '../../../../../locale/locale.js';
40
- import '../../../../../store/state/authMode/authMode.js';
41
37
  import { USER_NOT_LOGGED_IN } from '../../../../constants/errors.js';
38
+ import '../../../../../context/AccessDeniedContext/AccessDeniedContext.js';
39
+ import '../../../../../context/AccountExistsContext/AccountExistsContext.js';
40
+ import '../../../../../context/UserWalletsContext/UserWalletsContext.js';
41
+ import '../../../../../store/state/authMode/authMode.js';
42
42
  import '../../../../../context/VerificationContext/VerificationContext.js';
43
43
  import 'react-dom';
44
44
  import { useCreateDynamicEmbeddedWalletMutation } from '../../../useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.js';
@@ -18,6 +18,7 @@ require('../../constants/colors.cjs');
18
18
  require('../../constants/values.cjs');
19
19
  require('../../../shared/consts/index.cjs');
20
20
  var projectSettings = require('../../../store/state/projectSettings/projectSettings.cjs');
21
+ var useGetUserMfaMethods = require('../useGetUserMfaMethods/useGetUserMfaMethods.cjs');
21
22
 
22
23
  /**
23
24
  * Get MFA token
@@ -38,27 +39,46 @@ var projectSettings = require('../../../store/state/projectSettings/projectSetti
38
39
  * );
39
40
  * }
40
41
  */
41
- const useGetMfaToken = () => React.useCallback((...args_1) => _tslib.__awaiter(void 0, [...args_1], void 0, function* ({ mfaAction } = {}) {
42
- var _a, _b, _c;
43
- const projectSettings$1 = projectSettings.getProjectSettings();
44
- const isMfaRequiredForAction = (_c = (_b = (_a = projectSettings$1 === null || projectSettings$1 === void 0 ? void 0 : projectSettings$1.security) === null || _a === void 0 ? void 0 : _a.mfa) === null || _b === void 0 ? void 0 : _b.actions) === null || _c === void 0 ? void 0 : _c.some((action) => action.action === mfaAction && action.required);
45
- if (mfaAction && !isMfaRequiredForAction) {
46
- // if mfa token is not required, return undefined
47
- return;
48
- }
49
- try {
50
- const mfaToken = client.consumeMfaToken();
51
- return mfaToken;
52
- }
53
- catch (error) {
42
+ const useGetMfaToken = () => {
43
+ const getUserMfaMethods = useGetUserMfaMethods.useGetUserMfaMethods();
44
+ const shouldConsumeMfaToken = React.useCallback((...args_1) => _tslib.__awaiter(void 0, [...args_1], void 0, function* ({ mfaAction } = {}) {
45
+ var _a, _b, _c, _d, _e;
54
46
  if (!mfaAction) {
55
- logger.logger.warn('No MFA token found', error);
47
+ return true;
48
+ }
49
+ const projectSettings$1 = projectSettings.getProjectSettings();
50
+ const isMfaRequiredForAction = (_c = (_b = (_a = projectSettings$1 === null || projectSettings$1 === void 0 ? void 0 : projectSettings$1.security) === null || _a === void 0 ? void 0 : _a.mfa) === null || _b === void 0 ? void 0 : _b.actions) === null || _c === void 0 ? void 0 : _c.some((action) => action.action === mfaAction && action.required);
51
+ // if mfa token is not required for this action, no need to consume it
52
+ if (!isMfaRequiredForAction) {
53
+ return false;
54
+ }
55
+ const isMfaMethodRequired = (_e = (_d = projectSettings$1 === null || projectSettings$1 === void 0 ? void 0 : projectSettings$1.security) === null || _d === void 0 ? void 0 : _d.mfa) === null || _e === void 0 ? void 0 : _e.required;
56
+ if (isMfaMethodRequired) {
57
+ return true;
58
+ }
59
+ const methods = yield getUserMfaMethods();
60
+ // if mfa is not required and user has no methods registered, no need to consume the token
61
+ return methods.userHasVerifiedMfaMethods;
62
+ }), [getUserMfaMethods]);
63
+ return React.useCallback((...args_2) => _tslib.__awaiter(void 0, [...args_2], void 0, function* ({ mfaAction } = {}) {
64
+ const shouldConsume = yield shouldConsumeMfaToken({ mfaAction });
65
+ if (!shouldConsume) {
56
66
  return;
57
67
  }
58
- const errorMessage = `MFA Token required for this action: ${mfaAction}`;
59
- logger.logger.error(errorMessage, error);
60
- throw new utils.DynamicError(errorMessage);
61
- }
62
- }), []);
68
+ try {
69
+ const mfaToken = client.consumeMfaToken();
70
+ return mfaToken;
71
+ }
72
+ catch (error) {
73
+ if (!mfaAction) {
74
+ logger.logger.warn('No MFA token found', error);
75
+ return;
76
+ }
77
+ const errorMessage = `MFA Token required for this action: ${mfaAction}`;
78
+ logger.logger.error(errorMessage, error);
79
+ throw new utils.DynamicError(errorMessage);
80
+ }
81
+ }), [shouldConsumeMfaToken]);
82
+ };
63
83
 
64
84
  exports.useGetMfaToken = useGetMfaToken;