@dynamic-labs/sdk-react-core 2.1.0-alpha.18 → 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 (93) hide show
  1. package/CHANGELOG.md +16 -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/UserProfile/parts/UserProfileField/UserProfileField.d.ts +1 -1
  14. package/src/lib/components/index.d.ts +1 -0
  15. package/src/lib/context/DynamicContext/DynamicContext.cjs +1 -1
  16. package/src/lib/context/DynamicContext/DynamicContext.js +1 -1
  17. package/src/lib/context/DynamicContext/hooks/useNameService/useNameService.cjs +4 -5
  18. package/src/lib/context/DynamicContext/hooks/useNameService/useNameService.d.ts +3 -2
  19. package/src/lib/context/DynamicContext/hooks/useNameService/useNameService.js +4 -5
  20. package/src/lib/context/PasskeyContext/PasskeyContext.cjs +1 -1
  21. package/src/lib/context/PasskeyContext/PasskeyContext.js +2 -2
  22. package/src/lib/context/ViewContext/types/index.d.ts +1 -1
  23. package/src/lib/data/api/api.cjs +2 -2
  24. package/src/lib/data/api/api.js +2 -2
  25. package/src/lib/data/api/user/user.cjs +3 -0
  26. package/src/lib/data/api/user/user.js +4 -1
  27. package/src/lib/locale/en/translation.cjs +38 -21
  28. package/src/lib/locale/en/translation.d.ts +38 -21
  29. package/src/lib/locale/en/translation.js +38 -21
  30. package/src/lib/modals/SignMessageConfirmationModal/getProperErrorMessage.cjs +19 -2
  31. package/src/lib/modals/SignMessageConfirmationModal/getProperErrorMessage.js +19 -2
  32. package/src/lib/shared/assets/index.d.ts +1 -0
  33. package/src/lib/shared/assets/mfa-recovery-icon.cjs +54 -0
  34. package/src/lib/shared/assets/mfa-recovery-icon.js +30 -0
  35. package/src/lib/shared/utils/functions/lastAuthenticatedAccount/index.d.ts +2 -2
  36. package/src/lib/styles/index.shadow.cjs +1 -1
  37. package/src/lib/styles/index.shadow.js +1 -1
  38. package/src/lib/utils/functions/createUserProfile/createUserProfile.cjs +1 -1
  39. package/src/lib/utils/functions/createUserProfile/createUserProfile.d.ts +2 -1
  40. package/src/lib/utils/functions/createUserProfile/createUserProfile.js +1 -1
  41. package/src/lib/utils/functions/getEnabledSocialSignInProvidersAsProviderEnum/getEnabledSocialSignInProvidersAsProviderEnum.cjs +21 -0
  42. package/src/lib/utils/functions/getEnabledSocialSignInProvidersAsProviderEnum/getEnabledSocialSignInProvidersAsProviderEnum.js +17 -0
  43. package/src/lib/utils/functions/getUserProfileFields/getUserProfileFields.cjs +6 -3
  44. package/src/lib/utils/functions/getUserProfileFields/getUserProfileFields.d.ts +2 -1
  45. package/src/lib/utils/functions/getUserProfileFields/getUserProfileFields.js +7 -4
  46. package/src/lib/utils/functions/validateMfaRecoveryCode/index.d.ts +1 -0
  47. package/src/lib/utils/functions/validateMfaRecoveryCode/validateMfaRecoveryCode.cjs +11 -0
  48. package/src/lib/utils/functions/validateMfaRecoveryCode/validateMfaRecoveryCode.d.ts +1 -0
  49. package/src/lib/utils/functions/validateMfaRecoveryCode/validateMfaRecoveryCode.js +7 -0
  50. package/src/lib/utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.cjs +5 -3
  51. package/src/lib/utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.js +5 -3
  52. package/src/lib/utils/hooks/useDynamicLayoutData/useDynamicLayoutData.cjs +8 -0
  53. package/src/lib/utils/hooks/useDynamicLayoutData/useDynamicLayoutData.js +8 -0
  54. package/src/lib/utils/hooks/useDynamicModals/useDynamicModals.cjs +10 -1
  55. package/src/lib/utils/hooks/useDynamicModals/useDynamicModals.d.ts +5 -0
  56. package/src/lib/utils/hooks/useDynamicModals/useDynamicModals.js +10 -1
  57. package/src/lib/utils/hooks/useKYCFlag/useKYCFlag.cjs +1 -0
  58. package/src/lib/utils/hooks/useKYCFlag/useKYCFlag.js +1 -0
  59. package/src/lib/utils/hooks/useMfaModals/index.d.ts +1 -0
  60. package/src/lib/utils/hooks/useMfaModals/useMfaModals.cjs +131 -0
  61. package/src/lib/utils/hooks/useMfaModals/useMfaModals.d.ts +8 -0
  62. package/src/lib/utils/hooks/useMfaModals/useMfaModals.js +127 -0
  63. package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.cjs +24 -3
  64. package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.d.ts +1 -0
  65. package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.js +24 -3
  66. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.cjs +8 -4
  67. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.d.ts +3 -3
  68. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.js +8 -4
  69. package/src/lib/utils/hooks/useUserAuth/useUserAuth.cjs +9 -2
  70. package/src/lib/utils/hooks/useUserAuth/useUserAuth.js +10 -3
  71. package/src/lib/utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUser.cjs +7 -2
  72. package/src/lib/utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUser.js +7 -2
  73. package/src/lib/views/EmailVerification/EmailVerification.cjs +1 -10
  74. package/src/lib/views/EmailVerification/EmailVerification.js +1 -10
  75. package/src/lib/views/FarcasterQrCodeView/FarcasterQrCodeView.cjs +1 -1
  76. package/src/lib/views/FarcasterQrCodeView/FarcasterQrCodeView.js +1 -1
  77. package/src/lib/views/LoginView/sections/SocialSignInSection/DynamicSocialSignIn/DynamicSocialSignIn.cjs +5 -2
  78. package/src/lib/views/LoginView/sections/SocialSignInSection/DynamicSocialSignIn/DynamicSocialSignIn.js +5 -2
  79. package/src/lib/views/MfaRecoveryView/MfaRecoveryView.cjs +116 -0
  80. package/src/lib/views/MfaRecoveryView/MfaRecoveryView.d.ts +2 -0
  81. package/src/lib/views/MfaRecoveryView/MfaRecoveryView.js +112 -0
  82. package/src/lib/views/MfaRecoveryView/index.d.ts +1 -0
  83. package/src/lib/views/viewToComponentMap.cjs +2 -2
  84. package/src/lib/views/viewToComponentMap.d.ts +2 -2
  85. package/src/lib/views/viewToComponentMap.js +2 -2
  86. package/src/lib/widgets/DynamicBridgeWidget/views/ProfileView/ProfileView.cjs +5 -1
  87. package/src/lib/widgets/DynamicBridgeWidget/views/ProfileView/ProfileView.js +5 -1
  88. package/src/lib/widgets/DynamicWidget/prompts/PendingConnectionModal/PendingConnectionModal.cjs +3 -3
  89. package/src/lib/widgets/DynamicWidget/prompts/PendingConnectionModal/PendingConnectionModal.js +3 -3
  90. package/src/lib/views/EmailUpdate/EmailUpdate.cjs +0 -131
  91. package/src/lib/views/EmailUpdate/EmailUpdate.d.ts +0 -2
  92. package/src/lib/views/EmailUpdate/EmailUpdate.js +0 -127
  93. package/src/lib/views/EmailUpdate/index.d.ts +0 -1
