@dynamic-labs/sdk-react-core 2.1.0-alpha.17 → 2.1.0-alpha.19

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 (99) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/package.cjs +2 -2
  3. package/package.js +2 -2
  4. package/package.json +13 -13
  5. package/src/lib/components/MfaRecoveryIcon/MfaRecoveryIcon.cjs +15 -0
  6. package/src/lib/components/MfaRecoveryIcon/MfaRecoveryIcon.d.ts +2 -0
  7. package/src/lib/components/MfaRecoveryIcon/MfaRecoveryIcon.js +11 -0
  8. package/src/lib/components/MfaRecoveryIcon/index.d.ts +1 -0
  9. package/src/lib/components/Portal/Portal.cjs +0 -1
  10. package/src/lib/components/Portal/Portal.js +0 -1
  11. package/src/lib/components/SocialSignIn/SocialSignIn.cjs +5 -2
  12. package/src/lib/components/SocialSignIn/SocialSignIn.js +5 -2
  13. package/src/lib/components/SyncEmbeddedWalletAuthFlow/SyncEmbeddedWalletAuthFlow.cjs +16 -28
  14. package/src/lib/components/SyncEmbeddedWalletAuthFlow/SyncEmbeddedWalletAuthFlow.js +16 -28
  15. package/src/lib/components/UserProfile/parts/UserProfileField/UserProfileField.d.ts +1 -1
  16. package/src/lib/components/index.d.ts +1 -0
  17. package/src/lib/context/DynamicContext/DynamicContext.cjs +1 -1
  18. package/src/lib/context/DynamicContext/DynamicContext.js +1 -1
  19. package/src/lib/context/DynamicContext/hooks/useNameService/useNameService.cjs +4 -5
  20. package/src/lib/context/DynamicContext/hooks/useNameService/useNameService.d.ts +3 -2
  21. package/src/lib/context/DynamicContext/hooks/useNameService/useNameService.js +4 -5
  22. package/src/lib/context/PasskeyContext/PasskeyContext.cjs +1 -1
  23. package/src/lib/context/PasskeyContext/PasskeyContext.js +2 -2
  24. package/src/lib/context/ViewContext/types/index.d.ts +1 -1
  25. package/src/lib/data/api/api.cjs +2 -2
  26. package/src/lib/data/api/api.js +2 -2
  27. package/src/lib/data/api/user/user.cjs +3 -0
  28. package/src/lib/data/api/user/user.js +4 -1
  29. package/src/lib/locale/en/translation.cjs +38 -21
  30. package/src/lib/locale/en/translation.d.ts +38 -21
  31. package/src/lib/locale/en/translation.js +38 -21
  32. package/src/lib/modals/SignMessageConfirmationModal/getProperErrorMessage.cjs +19 -2
  33. package/src/lib/modals/SignMessageConfirmationModal/getProperErrorMessage.js +19 -2
  34. package/src/lib/shared/assets/index.d.ts +1 -0
  35. package/src/lib/shared/assets/mfa-recovery-icon.cjs +54 -0
  36. package/src/lib/shared/assets/mfa-recovery-icon.js +30 -0
  37. package/src/lib/shared/utils/functions/lastAuthenticatedAccount/index.d.ts +2 -2
  38. package/src/lib/shared/utils/functions/wallet/createWallet.d.ts +4 -0
  39. package/src/lib/styles/index.shadow.cjs +1 -1
  40. package/src/lib/styles/index.shadow.js +1 -1
  41. package/src/lib/utils/functions/createUserProfile/createUserProfile.cjs +1 -1
  42. package/src/lib/utils/functions/createUserProfile/createUserProfile.d.ts +2 -1
  43. package/src/lib/utils/functions/createUserProfile/createUserProfile.js +1 -1
  44. package/src/lib/utils/functions/getEnabledSocialSignInProvidersAsProviderEnum/getEnabledSocialSignInProvidersAsProviderEnum.cjs +21 -0
  45. package/src/lib/utils/functions/getEnabledSocialSignInProvidersAsProviderEnum/getEnabledSocialSignInProvidersAsProviderEnum.js +17 -0
  46. package/src/lib/utils/functions/getUserProfileFields/getUserProfileFields.cjs +6 -3
  47. package/src/lib/utils/functions/getUserProfileFields/getUserProfileFields.d.ts +2 -1
  48. package/src/lib/utils/functions/getUserProfileFields/getUserProfileFields.js +7 -4
  49. package/src/lib/utils/functions/validateMfaRecoveryCode/index.d.ts +1 -0
  50. package/src/lib/utils/functions/validateMfaRecoveryCode/validateMfaRecoveryCode.cjs +11 -0
  51. package/src/lib/utils/functions/validateMfaRecoveryCode/validateMfaRecoveryCode.d.ts +1 -0
  52. package/src/lib/utils/functions/validateMfaRecoveryCode/validateMfaRecoveryCode.js +7 -0
  53. package/src/lib/utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.cjs +5 -3
  54. package/src/lib/utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.js +5 -3
  55. package/src/lib/utils/hooks/useDynamicLayoutData/useDynamicLayoutData.cjs +8 -0
  56. package/src/lib/utils/hooks/useDynamicLayoutData/useDynamicLayoutData.js +8 -0
  57. package/src/lib/utils/hooks/useDynamicModals/useDynamicModals.cjs +10 -1
  58. package/src/lib/utils/hooks/useDynamicModals/useDynamicModals.d.ts +5 -0
  59. package/src/lib/utils/hooks/useDynamicModals/useDynamicModals.js +10 -1
  60. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.cjs +21 -1
  61. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.d.ts +1 -0
  62. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.js +21 -1
  63. package/src/lib/utils/hooks/useKYCFlag/useKYCFlag.cjs +1 -0
  64. package/src/lib/utils/hooks/useKYCFlag/useKYCFlag.js +1 -0
  65. package/src/lib/utils/hooks/useMfaModals/index.d.ts +1 -0
  66. package/src/lib/utils/hooks/useMfaModals/useMfaModals.cjs +131 -0
  67. package/src/lib/utils/hooks/useMfaModals/useMfaModals.d.ts +8 -0
  68. package/src/lib/utils/hooks/useMfaModals/useMfaModals.js +127 -0
  69. package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.cjs +24 -3
  70. package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.d.ts +1 -0
  71. package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.js +24 -3
  72. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.cjs +8 -4
  73. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.d.ts +3 -3
  74. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.js +8 -4
  75. package/src/lib/utils/hooks/useUserAuth/useUserAuth.cjs +42 -35
  76. package/src/lib/utils/hooks/useUserAuth/useUserAuth.js +43 -36
  77. package/src/lib/utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUser.cjs +7 -2
  78. package/src/lib/utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUser.js +7 -2
  79. package/src/lib/views/EmailVerification/EmailVerification.cjs +1 -10
  80. package/src/lib/views/EmailVerification/EmailVerification.js +1 -10
  81. package/src/lib/views/FarcasterQrCodeView/FarcasterQrCodeView.cjs +1 -1
  82. package/src/lib/views/FarcasterQrCodeView/FarcasterQrCodeView.js +1 -1
  83. package/src/lib/views/LoginView/sections/SocialSignInSection/DynamicSocialSignIn/DynamicSocialSignIn.cjs +5 -2
  84. package/src/lib/views/LoginView/sections/SocialSignInSection/DynamicSocialSignIn/DynamicSocialSignIn.js +5 -2
  85. package/src/lib/views/MfaRecoveryView/MfaRecoveryView.cjs +116 -0
  86. package/src/lib/views/MfaRecoveryView/MfaRecoveryView.d.ts +2 -0
  87. package/src/lib/views/MfaRecoveryView/MfaRecoveryView.js +112 -0
  88. package/src/lib/views/MfaRecoveryView/index.d.ts +1 -0
  89. package/src/lib/views/viewToComponentMap.cjs +2 -2
  90. package/src/lib/views/viewToComponentMap.d.ts +2 -2
  91. package/src/lib/views/viewToComponentMap.js +2 -2
  92. package/src/lib/widgets/DynamicBridgeWidget/views/ProfileView/ProfileView.cjs +5 -1
  93. package/src/lib/widgets/DynamicBridgeWidget/views/ProfileView/ProfileView.js +5 -1
  94. package/src/lib/widgets/DynamicWidget/prompts/PendingConnectionModal/PendingConnectionModal.cjs +3 -3
  95. package/src/lib/widgets/DynamicWidget/prompts/PendingConnectionModal/PendingConnectionModal.js +3 -3
  96. package/src/lib/views/EmailUpdate/EmailUpdate.cjs +0 -131
  97. package/src/lib/views/EmailUpdate/EmailUpdate.d.ts +0 -2
  98. package/src/lib/views/EmailUpdate/EmailUpdate.js +0 -127
  99. package/src/lib/views/EmailUpdate/index.d.ts +0 -1