@@ -79,7 +79,6 @@ const DynamicSocialSignIn = ({ defaultProvider, numOfItemsToDisplay, collapsedLa
79
79
  const { setView, goToInitialView } = useViewContext();
80
80
  const { engageCaptcha } = useCaptchaContext();
81
81
  const { isProcessing, connectSocialAccount } = useSocialAuth({
82
- authMode: 'signin',
83
82
  onError: () => {
84
83
  goToInitialView();
85
84
  },
@@ -100,6 +99,7 @@ const DynamicSocialSignIn = ({ defaultProvider, numOfItemsToDisplay, collapsedLa
100
99
  setView('social-redirect-view');
101
100
  setShowAuthFlow(true);
102
101
  connectSocialAccount({
102
+ authMode: 'signin',
103
103
  captchaToken,
104
104
  provider: providerEnum,
105
105
  });
@@ -109,7 +109,10 @@ const DynamicSocialSignIn = ({ defaultProvider, numOfItemsToDisplay, collapsedLa
109
109
  }
110
110
  setView('social-redirect-view');
111
111
  setShowAuthFlow(true);
112
- connectSocialAccount({ provider: providerEnum });
112
+ connectSocialAccount({
113
+ authMode: 'signin',
114
+ provider: providerEnum,
115
+ });
113
116
  };
114
117
  return (jsx(SocialSignIn, { onSelectProvider: onSelectProvider, providers: enabledSocialProviders, selectedProvider: socialProvider, isLoading: isProcessing, testId: 'dynamic-social-sign-in', defaultProvider: defaultProvider, numOfItemsToDisplay: numOfItemsToDisplay, collapsedLayout: collapsedLayout }));
115
118
  };
@@ -0,0 +1,116 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var _tslib = require('../../../../_virtual/_tslib.cjs');
7
+ var jsxRuntime = require('react/jsx-runtime');
8
+ var React = require('react');
9
+ var reactI18next = require('react-i18next');
10
+ require('../../events/dynamicEvents.cjs');
11
+ require('@dynamic-labs/utils');
12
+ require('../../context/DynamicContext/DynamicContext.cjs');
13
+ require('@dynamic-labs/sdk-api-core');
14
+ require('../../shared/logger.cjs');
15
+ require('@dynamic-labs/iconic');
16
+ require('@dynamic-labs/wallet-connector-core');
17
+ require('../../context/ViewContext/ViewContext.cjs');
18
+ require('@dynamic-labs/wallet-book');
19
+ require('../../utils/constants/colors.cjs');
20
+ require('../../utils/constants/values.cjs');
21
+ require('../../shared/utils/classes/storage/localStorage.cjs');
22
+ require('../../shared/consts/index.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('viem');
28
+ require('viem/chains');
29
+ require('../../config/ApiEndpoint.cjs');
30
+ require('../../locale/locale.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('@dynamic-labs/types');
39
+ require('../../context/LoadingContext/LoadingContext.cjs');
40
+ require('yup');
41
+ require('../../context/MockContext/MockContext.cjs');
42
+ require('../../context/FieldsStateContext/FieldsStateContext.cjs');
43
+ require('../../utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUser.cjs');
44
+ require('../../context/UserFieldEditorContext/UserFieldEditorContext.cjs');
45
+ require('@dynamic-labs/rpc-providers');
46
+ var Typography = require('../../components/Typography/Typography.cjs');
47
+ require('../../context/FooterAnimationContext/index.cjs');
48
+ require('../../components/ShadowDOM/ShadowDOM.cjs');
49
+ require('../../components/Transition/ZoomTransition/ZoomTransition.cjs');
50
+ require('../../components/Transition/SlideInUpTransition/SlideInUpTransition.cjs');
51
+ require('../../components/Transition/OpacityTransition/OpacityTransition.cjs');
52
+ require('../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.cjs');
53
+ require('../../context/SocialRedirectContext/SocialRedirectContext.cjs');
54
+ require('../../context/WalletGroupContext/WalletGroupContext.cjs');
55
+ require('../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.cjs');
56
+ require('react-focus-lock');
57
+ var IconWithSpinner = require('../../components/IconWithSpinner/IconWithSpinner.cjs');
58
+ require('../../widgets/DynamicWidget/context/DynamicWidgetContext.cjs');
59
+ require('../../components/IconButton/IconButton.cjs');
60
+ require('../../components/MenuList/Dropdown/Dropdown.cjs');
61
+ var ErrorContainer = require('../../components/ErrorContainer/ErrorContainer.cjs');
62
+ require('formik');
63
+ var Button = require('../../components/Button/Button.cjs');
64
+ require('../TransactionConfirmationView/helpers/transactionErrorMessage.cjs');
65
+ require('../../components/Alert/Alert.cjs');
66
+ var Input = require('../../components/Input/Input.cjs');
67
+ require('../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.cjs');
68
+ require('../../context/PasskeyContext/PasskeyContext.cjs');
69
+ require('../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
70
+ var useMfa = require('../../utils/hooks/useMfa/useMfa.cjs');
71
+ var MfaRecoveryIcon = require('../../components/MfaRecoveryIcon/MfaRecoveryIcon.cjs');
72
+ require('../../components/InlineWidget/InlineWidget.cjs');
73
+ require('../../components/IsBrowser/IsBrowser.cjs');
74
+ require('../../components/Popper/Popper/Popper.cjs');
75
+ require('../../components/Popper/PopperContext/PopperContext.cjs');
76
+ require('qrcode');
77
+ require('../WalletList/WalletList.cjs');
78
+ require('../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.cjs');
79
+ require('@hcaptcha/react-hcaptcha');
80
+ require('../LoginView/sections/PhoneNumberSignInSection/PhoneNumberSignInSection.cjs');
81
+ var validateMfaRecoveryCode = require('../../utils/functions/validateMfaRecoveryCode/validateMfaRecoveryCode.cjs');
82
+
83
+ const MfaRecoveryView = () => {
84
+ const { t } = reactI18next.useTranslation();
85
+ const { authRecoveryCode } = useMfa.useMfa();
86
+ const [code, setCode] = React.useState('');
87
+ const [isValid, setIsValid] = React.useState(false);
88
+ const [error, setError] = React.useState('');
89
+ const openHelp = () => undefined;
90
+ const handleRecovery = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
91
+ if (!code) {
92
+ setIsValid(false);
93
+ return;
94
+ }
95
+ try {
96
+ yield authRecoveryCode(code);
97
+ }
98
+ catch (e) {
99
+ setError(e.message || 'Something went wrong');
100
+ }
101
+ });
102
+ const handleCodeChanged = (event) => {
103
+ const inputCode = event.target.value;
104
+ setCode(inputCode);
105
+ if (validateMfaRecoveryCode.validateMfaRecoveryCode(inputCode)) {
106
+ setIsValid(true);
107
+ }
108
+ else {
109
+ setIsValid(false);
110
+ setError('');
111
+ }
112
+ };
113
+ return (jsxRuntime.jsxs("div", { className: 'mfa-recovery-view', children: [error && jsxRuntime.jsx(ErrorContainer.ErrorContainer, { children: error }), !error && !isValid && (jsxRuntime.jsx(IconWithSpinner.IconWithSpinner, { Icon: MfaRecoveryIcon.MfaRecoveryScreenIcon, isSpinning: !error && !isValid, iconSize: 96 })), jsxRuntime.jsx("div", { className: 'mfa-recovery-view__body', children: jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', children: t('dyn_mfa.recovery_view.body') }) }), jsxRuntime.jsxs("div", { className: 'mfa-recovery-view__actions', children: [jsxRuntime.jsx(Input.Input, { id: 'mfa-recovery-input', "data-testid": 'mfa-recovery-input', label: t('dyn_mfa.recovery_view.input_label'), onChange: handleCodeChanged, value: code }), jsxRuntime.jsx(Button.Button, { expanded: true, buttonVariant: 'brand-primary', disabled: !isValid, onClick: handleRecovery, dataTestId: 'mfa-recovery-submit', children: jsxRuntime.jsx(Typography.Typography, { children: t('dyn_mfa.recovery_view.button_label') }) })] }), jsxRuntime.jsxs("div", { className: 'mfa-recovery-view__get-help', children: [jsxRuntime.jsx(Typography.Typography, { variant: 'body_small', color: 'secondary', children: t('dyn_mfa.recovery_view.get_help.description') }), jsxRuntime.jsx("button", { onClick: openHelp, children: jsxRuntime.jsx(Typography.Typography, { variant: 'body_small', color: 'link', children: t('dyn_mfa.recovery_view.get_help.button_label') }) })] })] }));
114
+ };
115
+
116
+ exports.MfaRecoveryView = MfaRecoveryView;
@@ -0,0 +1,2 @@
1
+ import { FC } from 'react';
2
+ export declare const MfaRecoveryView: FC;
@@ -0,0 +1,112 @@
1
+ 'use client'
2
+ import { __awaiter } from '../../../../_virtual/_tslib.js';
3
+ import { jsxs, jsx } from 'react/jsx-runtime';
4
+ import { useState } from 'react';
5
+ import { useTranslation } from 'react-i18next';
6
+ import '../../events/dynamicEvents.js';
7
+ import '@dynamic-labs/utils';
8
+ import '../../context/DynamicContext/DynamicContext.js';
9
+ import '@dynamic-labs/sdk-api-core';
10
+ import '../../shared/logger.js';
11
+ import '@dynamic-labs/iconic';
12
+ import '@dynamic-labs/wallet-connector-core';
13
+ import '../../context/ViewContext/ViewContext.js';
14
+ import '@dynamic-labs/wallet-book';
15
+ import '../../utils/constants/colors.js';
16
+ import '../../utils/constants/values.js';
17
+ import '../../shared/utils/classes/storage/localStorage.js';
18
+ import '../../shared/consts/index.js';
19
+ import '../../context/CaptchaContext/CaptchaContext.js';
20
+ import '../../context/ErrorContext/ErrorContext.js';
21
+ import '@dynamic-labs/multi-wallet';
22
+ import 'react-international-phone';
23
+ import 'viem';
24
+ import 'viem/chains';
25
+ import '../../config/ApiEndpoint.js';
26
+ import '../../locale/locale.js';
27
+ import '../../context/AccessDeniedContext/AccessDeniedContext.js';
28
+ import '../../context/AccountExistsContext/AccountExistsContext.js';
29
+ import '../../context/UserWalletsContext/UserWalletsContext.js';
30
+ import '../../context/VerificationContext/VerificationContext.js';
31
+ import 'react-dom';
32
+ import '../../context/WalletContext/WalletContext.js';
33
+ import '../../context/ThemeContext/ThemeContext.js';
34
+ import '@dynamic-labs/types';
35
+ import '../../context/LoadingContext/LoadingContext.js';
36
+ import 'yup';
37
+ import '../../context/MockContext/MockContext.js';
38
+ import '../../context/FieldsStateContext/FieldsStateContext.js';
39
+ import '../../utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUser.js';
40
+ import '../../context/UserFieldEditorContext/UserFieldEditorContext.js';
41
+ import '@dynamic-labs/rpc-providers';
42
+ import { Typography } from '../../components/Typography/Typography.js';
43
+ import '../../context/FooterAnimationContext/index.js';
44
+ import '../../components/ShadowDOM/ShadowDOM.js';
45
+ import '../../components/Transition/ZoomTransition/ZoomTransition.js';
46
+ import '../../components/Transition/SlideInUpTransition/SlideInUpTransition.js';
47
+ import '../../components/Transition/OpacityTransition/OpacityTransition.js';
48
+ import '../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.js';
49
+ import '../../context/SocialRedirectContext/SocialRedirectContext.js';
50
+ import '../../context/WalletGroupContext/WalletGroupContext.js';
51
+ import '../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.js';
52
+ import 'react-focus-lock';
53
+ import { IconWithSpinner } from '../../components/IconWithSpinner/IconWithSpinner.js';
54
+ import '../../widgets/DynamicWidget/context/DynamicWidgetContext.js';
55
+ import '../../components/IconButton/IconButton.js';
56
+ import '../../components/MenuList/Dropdown/Dropdown.js';
57
+ import { ErrorContainer } from '../../components/ErrorContainer/ErrorContainer.js';
58
+ import 'formik';
59
+ import { Button } from '../../components/Button/Button.js';
60
+ import '../TransactionConfirmationView/helpers/transactionErrorMessage.js';
61
+ import '../../components/Alert/Alert.js';
62
+ import { Input } from '../../components/Input/Input.js';
63
+ import '../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.js';
64
+ import '../../context/PasskeyContext/PasskeyContext.js';
65
+ import '../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.js';
66
+ import { useMfa } from '../../utils/hooks/useMfa/useMfa.js';
67
+ import { MfaRecoveryScreenIcon } from '../../components/MfaRecoveryIcon/MfaRecoveryIcon.js';
68
+ import '../../components/InlineWidget/InlineWidget.js';
69
+ import '../../components/IsBrowser/IsBrowser.js';
70
+ import '../../components/Popper/Popper/Popper.js';
71
+ import '../../components/Popper/PopperContext/PopperContext.js';
72
+ import 'qrcode';
73
+ import '../WalletList/WalletList.js';
74
+ import '../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.js';
75
+ import '@hcaptcha/react-hcaptcha';
76
+ import '../LoginView/sections/PhoneNumberSignInSection/PhoneNumberSignInSection.js';
77
+ import { validateMfaRecoveryCode } from '../../utils/functions/validateMfaRecoveryCode/validateMfaRecoveryCode.js';
78
+
79
+ const MfaRecoveryView = () => {
80
+ const { t } = useTranslation();
81
+ const { authRecoveryCode } = useMfa();
82
+ const [code, setCode] = useState('');
83
+ const [isValid, setIsValid] = useState(false);
84
+ const [error, setError] = useState('');
85
+ const openHelp = () => undefined;
86
+ const handleRecovery = () => __awaiter(void 0, void 0, void 0, function* () {
87
+ if (!code) {
88
+ setIsValid(false);
89
+ return;
90
+ }
91
+ try {
92
+ yield authRecoveryCode(code);
93
+ }
94
+ catch (e) {
95
+ setError(e.message || 'Something went wrong');
96
+ }
97
+ });
98
+ const handleCodeChanged = (event) => {
99
+ const inputCode = event.target.value;
100
+ setCode(inputCode);
101
+ if (validateMfaRecoveryCode(inputCode)) {
102
+ setIsValid(true);
103
+ }
104
+ else {
105
+ setIsValid(false);
106
+ setError('');
107
+ }
108
+ };
109
+ return (jsxs("div", { className: 'mfa-recovery-view', children: [error && jsx(ErrorContainer, { children: error }), !error && !isValid && (jsx(IconWithSpinner, { Icon: MfaRecoveryScreenIcon, isSpinning: !error && !isValid, iconSize: 96 })), jsx("div", { className: 'mfa-recovery-view__body', children: jsx(Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', children: t('dyn_mfa.recovery_view.body') }) }), jsxs("div", { className: 'mfa-recovery-view__actions', children: [jsx(Input, { id: 'mfa-recovery-input', "data-testid": 'mfa-recovery-input', label: t('dyn_mfa.recovery_view.input_label'), onChange: handleCodeChanged, value: code }), jsx(Button, { expanded: true, buttonVariant: 'brand-primary', disabled: !isValid, onClick: handleRecovery, dataTestId: 'mfa-recovery-submit', children: jsx(Typography, { children: t('dyn_mfa.recovery_view.button_label') }) })] }), jsxs("div", { className: 'mfa-recovery-view__get-help', children: [jsx(Typography, { variant: 'body_small', color: 'secondary', children: t('dyn_mfa.recovery_view.get_help.description') }), jsx("button", { onClick: openHelp, children: jsx(Typography, { variant: 'body_small', color: 'link', children: t('dyn_mfa.recovery_view.get_help.button_label') }) })] })] }));
110
+ };
111
+
112
+ export { MfaRecoveryView };
@@ -0,0 +1 @@
1
+ export { MfaRecoveryView } from './MfaRecoveryView';
@@ -15,7 +15,6 @@ var CollectUserDataView = require('./CollectUserDataView/CollectUserDataView.cjs
15
15
  var CollectUserDataViewNoWallet = require('./CollectUserDataViewNoWallet/CollectUserDataViewNoWallet.cjs');
16
16
  var CreatePasswordView = require('./CreatePasswordView/CreatePasswordView.cjs');
17
17
  var EmailConfirmationWaitingView = require('./EmailConfirmationWaitingView/EmailConfirmationWaitingView.cjs');
18
- var EmailUpdate = require('./EmailUpdate/EmailUpdate.cjs');
19
18
  var EmailVerification = require('./EmailVerification/EmailVerification.cjs');
20
19
  var EmailWalletOTPVerificationView = require('./EmailWalletOTPVerificationView/EmailWalletOTPVerificationView.cjs');
21
20
  var EmbeddedRevealView = require('./EmbeddedReveal/EmbeddedRevealView/EmbeddedRevealView.cjs');
@@ -117,6 +116,7 @@ var WalletSignSpinnerView = require('./WalletSignSpinnerView/WalletSignSpinnerVi
117
116
  var WalletUsedView = require('./WalletUsedView/WalletUsedView.cjs');
118
117
  var MfaDisplayBackupCodesView = require('./MfaDisplayBackupCodesView/MfaDisplayBackupCodesView.cjs');
119
118
  var MfaVerificationView = require('./MfaVerificationView/MfaVerificationView.cjs');
119
+ var MfaRecoveryView = require('./MfaRecoveryView/MfaRecoveryView.cjs');
120
120
  var PasskeyNewDomainDetectedView = require('./Passkey/PasskeyNewDomainDetectedView/PasskeyNewDomainDetectedView.cjs');
121
121
 
122
122
  const viewToComponentMap = {
@@ -145,6 +145,7 @@ const viewToComponentMap = {
145
145
  'merge-user-accounts-with-same-email': MergeUserAccountsWithSameEmailView.MergeUserAccountsWithSameEmailView,
146
146
  'mfa-choose-device': MfaChooseDeviceView.MfaChooseDeviceView,
147
147
  'mfa-display-backup-codes': MfaDisplayBackupCodesView.MfaDisplayBackupCodesView,
148
+ 'mfa-recovery': MfaRecoveryView.MfaRecoveryView,
148
149
  'mfa-secure-device': MfaSecureDeviceView.MfaSecureDeviceView,
149
150
  'mfa-verification': MfaVerificationView.MfaVerificationView,
150
151
  'multi-wallet-wallet-list': WalletList.WalletList,
@@ -167,7 +168,6 @@ const viewToComponentMap = {
167
168
  'select-wallet-in-wallet-group': SelectWalletInWalletGroupView.SelectWalletInWalletGroupView,
168
169
  'social-redirect-view': SocialRedirectView.SocialRedirectView,
169
170
  'social-wrong-account': SocialWrongAccountView.SocialWrongAccountView,
170
- 'update-email': EmailUpdate.EmailUpdate,
171
171
  'verify-email': EmailVerification.EmailVerification,
172
172
  'verify-sms': SmsVerification.SmsVerification,
173
173
  'wait-for-email-confirmation-view': EmailConfirmationWaitingView.EmailConfirmationWaitingView,
@@ -8,7 +8,7 @@ export declare const viewToComponentMap: {
8
8
  'chainalysis-blocked-wallet': () => JSX.Element;
9
9
  'collect-user-data': () => JSX.Element | null;
10
10
  'collect-user-data-login-no-wallet': import("react").FC<{
11
- userIdentification: keyof import("@dynamic-labs/sdk-api-core").UserFields | "chain" | "ens" | "wallet" | "isAuthenticatedWithAWallet" | "environmentId" | "lastVerifiedCredentialId" | "lists" | "newUser" | "sessionId" | "userId" | "verifiedCredentials" | "scope";
11
+ userIdentification: keyof import("@dynamic-labs/sdk-api-core").UserFields | "chain" | "ens" | "wallet" | "isAuthenticatedWithAWallet" | "environmentId" | "lastVerifiedCredentialId" | "lists" | "newUser" | "sessionId" | "userId" | "verifiedCredentials" | "scope" | "missingFields";
12
12
  userIdentificationOverride?: string | undefined;
13
13
  }>;
14
14
  'create-password-view': import("react").FC<import("./CreatePasswordView/CreatePasswordView").CreatePasswordViewProps>;
@@ -28,6 +28,7 @@ export declare const viewToComponentMap: {
28
28
  'merge-user-accounts-with-same-email': import("react").FC<import("./MergeUserAccountsWithSameEmailView/MergeUserAccountsWithSameEmailView").MergeUserAccountsWithSameEmailViewProps>;
29
29
  'mfa-choose-device': () => JSX.Element;
30
30
  'mfa-display-backup-codes': () => JSX.Element;
31
+ 'mfa-recovery': import("react").FC;
31
32
  'mfa-secure-device': ({ type }: import("./MfaSecureDeviceView").MfaSecureDeviceViewProps) => JSX.Element;
32
33
  'mfa-verification': ({ type }: import("./MfaVerificationView").MfaVerificationViewProps) => JSX.Element;
33
34
  'multi-wallet-wallet-list': ({ isWalletConnectList, }: import("./WalletList").WalletListProps) => JSX.Element;
@@ -55,7 +56,6 @@ export declare const viewToComponentMap: {
55
56
  'select-wallet-in-wallet-group': import("react").FC;
56
57
  'social-redirect-view': () => JSX.Element;
57
58
  'social-wrong-account': () => JSX.Element | null;
58
- 'update-email': () => JSX.Element;
59
59
  'verify-email': import("react").FC<import("./EmailVerification/EmailVerification").EmailVerificationProps>;
60
60
  'verify-sms': import("react").FC;
61
61
  'wait-for-email-confirmation-view': () => JSX.Element;
@@ -11,7 +11,6 @@ import { CollectUserDataView } from './CollectUserDataView/CollectUserDataView.j
11
11
  import { CollectUserDataViewNoWallet } from './CollectUserDataViewNoWallet/CollectUserDataViewNoWallet.js';
12
12
  import { CreatePasswordView } from './CreatePasswordView/CreatePasswordView.js';
13
13
  import { EmailConfirmationWaitingView } from './EmailConfirmationWaitingView/EmailConfirmationWaitingView.js';
14
- import { EmailUpdate } from './EmailUpdate/EmailUpdate.js';
15
14
  import { EmailVerification } from './EmailVerification/EmailVerification.js';
16
15
  import { EmailWalletOTPVerificationView } from './EmailWalletOTPVerificationView/EmailWalletOTPVerificationView.js';
17
16
  import { EmbeddedRevealView } from './EmbeddedReveal/EmbeddedRevealView/EmbeddedRevealView.js';
@@ -113,6 +112,7 @@ import { WalletSignSpinnerView } from './WalletSignSpinnerView/WalletSignSpinner
113
112
  import { WalletUsedView } from './WalletUsedView/WalletUsedView.js';
114
113
  import { MfaDisplayBackupCodesView } from './MfaDisplayBackupCodesView/MfaDisplayBackupCodesView.js';
115
114
  import { MfaVerificationView } from './MfaVerificationView/MfaVerificationView.js';
115
+ import { MfaRecoveryView } from './MfaRecoveryView/MfaRecoveryView.js';
116
116
  import { PasskeyNewDomainDetectedView } from './Passkey/PasskeyNewDomainDetectedView/PasskeyNewDomainDetectedView.js';
117
117
 
118
118
  const viewToComponentMap = {
@@ -141,6 +141,7 @@ const viewToComponentMap = {
141
141
  'merge-user-accounts-with-same-email': MergeUserAccountsWithSameEmailView,
142
142
  'mfa-choose-device': MfaChooseDeviceView,
143
143
  'mfa-display-backup-codes': MfaDisplayBackupCodesView,
144
+ 'mfa-recovery': MfaRecoveryView,
144
145
  'mfa-secure-device': MfaSecureDeviceView,
145
146
  'mfa-verification': MfaVerificationView,
146
147
  'multi-wallet-wallet-list': WalletList,
@@ -163,7 +164,6 @@ const viewToComponentMap = {
163
164
  'select-wallet-in-wallet-group': SelectWalletInWalletGroupView,
164
165
  'social-redirect-view': SocialRedirectView,
165
166
  'social-wrong-account': SocialWrongAccountView,
166
- 'update-email': EmailUpdate,
167
167
  'verify-email': EmailVerification,
168
168
  'verify-sms': SmsVerification,
169
169
  'wait-for-email-confirmation-view': EmailConfirmationWaitingView,
@@ -83,11 +83,15 @@ require('@hcaptcha/react-hcaptcha');
83
83
  require('../../../../views/LoginView/sections/PhoneNumberSignInSection/PhoneNumberSignInSection.cjs');
84
84
 
85
85
  const ProfileView = () => {
86
+ var _a, _b;
86
87
  const { t } = reactI18next.useTranslation();
87
88
  const { setBridgeWidgetView } = DynamicBridgeWidgetContext.useDynamicBridgeWidgetContext();
88
89
  const { projectSettings } = useInternalDynamicContext.useInternalDynamicContext();
89
90
  // Allow to navigate to edit profile view when there are fields what can be edited
90
- const editableUserFields = getUserProfileFields.getEditableUserProfileFields(projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.kyc);
91
+ const editableUserFields = getUserProfileFields.getEditableUserProfileFields([
92
+ ...((_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.kyc) !== null && _a !== void 0 ? _a : []),
93
+ ...((_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.customFields) !== null && _b !== void 0 ? _b : []),
94
+ ]);
91
95
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(UserProfile.UserProfile, { rootClassName: 'profile-view' }), jsxRuntime.jsx(DynamicWidgetFooter.DynamicWidgetFooter, { children: jsxRuntime.jsxs("div", { className: 'profile-view__footer', children: [editableUserFields.length > 0 && (jsxRuntime.jsx(TypographyButton.TypographyButton, { buttonClassName: 'dynamic-widget-footer__button', buttonVariant: 'tertiary', buttonPadding: 'none', typographyProps: {
92
96
  color: 'secondary',
93
97
  variant: 'button_tertiary',
@@ -79,11 +79,15 @@ import '@hcaptcha/react-hcaptcha';
79
79
  import '../../../../views/LoginView/sections/PhoneNumberSignInSection/PhoneNumberSignInSection.js';
80
80
 
81
81
  const ProfileView = () => {
82
+ var _a, _b;
82
83
  const { t } = useTranslation();
83
84
  const { setBridgeWidgetView } = useDynamicBridgeWidgetContext();
84
85
  const { projectSettings } = useInternalDynamicContext();
85
86
  // Allow to navigate to edit profile view when there are fields what can be edited
86
- const editableUserFields = getEditableUserProfileFields(projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.kyc);
87
+ const editableUserFields = getEditableUserProfileFields([
88
+ ...((_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.kyc) !== null && _a !== void 0 ? _a : []),
89
+ ...((_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.customFields) !== null && _b !== void 0 ? _b : []),
90
+ ]);
87
91
  return (jsxs(Fragment, { children: [jsx(UserProfile, { rootClassName: 'profile-view' }), jsx(DynamicWidgetFooter, { children: jsxs("div", { className: 'profile-view__footer', children: [editableUserFields.length > 0 && (jsx(TypographyButton, { buttonClassName: 'dynamic-widget-footer__button', buttonVariant: 'tertiary', buttonPadding: 'none', typographyProps: {
88
92
  color: 'secondary',
89
93
  variant: 'button_tertiary',
@@ -56,8 +56,7 @@ require('../../../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.
56
56
  require('../../../../context/SocialRedirectContext/SocialRedirectContext.cjs');
57
57
  require('../../../../context/WalletGroupContext/WalletGroupContext.cjs');
58
58
  require('../../components/DynamicWidgetHeader/DynamicWidgetHeader.cjs');
59
- var Modal = require('../../../../components/Modal/Modal.cjs');
60
- require('react-focus-lock');
59
+ var PromptModal = require('../../components/PromptModal/PromptModal.cjs');
61
60
  var WidgetPortal = require('../../components/WidgetPortal/WidgetPortal.cjs');
62
61
  var useCloseMultiWalletPrompt = require('../../hooks/useCloseMultiWalletPrompt/useCloseMultiWalletPrompt.cjs');
63
62
  var DefaultPromptModal = require('../DefaultPromptModal/DefaultPromptModal.cjs');
@@ -76,6 +75,7 @@ require('../../../../components/InlineWidget/InlineWidget.cjs');
76
75
  require('../../../../components/IsBrowser/IsBrowser.cjs');
77
76
  require('../../../../components/Popper/Popper/Popper.cjs');
78
77
  require('../../../../components/Popper/PopperContext/PopperContext.cjs');
78
+ require('react-focus-lock');
79
79
  require('qrcode');
80
80
  require('../../../../views/WalletList/WalletList.cjs');
81
81
  require('../../../DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.cjs');
@@ -99,7 +99,7 @@ const PendingConnectionContent = () => {
99
99
  return (jsxRuntime.jsx(DefaultPromptModal.DefaultPromptLayout, { dataTestId: 'pending-connection-modal', icon: jsxRuntime.jsx(AuthProviderIcon.AuthProviderIcon // eslint-disable-line
100
100
  , { jwt: authToken, wallet: selectedWalletWithAction === null || selectedWalletWithAction === void 0 ? void 0 : selectedWalletWithAction.wallet }), title: title, children: jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', color: 'secondary', weight: 'regular', "data-testid": 'content', children: description }) }));
101
101
  };
102
- const PendingConnectionModal = () => (jsxRuntime.jsx(Modal.Modal, { children: jsxRuntime.jsx(PendingConnectionContent, {}) }));
102
+ const PendingConnectionModal = () => (jsxRuntime.jsx(PromptModal.PromptModal, { onClose: useCloseMultiWalletPrompt.useCloseMultiWalletPrompt, children: jsxRuntime.jsx(PendingConnectionContent, {}) }));
103
103
  const PendingConnectionWidgetPortal = () => (jsxRuntime.jsx(WidgetPortal.WidgetPortal, { onClose: useCloseMultiWalletPrompt.useCloseMultiWalletPrompt(), children: jsxRuntime.jsx(PendingConnectionContent, {}) }));
104
104
 
105
105
  exports.PendingConnectionModal = PendingConnectionModal;
@@ -52,8 +52,7 @@ import '../../../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.j
52
52
  import '../../../../context/SocialRedirectContext/SocialRedirectContext.js';
53
53
  import '../../../../context/WalletGroupContext/WalletGroupContext.js';
54
54
  import '../../components/DynamicWidgetHeader/DynamicWidgetHeader.js';
55
- import { Modal } from '../../../../components/Modal/Modal.js';
56
- import 'react-focus-lock';
55
+ import { PromptModal } from '../../components/PromptModal/PromptModal.js';
57
56
  import { WidgetPortal } from '../../components/WidgetPortal/WidgetPortal.js';
58
57
  import { useCloseMultiWalletPrompt } from '../../hooks/useCloseMultiWalletPrompt/useCloseMultiWalletPrompt.js';
59
58
  import { DefaultPromptLayout } from '../DefaultPromptModal/DefaultPromptModal.js';
@@ -72,6 +71,7 @@ import '../../../../components/InlineWidget/InlineWidget.js';
72
71
  import '../../../../components/IsBrowser/IsBrowser.js';
73
72
  import '../../../../components/Popper/Popper/Popper.js';
74
73
  import '../../../../components/Popper/PopperContext/PopperContext.js';
74
+ import 'react-focus-lock';
75
75
  import 'qrcode';
76
76
  import '../../../../views/WalletList/WalletList.js';
77
77
  import '../../../DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.js';
@@ -95,7 +95,7 @@ const PendingConnectionContent = () => {
95
95
  return (jsx(DefaultPromptLayout, { dataTestId: 'pending-connection-modal', icon: jsx(AuthProviderIcon // eslint-disable-line
96
96
  , { jwt: authToken, wallet: selectedWalletWithAction === null || selectedWalletWithAction === void 0 ? void 0 : selectedWalletWithAction.wallet }), title: title, children: jsx(Typography, { variant: 'body_normal', color: 'secondary', weight: 'regular', "data-testid": 'content', children: description }) }));
97
97
  };
98
- const PendingConnectionModal = () => (jsx(Modal, { children: jsx(PendingConnectionContent, {}) }));
98
+ const PendingConnectionModal = () => (jsx(PromptModal, { onClose: useCloseMultiWalletPrompt, children: jsx(PendingConnectionContent, {}) }));
99
99
  const PendingConnectionWidgetPortal = () => (jsx(WidgetPortal, { onClose: useCloseMultiWalletPrompt(), children: jsx(PendingConnectionContent, {}) }));
100
100
 
101
101
  export { PendingConnectionModal, PendingConnectionWidgetPortal };
@@ -1,131 +0,0 @@
1
- 'use client'
2
- 'use strict';
3
-
4
- Object.defineProperty(exports, '__esModule', { value: true });
5
-
6
- var _tslib = require('../../../../_virtual/_tslib.cjs');
7
- var jsxRuntime = require('react/jsx-runtime');
8
- var React = require('react');
9
- var reactI18next = require('react-i18next');
10
- var utils = require('@dynamic-labs/utils');
11
- require('../../events/dynamicEvents.cjs');
12
- require('../../context/DynamicContext/DynamicContext.cjs');
13
- require('@dynamic-labs/sdk-api-core');
14
- var logger = require('../../shared/logger.cjs');
15
- require('@dynamic-labs/iconic');
16
- require('@dynamic-labs/wallet-connector-core');
17
- var ViewContext = require('../../context/ViewContext/ViewContext.cjs');
18
- var chevronLeft = require('../../shared/assets/chevron-left.cjs');
19
- require('@dynamic-labs/wallet-book');
20
- require('../../utils/constants/colors.cjs');
21
- require('../../utils/constants/values.cjs');
22
- require('../../shared/utils/classes/storage/localStorage.cjs');
23
- require('../../shared/consts/index.cjs');
24
- var useInternalDynamicContext = require('../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.cjs');
25
- require('../../context/CaptchaContext/CaptchaContext.cjs');
26
- var ErrorContext = require('../../context/ErrorContext/ErrorContext.cjs');
27
- require('@dynamic-labs/multi-wallet');
28
- require('react-international-phone');
29
- require('viem');
30
- require('viem/chains');
31
- require('../../config/ApiEndpoint.cjs');
32
- require('../../locale/locale.cjs');
33
- var user = require('../../data/api/user/user.cjs');
34
- require('../../context/AccessDeniedContext/AccessDeniedContext.cjs');
35
- require('../../context/AccountExistsContext/AccountExistsContext.cjs');
36
- require('../../context/UserWalletsContext/UserWalletsContext.cjs');
37
- var VerificationContext = require('../../context/VerificationContext/VerificationContext.cjs');
38
- require('react-dom');
39
- require('../../context/WalletContext/WalletContext.cjs');
40
- require('../../context/ThemeContext/ThemeContext.cjs');
41
- require('@dynamic-labs/types');
42
- var LoadingContext = require('../../context/LoadingContext/LoadingContext.cjs');
43
- require('yup');
44
- require('../../context/MockContext/MockContext.cjs');
45
- require('../../context/FieldsStateContext/FieldsStateContext.cjs');
46
- require('../../utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUser.cjs');
47
- require('../../context/UserFieldEditorContext/UserFieldEditorContext.cjs');
48
- require('@dynamic-labs/rpc-providers');
49
- var Typography = require('../../components/Typography/Typography.cjs');
50
- require('../../context/FooterAnimationContext/index.cjs');
51
- require('../../components/ShadowDOM/ShadowDOM.cjs');
52
- require('../../components/Transition/ZoomTransition/ZoomTransition.cjs');
53
- require('../../components/Transition/SlideInUpTransition/SlideInUpTransition.cjs');
54
- require('../../components/Transition/OpacityTransition/OpacityTransition.cjs');
55
- require('../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.cjs');
56
- require('../../context/SocialRedirectContext/SocialRedirectContext.cjs');
57
- require('../../context/WalletGroupContext/WalletGroupContext.cjs');
58
- require('../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.cjs');
59
- require('react-focus-lock');
60
- require('../../widgets/DynamicWidget/context/DynamicWidgetContext.cjs');
61
- var IconButton = require('../../components/IconButton/IconButton.cjs');
62
- require('../../components/MenuList/Dropdown/Dropdown.cjs');
63
- require('formik');
64
- var TypographyButton = require('../../components/TypographyButton/TypographyButton.cjs');
65
- require('../TransactionConfirmationView/helpers/transactionErrorMessage.cjs');
66
- var ModalHeader = require('../../components/ModalHeader/ModalHeader.cjs');
67
- require('../../components/Alert/Alert.cjs');
68
- var Input = require('../../components/Input/Input.cjs');
69
- require('../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.cjs');
70
- require('../../context/PasskeyContext/PasskeyContext.cjs');
71
- require('../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
72
- require('../../components/InlineWidget/InlineWidget.cjs');
73
- require('../../components/IsBrowser/IsBrowser.cjs');
74
- require('../../components/Popper/Popper/Popper.cjs');
75
- require('../../components/Popper/PopperContext/PopperContext.cjs');
76
- require('qrcode');
77
- require('../WalletList/WalletList.cjs');
78
- require('../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.cjs');
79
- require('@hcaptcha/react-hcaptcha');
80
- require('../LoginView/sections/PhoneNumberSignInSection/PhoneNumberSignInSection.cjs');
81
-
82
- const EmailUpdate = () => {
83
- const [updatedEmail, setUpdatedEmail] = React.useState('');
84
- const { setError, setErrorMessage } = ErrorContext.useErrorContext();
85
- const { loading, setLoading } = LoadingContext.useLoadingContext();
86
- const { setView, goToInitialView } = ViewContext.useViewContext();
87
- const { displayedDestination: email, setDisplayedDestination: setEmail, setVerificationUUID, } = VerificationContext.useVerification();
88
- const { environmentId, handleLogOut } = useInternalDynamicContext.useInternalDynamicContext();
89
- const { t } = reactI18next.useTranslation();
90
- const [emailError, setEmailError] = React.useState(undefined);
91
- const handleBackClick = () => {
92
- setView('verify-email');
93
- setError(undefined);
94
- };
95
- const backButton = (jsxRuntime.jsx(IconButton.IconButton, { type: 'button', onClick: handleBackClick, "data-testid": 'back-button', children: jsxRuntime.jsx(chevronLeft.ReactComponent, {}) }));
96
- const handleEmailUpdate = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
97
- try {
98
- if (!updatedEmail) {
99
- return;
100
- }
101
- setEmailError(undefined);
102
- setLoading(true);
103
- const { emailVerification } = yield user.updateUserProfileFields(environmentId, { email: updatedEmail });
104
- if (!emailVerification) {
105
- yield handleLogOut();
106
- goToInitialView();
107
- return;
108
- }
109
- setError(undefined);
110
- setView('verify-email');
111
- setEmail(emailVerification.email);
112
- setVerificationUUID(emailVerification.verificationUUID);
113
- }
114
- catch (error) {
115
- logger.logger.debug(error);
116
- if (error instanceof utils.EmailAlreadyExistsError) {
117
- setEmailError('Email already exists');
118
- return;
119
- }
120
- setErrorMessage(error.code);
121
- }
122
- finally {
123
- setLoading(false);
124
- }
125
- });
126
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(ModalHeader.ModalHeader, { leading: backButton, displayLeading: true, displayBorder: true, children: jsxRuntime.jsx(Typography.Typography, { as: 'h1', variant: 'title', color: 'primary', "data-testid": 'dynamic-auth-modal-heading', className: 'header__typography', copykey: 'dyn_email_update.title', children: t('dyn_email_update.title') }) }), jsxRuntime.jsxs("div", { className: 'email-update__container', children: [jsxRuntime.jsxs("div", { className: 'email-update__copy-text-container', children: [jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', copykey: 'dyn_email_update.current_email', children: t('dyn_email_update.current_email') }), jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', weight: 'bold', color: 'secondary', children: email })] }), jsxRuntime.jsx(Input.Input, { id: 'email_field', onChange: (e) => {
127
- setUpdatedEmail(e.target.value);
128
- }, type: 'email', copykey: 'dyn_email_update.label', label: t('dyn_email_update.label'), className: 'email-update__input', error: Boolean(emailError), message: emailError }), jsxRuntime.jsx(TypographyButton.TypographyButton, { buttonVariant: 'primary', buttonPadding: 'medium', buttonClassName: 'email-update__button', onClick: () => handleEmailUpdate(), loading: loading, copykey: 'dyn_email_update.send_verification', children: t('dyn_email_update.send_verification') })] })] }));
129
- };
130
-
131
- exports.EmailUpdate = EmailUpdate;
@@ -1,2 +0,0 @@
1
- /// <reference types="react" />
2
- export declare const EmailUpdate: () => JSX.Element;