@@ -29,7 +29,7 @@ const createUserProfile = (decodedJwt) => {
29
29
  team: decodedJwt.team,
30
30
  username: decodedJwt.username,
31
31
  };
32
- const userProfile = Object.assign({ chain: wallet === null || wallet === void 0 ? void 0 : wallet.chain, ens: wallet === null || wallet === void 0 ? void 0 : wallet.nameService, environmentId: decodedJwt.environmentId, isAuthenticatedWithAWallet: (wallet === null || wallet === void 0 ? void 0 : wallet.format) === 'blockchain', lastVerifiedCredentialId: decodedJwt.lastVerifiedCredentialId, lists: decodedJwt.lists, metadata: decodedJwt.metadata, newUser: decodedJwt.newUser, scope: decodedJwt.scope, sessionId: decodedJwt.sid, userId: decodedJwt.sub, verifiedCredentials: decodedJwt.verifiedCredentials || [], wallet: wallet === null || wallet === void 0 ? void 0 : wallet.walletName }, kyc);
32
+ const userProfile = Object.assign({ chain: wallet === null || wallet === void 0 ? void 0 : wallet.chain, ens: wallet === null || wallet === void 0 ? void 0 : wallet.nameService, environmentId: decodedJwt.environmentId, isAuthenticatedWithAWallet: (wallet === null || wallet === void 0 ? void 0 : wallet.format) === 'blockchain', lastVerifiedCredentialId: decodedJwt.lastVerifiedCredentialId, lists: decodedJwt.lists, metadata: decodedJwt.metadata, missingFields: decodedJwt.missingFields, newUser: decodedJwt.newUser, scope: decodedJwt.scope, sessionId: decodedJwt.sid, userId: decodedJwt.sub, verifiedCredentials: decodedJwt.verifiedCredentials || [], wallet: wallet === null || wallet === void 0 ? void 0 : wallet.walletName }, kyc);
33
33
  return userProfile;
34
34
  };
35
35
 
@@ -1,3 +1,4 @@
1
- import { DynamicJwt } from '@dynamic-labs/sdk-api-core';
1
+ import { DynamicJwt, SdkUser } from '@dynamic-labs/sdk-api-core';
2
2
  import { UserProfile } from '@dynamic-labs/types';
3
3
  export declare const createUserProfile: (decodedJwt: DynamicJwt) => UserProfile;
4
+ export declare const createUserProfileFromSdkUser: (user: SdkUser) => UserProfile;
@@ -25,7 +25,7 @@ const createUserProfile = (decodedJwt) => {
25
25
  team: decodedJwt.team,
26
26
  username: decodedJwt.username,
27
27
  };
28
- const userProfile = Object.assign({ chain: wallet === null || wallet === void 0 ? void 0 : wallet.chain, ens: wallet === null || wallet === void 0 ? void 0 : wallet.nameService, environmentId: decodedJwt.environmentId, isAuthenticatedWithAWallet: (wallet === null || wallet === void 0 ? void 0 : wallet.format) === 'blockchain', lastVerifiedCredentialId: decodedJwt.lastVerifiedCredentialId, lists: decodedJwt.lists, metadata: decodedJwt.metadata, newUser: decodedJwt.newUser, scope: decodedJwt.scope, sessionId: decodedJwt.sid, userId: decodedJwt.sub, verifiedCredentials: decodedJwt.verifiedCredentials || [], wallet: wallet === null || wallet === void 0 ? void 0 : wallet.walletName }, kyc);
28
+ const userProfile = Object.assign({ chain: wallet === null || wallet === void 0 ? void 0 : wallet.chain, ens: wallet === null || wallet === void 0 ? void 0 : wallet.nameService, environmentId: decodedJwt.environmentId, isAuthenticatedWithAWallet: (wallet === null || wallet === void 0 ? void 0 : wallet.format) === 'blockchain', lastVerifiedCredentialId: decodedJwt.lastVerifiedCredentialId, lists: decodedJwt.lists, metadata: decodedJwt.metadata, missingFields: decodedJwt.missingFields, newUser: decodedJwt.newUser, scope: decodedJwt.scope, sessionId: decodedJwt.sid, userId: decodedJwt.sub, verifiedCredentials: decodedJwt.verifiedCredentials || [], wallet: wallet === null || wallet === void 0 ? void 0 : wallet.walletName }, kyc);
29
29
  return userProfile;
30
30
  };
31
31
 
@@ -0,0 +1,21 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var getProviderEnumForSocialSignInProvider = require('../getProviderEnumForSocialSignInProvider/getProviderEnumForSocialSignInProvider.cjs');
7
+
8
+ const getEnabledSocialSignInProvidersAsProviderEnum = (providers) => {
9
+ if (!providers)
10
+ return [];
11
+ const enabledProviders = [];
12
+ for (const provider of providers) {
13
+ const matchingProviderEnum = getProviderEnumForSocialSignInProvider.getProviderEnumForSocialSignInProvider(provider.provider);
14
+ if (matchingProviderEnum && provider.enabled) {
15
+ enabledProviders.push(matchingProviderEnum);
16
+ }
17
+ }
18
+ return enabledProviders;
19
+ };
20
+
21
+ exports.getEnabledSocialSignInProvidersAsProviderEnum = getEnabledSocialSignInProvidersAsProviderEnum;
@@ -0,0 +1,17 @@
1
+ 'use client'
2
+ import { getProviderEnumForSocialSignInProvider } from '../getProviderEnumForSocialSignInProvider/getProviderEnumForSocialSignInProvider.js';
3
+
4
+ const getEnabledSocialSignInProvidersAsProviderEnum = (providers) => {
5
+ if (!providers)
6
+ return [];
7
+ const enabledProviders = [];
8
+ for (const provider of providers) {
9
+ const matchingProviderEnum = getProviderEnumForSocialSignInProvider(provider.provider);
10
+ if (matchingProviderEnum && provider.enabled) {
11
+ enabledProviders.push(matchingProviderEnum);
12
+ }
13
+ }
14
+ return enabledProviders;
15
+ };
16
+
17
+ export { getEnabledSocialSignInProvidersAsProviderEnum };
@@ -37,7 +37,7 @@ const mapUserFieldsToKycSettings = (user, projectSettingsKyc) => {
37
37
  * @param {ProjectSettingsKyc[]} projectSettings - The project settings KYC object array.
38
38
  * @returns {ProjectSettingsKyc[]} - The list of editable user profile fields based on project settings.
39
39
  */
40
- const getEditableUserProfileFields = (projectSettings) => index.getEnabledKYC(projectSettings).filter(({ name }) => !filterFields.includes(name));
40
+ const getEditableUserProfileFields = (projectSettings) => index.getEnabledKYC(projectSettings).filter(({ name, type }) => type === sdkApiCore.KycFieldType.Custom || !filterFields.includes(name));
41
41
  /**
42
42
  * Get non-editable user profile fields that exist in the user profile and are disabled in the project
43
43
  * @param {Object} options - The function options object.
@@ -58,9 +58,12 @@ const getNonEditableUserProfileFields = ({ projectSettingsKyc = [], user, }) =>
58
58
  * @param {UserProfile} options.user - The user profile object.
59
59
  * @returns {ProjectSettingsKyc[]} - The list of all user profile fields based on project settings.
60
60
  */
61
- const getUserProfileFields = ({ projectSettingsKyc = [], user, }) => {
61
+ const getUserProfileFields = ({ projectSettingsKyc = [], customFields = [], user, }) => {
62
62
  var _a;
63
- const editableUserProfileFields = getEditableUserProfileFields(projectSettingsKyc);
63
+ const editableUserProfileFields = getEditableUserProfileFields([
64
+ ...projectSettingsKyc,
65
+ ...customFields,
66
+ ]);
64
67
  const nonEditableUserProfileFields = getNonEditableUserProfileFields({
65
68
  projectSettingsKyc,
66
69
  user,
@@ -24,7 +24,8 @@ export declare const getNonEditableUserProfileFields: ({ projectSettingsKyc, use
24
24
  * @param {UserProfile} options.user - The user profile object.
25
25
  * @returns {ProjectSettingsKyc[]} - The list of all user profile fields based on project settings.
26
26
  */
27
- export declare const getUserProfileFields: ({ projectSettingsKyc, user, }: {
27
+ export declare const getUserProfileFields: ({ projectSettingsKyc, customFields, user, }: {
28
28
  projectSettingsKyc?: ProjectSettingsKyc[];
29
+ customFields?: ProjectSettingsKyc[];
29
30
  user?: UserProfile;
30
31
  }) => ProjectSettingsKyc[];
@@ -1,5 +1,5 @@
1
1
  'use client'
2
- import { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';
2
+ import { WalletProviderEnum, KycFieldType } from '@dynamic-labs/sdk-api-core';
3
3
  import { getEnabledKYC } from '../getEnabledKYC/index.js';
4
4
 
5
5
  /**
@@ -33,7 +33,7 @@ const mapUserFieldsToKycSettings = (user, projectSettingsKyc) => {
33
33
  * @param {ProjectSettingsKyc[]} projectSettings - The project settings KYC object array.
34
34
  * @returns {ProjectSettingsKyc[]} - The list of editable user profile fields based on project settings.
35
35
  */
36
- const getEditableUserProfileFields = (projectSettings) => getEnabledKYC(projectSettings).filter(({ name }) => !filterFields.includes(name));
36
+ const getEditableUserProfileFields = (projectSettings) => getEnabledKYC(projectSettings).filter(({ name, type }) => type === KycFieldType.Custom || !filterFields.includes(name));
37
37
  /**
38
38
  * Get non-editable user profile fields that exist in the user profile and are disabled in the project
39
39
  * @param {Object} options - The function options object.
@@ -54,9 +54,12 @@ const getNonEditableUserProfileFields = ({ projectSettingsKyc = [], user, }) =>
54
54
  * @param {UserProfile} options.user - The user profile object.
55
55
  * @returns {ProjectSettingsKyc[]} - The list of all user profile fields based on project settings.
56
56
  */
57
- const getUserProfileFields = ({ projectSettingsKyc = [], user, }) => {
57
+ const getUserProfileFields = ({ projectSettingsKyc = [], customFields = [], user, }) => {
58
58
  var _a;
59
- const editableUserProfileFields = getEditableUserProfileFields(projectSettingsKyc);
59
+ const editableUserProfileFields = getEditableUserProfileFields([
60
+ ...projectSettingsKyc,
61
+ ...customFields,
62
+ ]);
60
63
  const nonEditableUserProfileFields = getNonEditableUserProfileFields({
61
64
  projectSettingsKyc,
62
65
  user,
@@ -0,0 +1 @@
1
+ export { validateMfaRecoveryCode } from './validateMfaRecoveryCode';
@@ -0,0 +1,11 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ const validateMfaRecoveryCode = (text) => {
7
+ const regex = /^(\w+\s){23}\w+$/;
8
+ return regex.test(text);
9
+ };
10
+
11
+ exports.validateMfaRecoveryCode = validateMfaRecoveryCode;
@@ -0,0 +1 @@
1
+ export declare const validateMfaRecoveryCode: (text: string) => boolean;
@@ -0,0 +1,7 @@
1
+ 'use client'
2
+ const validateMfaRecoveryCode = (text) => {
3
+ const regex = /^(\w+\s){23}\w+$/;
4
+ return regex.test(text);
5
+ };
6
+
7
+ export { validateMfaRecoveryCode };
@@ -117,7 +117,6 @@ const useAuthLayoutChecks = () => {
117
117
  view.type !== 'passkey-intro' &&
118
118
  view.type !== 'passkey-new-domain-detected' &&
119
119
  view.type !== 'social-redirect-view' &&
120
- view.type !== 'update-email' &&
121
120
  view.type !== 'collect-user-data-login-no-wallet' &&
122
121
  view.type !== 'passkey-recovery-bundle' &&
123
122
  view.type !== 'passkey-recovery-start' &&
@@ -169,7 +168,8 @@ const useAuthLayoutChecks = () => {
169
168
  view.type === 'merge-user-accounts' ||
170
169
  view.type === 'merge-user-accounts-conflicts' ||
171
170
  view.type === 'mfa-verification' ||
172
- view.type === 'mfa-display-backup-codes');
171
+ view.type === 'mfa-display-backup-codes' ||
172
+ view.type === 'mfa-recovery');
173
173
  const showCloseButton = view.type !== 'login-with-email-or-wallet-full-wallet-list' &&
174
174
  view.type !== 'login-with-email-verification' &&
175
175
  view.type !== 'login-with-sms-verification' &&
@@ -180,7 +180,8 @@ const useAuthLayoutChecks = () => {
180
180
  view.type !== 'rename-passkey' &&
181
181
  view.type !== 'qr-code' &&
182
182
  view.type !== 'mfa-verification' &&
183
- view.type !== 'mfa-display-backup-codes';
183
+ view.type !== 'mfa-display-backup-codes' &&
184
+ view.type !== 'mfa-recovery';
184
185
  const showBackButton = view.type === 'pending-signature' ||
185
186
  view.type === 'no-qr-not-installed' ||
186
187
  view.type === 'wallet-connect-mobile-wallets-list' ||
@@ -197,6 +198,7 @@ const useAuthLayoutChecks = () => {
197
198
  view.type === 'farcaster-connect-view' ||
198
199
  view.type === 'mfa-verification' ||
199
200
  view.type === 'merge-user-accounts-conflicts' ||
201
+ view.type === 'mfa-recovery' ||
200
202
  (view.type === 'merge-user-accounts-with-same-email' && !user);
201
203
  const showDefaultFooter = !showConnectedWalletProgress && !showDynamicFooter && !showToSFooter;
202
204
  const shouldHideDynamicFooterSeparator = showDynamicFooter && showToSFooter;
@@ -113,7 +113,6 @@ const useAuthLayoutChecks = () => {
113
113
  view.type !== 'passkey-intro' &&
114
114
  view.type !== 'passkey-new-domain-detected' &&
115
115
  view.type !== 'social-redirect-view' &&
116
- view.type !== 'update-email' &&
117
116
  view.type !== 'collect-user-data-login-no-wallet' &&
118
117
  view.type !== 'passkey-recovery-bundle' &&
119
118
  view.type !== 'passkey-recovery-start' &&
@@ -165,7 +164,8 @@ const useAuthLayoutChecks = () => {
165
164
  view.type === 'merge-user-accounts' ||
166
165
  view.type === 'merge-user-accounts-conflicts' ||
167
166
  view.type === 'mfa-verification' ||
168
- view.type === 'mfa-display-backup-codes');
167
+ view.type === 'mfa-display-backup-codes' ||
168
+ view.type === 'mfa-recovery');
169
169
  const showCloseButton = view.type !== 'login-with-email-or-wallet-full-wallet-list' &&
170
170
  view.type !== 'login-with-email-verification' &&
171
171
  view.type !== 'login-with-sms-verification' &&
@@ -176,7 +176,8 @@ const useAuthLayoutChecks = () => {
176
176
  view.type !== 'rename-passkey' &&
177
177
  view.type !== 'qr-code' &&
178
178
  view.type !== 'mfa-verification' &&
179
- view.type !== 'mfa-display-backup-codes';
179
+ view.type !== 'mfa-display-backup-codes' &&
180
+ view.type !== 'mfa-recovery';
180
181
  const showBackButton = view.type === 'pending-signature' ||
181
182
  view.type === 'no-qr-not-installed' ||
182
183
  view.type === 'wallet-connect-mobile-wallets-list' ||
@@ -193,6 +194,7 @@ const useAuthLayoutChecks = () => {
193
194
  view.type === 'farcaster-connect-view' ||
194
195
  view.type === 'mfa-verification' ||
195
196
  view.type === 'merge-user-accounts-conflicts' ||
197
+ view.type === 'mfa-recovery' ||
196
198
  (view.type === 'merge-user-accounts-with-same-email' && !user);
197
199
  const showDefaultFooter = !showConnectedWalletProgress && !showDynamicFooter && !showToSFooter;
198
200
  const shouldHideDynamicFooterSeparator = showDynamicFooter && showToSFooter;
@@ -31,6 +31,10 @@ const useDynamicLayoutData = ({ view, authMode, }) => {
31
31
  copykey: 'dyn_mfa.choose_device_view.title',
32
32
  heading: t('dyn_mfa.choose_device_view.title'),
33
33
  },
34
+ 'mfa-recovery': {
35
+ copykey: 'dyn_mfa.recovery_view.helper.title',
36
+ heading: t('dyn_mfa.recovery_view.helper.title'),
37
+ },
34
38
  'mfa-secure-device': {
35
39
  copykey: 'dyn_mfa.secure_device_view.title',
36
40
  heading: t('dyn_mfa.secure_device_view.title'),
@@ -117,6 +121,10 @@ const useDynamicLayoutData = ({ view, authMode, }) => {
117
121
  copykey: 'dyn_mfa.display_backup_codes_view.title',
118
122
  heading: t('dyn_mfa.display_backup_codes_view.title'),
119
123
  },
124
+ 'mfa-recovery': {
125
+ copykey: 'dyn_mfa.recovery_view.title',
126
+ heading: t('dyn_mfa.recovery_view.title'),
127
+ },
120
128
  'mfa-secure-device': {
121
129
  copykey: 'dyn_mfa.secure_device_view.title',
122
130
  heading: t('dyn_mfa.secure_device_view.title'),
@@ -27,6 +27,10 @@ const useDynamicLayoutData = ({ view, authMode, }) => {
27
27
  copykey: 'dyn_mfa.choose_device_view.title',
28
28
  heading: t('dyn_mfa.choose_device_view.title'),
29
29
  },
30
+ 'mfa-recovery': {
31
+ copykey: 'dyn_mfa.recovery_view.helper.title',
32
+ heading: t('dyn_mfa.recovery_view.helper.title'),
33
+ },
30
34
  'mfa-secure-device': {
31
35
  copykey: 'dyn_mfa.secure_device_view.title',
32
36
  heading: t('dyn_mfa.secure_device_view.title'),
@@ -113,6 +117,10 @@ const useDynamicLayoutData = ({ view, authMode, }) => {
113
117
  copykey: 'dyn_mfa.display_backup_codes_view.title',
114
118
  heading: t('dyn_mfa.display_backup_codes_view.title'),
115
119
  },
120
+ 'mfa-recovery': {
121
+ copykey: 'dyn_mfa.recovery_view.title',
122
+ heading: t('dyn_mfa.recovery_view.title'),
123
+ },
116
124
  'mfa-secure-device': {
117
125
  copykey: 'dyn_mfa.secure_device_view.title',
118
126
  heading: t('dyn_mfa.secure_device_view.title'),
@@ -74,6 +74,7 @@ require('../../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWi
74
74
  require('../../../widgets/DynamicWidget/context/DynamicWidgetContext.cjs');
75
75
  require('../../../views/TransactionConfirmationView/helpers/transactionErrorMessage.cjs');
76
76
  require('../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
77
+ var useMfaModals = require('../useMfaModals/useMfaModals.cjs');
77
78
  var useInternalDynamicContext = require('../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.cjs');
78
79
 
79
80
  /**
@@ -89,6 +90,7 @@ const useDynamicModals = () => {
89
90
  const isLoggedIn = useIsLoggedIn.useIsLoggedIn();
90
91
  const { setView } = ViewContext.useViewContext();
91
92
  const canLink = isAllowedToLinkWallet.isAllowedToLinkWallet(projectSettings, user === null || user === void 0 ? void 0 : user.verifiedCredentials, multiWallet);
93
+ const { setShowMfaChooseType, setShowMfaEnterBackupCodes, setShowMfaQRCode, setShowMfaViewBackupCodes, setShowOTPVerification, } = useMfaModals.useMfaModals();
92
94
  const setSetShowLinkNewWalletModalWithInit = React.useCallback((value) => {
93
95
  if (value) {
94
96
  // Do not change state if the user is already signed in and multi-wallet is not enabled
@@ -109,7 +111,14 @@ const useDynamicModals = () => {
109
111
  performMultiWalletChecks: false,
110
112
  });
111
113
  }, [canLink, isLoggedIn, setShowAuthFlow, setView]);
112
- return { setShowLinkNewWalletModal: setSetShowLinkNewWalletModalWithInit };
114
+ return {
115
+ setShowLinkNewWalletModal: setSetShowLinkNewWalletModalWithInit,
116
+ setShowMfaChooseType,
117
+ setShowMfaEnterBackupCodes,
118
+ setShowMfaQRCode,
119
+ setShowMfaViewBackupCodes,
120
+ setShowOTPVerification,
121
+ };
113
122
  };
114
123
 
115
124
  exports.useDynamicModals = useDynamicModals;
@@ -9,4 +9,9 @@ import { Dispatch, SetStateAction } from 'react';
9
9
  */
10
10
  export declare const useDynamicModals: () => {
11
11
  setShowLinkNewWalletModal: Dispatch<SetStateAction<boolean>>;
12
+ setShowMfaChooseType: Dispatch<SetStateAction<boolean>>;
13
+ setShowMfaEnterBackupCodes: Dispatch<SetStateAction<boolean>>;
14
+ setShowMfaQRCode: Dispatch<SetStateAction<boolean>>;
15
+ setShowMfaViewBackupCodes: Dispatch<SetStateAction<boolean>>;
16
+ setShowOTPVerification: Dispatch<SetStateAction<boolean>>;
12
17
  };
@@ -70,6 +70,7 @@ import '../../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWid
70
70
  import '../../../widgets/DynamicWidget/context/DynamicWidgetContext.js';
71
71
  import '../../../views/TransactionConfirmationView/helpers/transactionErrorMessage.js';
72
72
  import '../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.js';
73
+ import { useMfaModals } from '../useMfaModals/useMfaModals.js';
73
74
  import { useInternalDynamicContext } from '../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.js';
74
75
 
75
76
  /**
@@ -85,6 +86,7 @@ const useDynamicModals = () => {
85
86
  const isLoggedIn = useIsLoggedIn();
86
87
  const { setView } = useViewContext();
87
88
  const canLink = isAllowedToLinkWallet(projectSettings, user === null || user === void 0 ? void 0 : user.verifiedCredentials, multiWallet);
89
+ const { setShowMfaChooseType, setShowMfaEnterBackupCodes, setShowMfaQRCode, setShowMfaViewBackupCodes, setShowOTPVerification, } = useMfaModals();
88
90
  const setSetShowLinkNewWalletModalWithInit = useCallback((value) => {
89
91
  if (value) {
90
92
  // Do not change state if the user is already signed in and multi-wallet is not enabled
@@ -105,7 +107,14 @@ const useDynamicModals = () => {
105
107
  performMultiWalletChecks: false,
106
108
  });
107
109
  }, [canLink, isLoggedIn, setShowAuthFlow, setView]);
108
- return { setShowLinkNewWalletModal: setSetShowLinkNewWalletModalWithInit };
110
+ return {
111
+ setShowLinkNewWalletModal: setSetShowLinkNewWalletModalWithInit,
112
+ setShowMfaChooseType,
113
+ setShowMfaEnterBackupCodes,
114
+ setShowMfaQRCode,
115
+ setShowMfaViewBackupCodes,
116
+ setShowOTPVerification,
117
+ };
109
118
  };
110
119
 
111
120
  export { useDynamicModals };
@@ -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
  };
@@ -89,6 +89,7 @@ const useKYCFlag = () => {
89
89
  if (isOnlyConnectedMode)
90
90
  return false;
91
91
  const hasAnyKYCFields = getUserProfileFields.getUserProfileFields({
92
+ customFields: projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.customFields,
92
93
  projectSettingsKyc: projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.kyc,
93
94
  user,
94
95
  });
@@ -85,6 +85,7 @@ const useKYCFlag = () => {
85
85
  if (isOnlyConnectedMode)
86
86
  return false;
87
87
  const hasAnyKYCFields = getUserProfileFields({
88
+ customFields: projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.customFields,
88
89
  projectSettingsKyc: projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.kyc,
89
90
  user,
90
91
  });
@@ -0,0 +1 @@
1
+ export { useMfaModals } from './useMfaModals';
@@ -0,0 +1,131 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var React = require('react');
7
+ var ViewContext = require('../../../context/ViewContext/ViewContext.cjs');
8
+ require('../../../context/DynamicContext/DynamicContext.cjs');
9
+ require('@dynamic-labs/sdk-api-core');
10
+ require('../../../shared/logger.cjs');
11
+ require('@dynamic-labs/iconic');
12
+ require('@dynamic-labs/wallet-connector-core');
13
+ require('react/jsx-runtime');
14
+ require('@dynamic-labs/wallet-book');
15
+ require('../../constants/colors.cjs');
16
+ require('../../constants/values.cjs');
17
+ require('../../../shared/utils/classes/storage/localStorage.cjs');
18
+ require('@dynamic-labs/utils');
19
+ require('../../../shared/consts/index.cjs');
20
+ require('../../../events/dynamicEvents.cjs');
21
+ require('../../../../../_virtual/_tslib.cjs');
22
+ require('../../../context/CaptchaContext/CaptchaContext.cjs');
23
+ require('../../../context/ErrorContext/ErrorContext.cjs');
24
+ require('@dynamic-labs/multi-wallet');
25
+ require('react-international-phone');
26
+ require('viem');
27
+ require('viem/chains');
28
+ require('../../../config/ApiEndpoint.cjs');
29
+ require('../../../locale/locale.cjs');
30
+ require('../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
31
+ require('../../../context/AccountExistsContext/AccountExistsContext.cjs');
32
+ require('../../../context/UserWalletsContext/UserWalletsContext.cjs');
33
+ require('../../../context/VerificationContext/VerificationContext.cjs');
34
+ require('react-dom');
35
+ require('../../../context/WalletContext/WalletContext.cjs');
36
+ require('../../../context/ThemeContext/ThemeContext.cjs');
37
+ require('@dynamic-labs/types');
38
+ require('../../../context/LoadingContext/LoadingContext.cjs');
39
+ require('yup');
40
+ require('../../../context/MockContext/MockContext.cjs');
41
+ require('react-i18next');
42
+ require('../../../context/FieldsStateContext/FieldsStateContext.cjs');
43
+ require('../useUserUpdateRequest/useUpdateUser/useUpdateUser.cjs');
44
+ require('../../../context/UserFieldEditorContext/UserFieldEditorContext.cjs');
45
+ require('@dynamic-labs/rpc-providers');
46
+ require('../../../components/Alert/Alert.cjs');
47
+ require('../../../components/ShadowDOM/ShadowDOM.cjs');
48
+ require('../../../components/IconButton/IconButton.cjs');
49
+ require('../../../components/InlineWidget/InlineWidget.cjs');
50
+ require('../../../components/Input/Input.cjs');
51
+ require('../../../components/IsBrowser/IsBrowser.cjs');
52
+ require('../../../components/MenuList/Dropdown/Dropdown.cjs');
53
+ require('../../../components/Transition/ZoomTransition/ZoomTransition.cjs');
54
+ require('../../../components/Transition/SlideInUpTransition/SlideInUpTransition.cjs');
55
+ require('../../../components/Transition/OpacityTransition/OpacityTransition.cjs');
56
+ require('../../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.cjs');
57
+ require('../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.cjs');
58
+ require('../../../components/Popper/Popper/Popper.cjs');
59
+ require('../../../components/Popper/PopperContext/PopperContext.cjs');
60
+ require('react-focus-lock');
61
+ require('qrcode');
62
+ require('formik');
63
+ require('../../../views/WalletList/WalletList.cjs');
64
+ require('../../../context/SocialRedirectContext/SocialRedirectContext.cjs');
65
+ require('../../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.cjs');
66
+ require('@hcaptcha/react-hcaptcha');
67
+ require('../../../context/FooterAnimationContext/index.cjs');
68
+ require('../../../views/LoginView/sections/PhoneNumberSignInSection/PhoneNumberSignInSection.cjs');
69
+ require('../../../context/WalletGroupContext/WalletGroupContext.cjs');
70
+ require('../../../context/PasskeyContext/PasskeyContext.cjs');
71
+ require('../../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.cjs');
72
+ require('../../../widgets/DynamicWidget/context/DynamicWidgetContext.cjs');
73
+ require('../../../views/TransactionConfirmationView/helpers/transactionErrorMessage.cjs');
74
+ require('../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
75
+ var useInternalDynamicContext = require('../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.cjs');
76
+
77
+ const useMfaModals = () => {
78
+ var _a;
79
+ const { setShowAuthFlow, projectSettings } = useInternalDynamicContext.useInternalDynamicContext();
80
+ const { setView } = ViewContext.useViewContext();
81
+ const isMfaEnabled = (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.security.mfa) === null || _a === void 0 ? void 0 : _a.enabled;
82
+ const setShowMfaChooseType = React.useCallback((value) => {
83
+ if (value) {
84
+ if (!isMfaEnabled)
85
+ return;
86
+ setView('mfa-choose-device');
87
+ }
88
+ setShowAuthFlow(value, { emitCancelAuth: true });
89
+ }, [isMfaEnabled, setShowAuthFlow, setView]);
90
+ const setShowMfaQRCode = React.useCallback((value) => {
91
+ if (value) {
92
+ if (!isMfaEnabled)
93
+ return;
94
+ setView('mfa-secure-device');
95
+ }
96
+ setShowAuthFlow(value, { emitCancelAuth: true });
97
+ }, [isMfaEnabled, setShowAuthFlow, setView]);
98
+ const setShowOTPVerification = React.useCallback((value) => {
99
+ if (value) {
100
+ if (!isMfaEnabled)
101
+ return;
102
+ setView('mfa-verification');
103
+ }
104
+ setShowAuthFlow(value, { emitCancelAuth: true });
105
+ }, [isMfaEnabled, setShowAuthFlow, setView]);
106
+ const setShowMfaViewBackupCodes = React.useCallback((value) => {
107
+ if (value) {
108
+ if (!isMfaEnabled)
109
+ return;
110
+ setView('mfa-display-backup-codes');
111
+ }
112
+ setShowAuthFlow(value, { emitCancelAuth: true });
113
+ }, [isMfaEnabled, setShowAuthFlow, setView]);
114
+ const setShowMfaEnterBackupCodes = React.useCallback((value) => {
115
+ if (value) {
116
+ if (!isMfaEnabled)
117
+ return;
118
+ setView('mfa-recovery');
119
+ }
120
+ setShowAuthFlow(value, { emitCancelAuth: true });
121
+ }, [isMfaEnabled, setShowAuthFlow, setView]);
122
+ return {
123
+ setShowMfaChooseType,
124
+ setShowMfaEnterBackupCodes,
125
+ setShowMfaQRCode,
126
+ setShowMfaViewBackupCodes,
127
+ setShowOTPVerification,
128
+ };
129
+ };
130
+
131
+ exports.useMfaModals = useMfaModals;
@@ -0,0 +1,8 @@
1
+ import { Dispatch, SetStateAction } from 'react';
2
+ export declare const useMfaModals: () => {
3
+ setShowMfaChooseType: Dispatch<SetStateAction<boolean>>;
4
+ setShowMfaEnterBackupCodes: Dispatch<SetStateAction<boolean>>;
5
+ setShowMfaQRCode: Dispatch<SetStateAction<boolean>>;
6
+ setShowMfaViewBackupCodes: Dispatch<SetStateAction<boolean>>;
7
+ setShowOTPVerification: Dispatch<SetStateAction<boolean>>;
8
+ };