@dynamic-labs/sdk-react-core 2.1.0-alpha.15 → 2.1.0-alpha.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/package.cjs +3 -2
- package/package.js +3 -2
- package/package.json +13 -12
- package/src/index.cjs +0 -2
- package/src/index.d.ts +1 -3
- package/src/index.js +0 -1
- package/src/lib/components/Portal/Portal.cjs +3 -1
- package/src/lib/components/Portal/Portal.js +3 -1
- package/src/lib/context/DynamicContext/DynamicContext.cjs +19 -14
- package/src/lib/context/DynamicContext/DynamicContext.js +19 -14
- package/src/lib/context/DynamicContext/hooks/useHandleLogout/types.d.ts +0 -1
- package/src/lib/context/DynamicContext/hooks/useHandleLogout/useHandleLogout.cjs +5 -1
- package/src/lib/context/DynamicContext/hooks/useHandleLogout/useHandleLogout.js +5 -1
- package/src/lib/context/DynamicContext/types/index.d.ts +4 -1
- package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.cjs +2 -1
- package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.d.ts +1 -1
- package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.js +2 -1
- package/src/lib/context/DynamicContext/validators/validators.cjs +0 -29
- package/src/lib/context/DynamicContext/validators/validators.d.ts +0 -2
- package/src/lib/context/DynamicContext/validators/validators.js +1 -29
- package/src/lib/context/ViewContext/types/index.d.ts +1 -1
- package/src/lib/locale/en/translation.cjs +18 -0
- package/src/lib/locale/en/translation.d.ts +18 -0
- package/src/lib/locale/en/translation.js +18 -0
- package/src/lib/shared/utils/classes/storage/localStorage.cjs +1 -8
- package/src/lib/shared/utils/classes/storage/localStorage.js +2 -9
- package/src/lib/shared/utils/functions/index.d.ts +0 -1
- package/src/lib/store/actions/storeActions/index.d.ts +1 -0
- package/src/lib/store/actions/storeActions/storeActions.cjs +10 -0
- package/src/lib/store/actions/storeActions/storeActions.d.ts +1 -0
- package/src/lib/store/actions/storeActions/storeActions.js +6 -0
- package/src/lib/store/actions/userActions/index.d.ts +1 -0
- package/src/lib/store/actions/userActions/userActions.cjs +10 -0
- package/src/lib/store/actions/userActions/userActions.d.ts +7 -0
- package/src/lib/store/actions/userActions/userActions.js +6 -0
- package/src/lib/store/hooks/useUser/index.d.ts +1 -0
- package/src/lib/store/hooks/useUser/useUser.cjs +12 -0
- package/src/lib/store/hooks/useUser/useUser.d.ts +1 -0
- package/src/lib/store/hooks/useUser/useUser.js +8 -0
- package/src/lib/store/index.d.ts +4 -0
- package/src/lib/store/store.cjs +24 -0
- package/src/lib/store/store.d.ts +13 -0
- package/src/lib/store/store.js +19 -0
- package/src/lib/store/types.d.ts +4 -0
- package/src/lib/store/utils/createStore/createStore.cjs +21 -0
- package/src/lib/store/utils/createStore/createStore.d.ts +16 -0
- package/src/lib/store/utils/createStore/createStore.js +17 -0
- package/src/lib/store/utils/createStore/index.d.ts +1 -0
- package/src/lib/store/utils/syncLegacyStorage/index.d.ts +1 -0
- package/src/lib/store/utils/syncLegacyStorage/syncLegacyStorage.cjs +30 -0
- package/src/lib/store/utils/syncLegacyStorage/syncLegacyStorage.d.ts +2 -0
- package/src/lib/store/utils/syncLegacyStorage/syncLegacyStorage.js +26 -0
- package/src/lib/styles/index.shadow.cjs +1 -1
- package/src/lib/styles/index.shadow.js +1 -1
- package/src/lib/utils/constants/index.d.ts +1 -1
- package/src/lib/utils/constants/localStorage.cjs +2 -2
- package/src/lib/utils/constants/localStorage.d.ts +1 -1
- package/src/lib/utils/constants/localStorage.js +2 -2
- package/src/lib/utils/functions/downloadFile/downloadFile.cjs +15 -0
- package/src/lib/utils/functions/downloadFile/downloadFile.d.ts +1 -0
- package/src/lib/utils/functions/downloadFile/downloadFile.js +11 -0
- package/src/lib/utils/functions/downloadFile/index.d.ts +1 -0
- package/src/lib/utils/functions/index.d.ts +1 -0
- package/src/lib/utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.cjs +4 -2
- package/src/lib/utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.js +4 -2
- package/src/lib/utils/hooks/useDynamicLayoutData/useDynamicLayoutData.cjs +4 -0
- package/src/lib/utils/hooks/useDynamicLayoutData/useDynamicLayoutData.js +4 -0
- package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.cjs +6 -3
- package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.d.ts +1 -4
- package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.js +5 -2
- package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.cjs +6 -2
- package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.d.ts +1 -4
- package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.js +5 -1
- package/src/lib/views/CreatePasswordView/SavePasswordStep/SavePasswordStep.cjs +5 -10
- package/src/lib/views/CreatePasswordView/SavePasswordStep/SavePasswordStep.js +5 -10
- package/src/lib/views/MfaDisplayBackupCodesView/MfaDisplayBackupCodesView.cjs +111 -0
- package/src/lib/views/MfaDisplayBackupCodesView/MfaDisplayBackupCodesView.d.ts +2 -0
- package/src/lib/views/MfaDisplayBackupCodesView/MfaDisplayBackupCodesView.js +107 -0
- package/src/lib/views/MfaDisplayBackupCodesView/index.d.ts +1 -0
- package/src/lib/views/MfaVerificationView/MfaVerificationView.cjs +3 -3
- package/src/lib/views/MfaVerificationView/MfaVerificationView.js +3 -3
- package/src/lib/views/WalletList/WalletListGridTabs/WalletListGridTabs.cjs +1 -1
- package/src/lib/views/WalletList/WalletListGridTabs/WalletListGridTabs.js +1 -1
- package/src/lib/views/WalletList/hooks/useTabState.cjs +4 -1
- package/src/lib/views/WalletList/hooks/useTabState.js +4 -1
- package/src/lib/views/WalletList/utils/getInitialTabIndex/getInitialTabIndex.cjs +22 -0
- package/src/lib/views/WalletList/utils/getInitialTabIndex/getInitialTabIndex.d.ts +2 -0
- package/src/lib/views/WalletList/utils/getInitialTabIndex/getInitialTabIndex.js +18 -0
- package/src/lib/views/WalletList/utils/getInitialTabIndex/index.d.ts +1 -0
- package/src/lib/views/viewToComponentMap.cjs +2 -0
- package/src/lib/views/viewToComponentMap.d.ts +1 -0
- package/src/lib/views/viewToComponentMap.js +2 -0
- package/src/lib/shared/utils/functions/validateType/index.d.ts +0 -1
- package/src/lib/shared/utils/functions/validateType/validateType.cjs +0 -30
- package/src/lib/shared/utils/functions/validateType/validateType.d.ts +0 -1
- package/src/lib/shared/utils/functions/validateType/validateType.js +0 -26
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { AUTH_TOKEN, AUTH_MIN_TOKEN, AUTH_ONBOARDING_TOKEN,
|
|
1
|
+
export { AUTH_TOKEN, AUTH_MIN_TOKEN, AUTH_ONBOARDING_TOKEN, STORE_STORAGE_KEY, LAST_USED_WALLET, NETWORKS_STORAGE_KEY, NONCE_STORAGE_KEY, PRIMARY_WALLET_ID, THEME, WALLET_PICKER_SEARCH_KEY, AUTH_MODE, PHANTOM_SIGNATURE_STATE, } from './localStorage';
|
|
2
2
|
export { BASE_LIGHT_1, BASE_LIGHT_2, BASE_LIGHT_3, BASE_LIGHT_4, BASE_LIGHT_5, BASE_DARK_5, TEXT_LIGHT_PRIMARY, TEXT_LIGHT_SECONDARY, TEXT_LIGHT_TERTIARY, TEXT_LIGHT_LINK, CONNECTION_LIGHT_GREEN, CONNECTION_LIGHT_ORANGE, ERROR_LIGHT_1, ERROR_LIGHT_2, OVERLAY_LIGHT, HOVER_LIGHT, LOADING_ANIMATION_GRADIENT_LIGHT, BASE_DARK_1, BASE_DARK_2, BASE_DARK_3, BASE_DARK_4, DYNAMIC_CONNECT_BUTTON_BACKGROUND, DYNAMIC_CONNECT_BUTTON_BORDER, DYNAMIC_CONNECT_BUTTON_COLOR, TEXT_DARK_PRIMARY, TEXT_DARK_SECONDARY, TEXT_DARK_TERTIARY, TEXT_DARK_LINK, BRAND_HOVER, BRAND_PRIMARY, BRAND_SECONDARY, CONNECTION_DARK_GREEN, CONNECTION_DARK_ORANGE, ERROR_DARK_1, ERROR_DARK_2, OVERLAY_DARK, HOVER_DARK, LOADING_ANIMATION_GRADIENT_DARK, SHADOW_DOWN_1, SHADOW_DOWN_2, SHADOW_DOWN_3, SHADOW_UP_1, BRAND_HOVER_COLOR, BRAND_PRIMARY_COLOR, BRAND_SECONDARY_COLOR, } from './colors';
|
|
3
3
|
export { BORDER_SQUARE, BORDER_ROUNDED, BORDER_RADIUS } from './theme';
|
|
4
4
|
export { TITLE, BODY_NORMAL, BODY_SMALL, BODY_MINI, BUTTON_PRIMARY, BUTTON_SECONDARY, NUMBERS_BIG, NUMBERS_MEDIUM, } from './typography';
|
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
6
6
|
const AUTH_TOKEN = 'dynamic_authentication_token';
|
|
7
7
|
const AUTH_MIN_TOKEN = 'dynamic_min_authentication_token';
|
|
8
8
|
const AUTH_ONBOARDING_TOKEN = 'dynamic_onboarding_authentication_token';
|
|
9
|
-
const AUTH_USER = 'dynamic_authenticated_user';
|
|
10
9
|
const LAST_USED_WALLET = 'dynamic_last_used_wallet';
|
|
11
10
|
const NETWORKS_STORAGE_KEY = 'dynamic_networks';
|
|
12
11
|
const NONCE_STORAGE_KEY = 'dynamic_nonce';
|
|
@@ -27,12 +26,12 @@ const PHONE_INPUT_DEFAULT_COUNTRY = 'dynamic_phone_input_default_country';
|
|
|
27
26
|
* Used to identify the purpose of a signature after phantom redirects back to the app in mobile
|
|
28
27
|
*/
|
|
29
28
|
const PHANTOM_SIGNATURE_STATE = 'phantom_verification_type';
|
|
29
|
+
const STORE_STORAGE_KEY = 'dynamic_store';
|
|
30
30
|
|
|
31
31
|
exports.AUTH_MIN_TOKEN = AUTH_MIN_TOKEN;
|
|
32
32
|
exports.AUTH_MODE = AUTH_MODE;
|
|
33
33
|
exports.AUTH_ONBOARDING_TOKEN = AUTH_ONBOARDING_TOKEN;
|
|
34
34
|
exports.AUTH_TOKEN = AUTH_TOKEN;
|
|
35
|
-
exports.AUTH_USER = AUTH_USER;
|
|
36
35
|
exports.BRIDGE_ONBOARDING_COMPLETED = BRIDGE_ONBOARDING_COMPLETED;
|
|
37
36
|
exports.CONNECTED_WALLETS_INFO = CONNECTED_WALLETS_INFO;
|
|
38
37
|
exports.CONNECTED_WALLET_NAME_SERVICE = CONNECTED_WALLET_NAME_SERVICE;
|
|
@@ -47,5 +46,6 @@ exports.PHANTOM_SIGNATURE_STATE = PHANTOM_SIGNATURE_STATE;
|
|
|
47
46
|
exports.PHONE_INPUT_DEFAULT_COUNTRY = PHONE_INPUT_DEFAULT_COUNTRY;
|
|
48
47
|
exports.PRIMARY_WALLET_ID = PRIMARY_WALLET_ID;
|
|
49
48
|
exports.PROJECT_SETTINGS_STORAGE_KEY = PROJECT_SETTINGS_STORAGE_KEY;
|
|
49
|
+
exports.STORE_STORAGE_KEY = STORE_STORAGE_KEY;
|
|
50
50
|
exports.WAGMI_LAST_SESSION_SETTINGS = WAGMI_LAST_SESSION_SETTINGS;
|
|
51
51
|
exports.WALLET_PICKER_SEARCH_KEY = WALLET_PICKER_SEARCH_KEY;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export declare const AUTH_TOKEN = "dynamic_authentication_token";
|
|
2
2
|
export declare const AUTH_MIN_TOKEN = "dynamic_min_authentication_token";
|
|
3
3
|
export declare const AUTH_ONBOARDING_TOKEN = "dynamic_onboarding_authentication_token";
|
|
4
|
-
export declare const AUTH_USER = "dynamic_authenticated_user";
|
|
5
4
|
export declare const LAST_USED_WALLET = "dynamic_last_used_wallet";
|
|
6
5
|
export declare const NETWORKS_STORAGE_KEY = "dynamic_networks";
|
|
7
6
|
export declare const NONCE_STORAGE_KEY = "dynamic_nonce";
|
|
@@ -32,3 +31,4 @@ export type PhantomSignatureState = {
|
|
|
32
31
|
* Used to identify the purpose of a signature after phantom redirects back to the app in mobile
|
|
33
32
|
*/
|
|
34
33
|
export declare const PHANTOM_SIGNATURE_STATE = "phantom_verification_type";
|
|
34
|
+
export declare const STORE_STORAGE_KEY = "dynamic_store";
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
const AUTH_TOKEN = 'dynamic_authentication_token';
|
|
3
3
|
const AUTH_MIN_TOKEN = 'dynamic_min_authentication_token';
|
|
4
4
|
const AUTH_ONBOARDING_TOKEN = 'dynamic_onboarding_authentication_token';
|
|
5
|
-
const AUTH_USER = 'dynamic_authenticated_user';
|
|
6
5
|
const LAST_USED_WALLET = 'dynamic_last_used_wallet';
|
|
7
6
|
const NETWORKS_STORAGE_KEY = 'dynamic_networks';
|
|
8
7
|
const NONCE_STORAGE_KEY = 'dynamic_nonce';
|
|
@@ -23,5 +22,6 @@ const PHONE_INPUT_DEFAULT_COUNTRY = 'dynamic_phone_input_default_country';
|
|
|
23
22
|
* Used to identify the purpose of a signature after phantom redirects back to the app in mobile
|
|
24
23
|
*/
|
|
25
24
|
const PHANTOM_SIGNATURE_STATE = 'phantom_verification_type';
|
|
25
|
+
const STORE_STORAGE_KEY = 'dynamic_store';
|
|
26
26
|
|
|
27
|
-
export { AUTH_MIN_TOKEN, AUTH_MODE, AUTH_ONBOARDING_TOKEN, AUTH_TOKEN,
|
|
27
|
+
export { AUTH_MIN_TOKEN, AUTH_MODE, AUTH_ONBOARDING_TOKEN, AUTH_TOKEN, BRIDGE_ONBOARDING_COMPLETED, CONNECTED_WALLETS_INFO, CONNECTED_WALLET_NAME_SERVICE, DYNAMIC_CONTEXT_LAST_SESSION_SETTINGS, EMBEDDED_WALLET_SECURE_BANNER, EMBEDDED_WALLET_SESSION_SETTINGS, LAST_USED_WALLET, NETWORKS_STORAGE_KEY, NEWTOWEB3_WALLET_EXTENSION_FLAG_KEY, NONCE_STORAGE_KEY, PHANTOM_SIGNATURE_STATE, PHONE_INPUT_DEFAULT_COUNTRY, PRIMARY_WALLET_ID, PROJECT_SETTINGS_STORAGE_KEY, STORE_STORAGE_KEY, WAGMI_LAST_SESSION_SETTINGS, WALLET_PICKER_SEARCH_KEY };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
6
|
+
const downloadFile = (fileName, content) => {
|
|
7
|
+
const element = document.createElement('a');
|
|
8
|
+
const file = new Blob([content], { type: 'text/plain' });
|
|
9
|
+
element.href = URL.createObjectURL(file);
|
|
10
|
+
element.download = fileName;
|
|
11
|
+
document.body.appendChild(element);
|
|
12
|
+
element.click();
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
exports.downloadFile = downloadFile;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const downloadFile: (fileName: string, content: string) => void;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
const downloadFile = (fileName, content) => {
|
|
3
|
+
const element = document.createElement('a');
|
|
4
|
+
const file = new Blob([content], { type: 'text/plain' });
|
|
5
|
+
element.href = URL.createObjectURL(file);
|
|
6
|
+
element.download = fileName;
|
|
7
|
+
document.body.appendChild(element);
|
|
8
|
+
element.click();
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export { downloadFile };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { downloadFile } from './downloadFile';
|
|
@@ -168,7 +168,8 @@ const useAuthLayoutChecks = () => {
|
|
|
168
168
|
view.type === 'farcaster-connect-view' ||
|
|
169
169
|
view.type === 'merge-user-accounts' ||
|
|
170
170
|
view.type === 'merge-user-accounts-conflicts' ||
|
|
171
|
-
view.type === 'mfa-verification'
|
|
171
|
+
view.type === 'mfa-verification' ||
|
|
172
|
+
view.type === 'mfa-display-backup-codes');
|
|
172
173
|
const showCloseButton = view.type !== 'login-with-email-or-wallet-full-wallet-list' &&
|
|
173
174
|
view.type !== 'login-with-email-verification' &&
|
|
174
175
|
view.type !== 'login-with-sms-verification' &&
|
|
@@ -178,7 +179,8 @@ const useAuthLayoutChecks = () => {
|
|
|
178
179
|
view.type !== 'passkey-recovery-bundle' &&
|
|
179
180
|
view.type !== 'rename-passkey' &&
|
|
180
181
|
view.type !== 'qr-code' &&
|
|
181
|
-
view.type !== 'mfa-verification'
|
|
182
|
+
view.type !== 'mfa-verification' &&
|
|
183
|
+
view.type !== 'mfa-display-backup-codes';
|
|
182
184
|
const showBackButton = view.type === 'pending-signature' ||
|
|
183
185
|
view.type === 'no-qr-not-installed' ||
|
|
184
186
|
view.type === 'wallet-connect-mobile-wallets-list' ||
|
|
@@ -164,7 +164,8 @@ const useAuthLayoutChecks = () => {
|
|
|
164
164
|
view.type === 'farcaster-connect-view' ||
|
|
165
165
|
view.type === 'merge-user-accounts' ||
|
|
166
166
|
view.type === 'merge-user-accounts-conflicts' ||
|
|
167
|
-
view.type === 'mfa-verification'
|
|
167
|
+
view.type === 'mfa-verification' ||
|
|
168
|
+
view.type === 'mfa-display-backup-codes');
|
|
168
169
|
const showCloseButton = view.type !== 'login-with-email-or-wallet-full-wallet-list' &&
|
|
169
170
|
view.type !== 'login-with-email-verification' &&
|
|
170
171
|
view.type !== 'login-with-sms-verification' &&
|
|
@@ -174,7 +175,8 @@ const useAuthLayoutChecks = () => {
|
|
|
174
175
|
view.type !== 'passkey-recovery-bundle' &&
|
|
175
176
|
view.type !== 'rename-passkey' &&
|
|
176
177
|
view.type !== 'qr-code' &&
|
|
177
|
-
view.type !== 'mfa-verification'
|
|
178
|
+
view.type !== 'mfa-verification' &&
|
|
179
|
+
view.type !== 'mfa-display-backup-codes';
|
|
178
180
|
const showBackButton = view.type === 'pending-signature' ||
|
|
179
181
|
view.type === 'no-qr-not-installed' ||
|
|
180
182
|
view.type === 'wallet-connect-mobile-wallets-list' ||
|
|
@@ -113,6 +113,10 @@ const useDynamicLayoutData = ({ view, authMode, }) => {
|
|
|
113
113
|
copykey: 'dyn_mfa.choose_device_view.title',
|
|
114
114
|
heading: t('dyn_mfa.choose_device_view.title'),
|
|
115
115
|
},
|
|
116
|
+
'mfa-display-backup-codes': {
|
|
117
|
+
copykey: 'dyn_mfa.display_backup_codes_view.title',
|
|
118
|
+
heading: t('dyn_mfa.display_backup_codes_view.title'),
|
|
119
|
+
},
|
|
116
120
|
'mfa-secure-device': {
|
|
117
121
|
copykey: 'dyn_mfa.secure_device_view.title',
|
|
118
122
|
heading: t('dyn_mfa.secure_device_view.title'),
|
|
@@ -109,6 +109,10 @@ const useDynamicLayoutData = ({ view, authMode, }) => {
|
|
|
109
109
|
copykey: 'dyn_mfa.choose_device_view.title',
|
|
110
110
|
heading: t('dyn_mfa.choose_device_view.title'),
|
|
111
111
|
},
|
|
112
|
+
'mfa-display-backup-codes': {
|
|
113
|
+
copykey: 'dyn_mfa.display_backup_codes_view.title',
|
|
114
|
+
heading: t('dyn_mfa.display_backup_codes_view.title'),
|
|
115
|
+
},
|
|
112
116
|
'mfa-secure-device': {
|
|
113
117
|
copykey: 'dyn_mfa.secure_device_view.title',
|
|
114
118
|
heading: t('dyn_mfa.secure_device_view.title'),
|
|
@@ -20,8 +20,12 @@ var localStorage = require('../../../shared/utils/classes/storage/localStorage.c
|
|
|
20
20
|
require('@dynamic-labs/utils');
|
|
21
21
|
require('../../../shared/consts/index.cjs');
|
|
22
22
|
var handleUnlinkHelper = require('../../functions/handleUnlinkHelper/handleUnlinkHelper.cjs');
|
|
23
|
+
var userActions = require('../../../store/actions/userActions/userActions.cjs');
|
|
24
|
+
require('zustand');
|
|
25
|
+
require('zustand/middleware');
|
|
26
|
+
require('zustand/react/shallow');
|
|
23
27
|
|
|
24
|
-
const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWalletId, secondaryWallets,
|
|
28
|
+
const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWalletId, secondaryWallets, }) => {
|
|
25
29
|
const { removedWalletsIds } = UserWalletsContext.useInternalUserWallets();
|
|
26
30
|
const callback = React.useCallback((walletId) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
27
31
|
var _a;
|
|
@@ -43,7 +47,7 @@ const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWall
|
|
|
43
47
|
walletId,
|
|
44
48
|
});
|
|
45
49
|
if (newUser) {
|
|
46
|
-
setUser(newUser);
|
|
50
|
+
userActions.setUser(newUser);
|
|
47
51
|
}
|
|
48
52
|
const wallet = secondaryWallets.find((w) => w.id === walletId);
|
|
49
53
|
const numberOfLinkedWallets = verifiedCredentials.filter((account) => account.walletName === ((wallet === null || wallet === void 0 ? void 0 : wallet.connector.key) || '')).length;
|
|
@@ -56,7 +60,6 @@ const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWall
|
|
|
56
60
|
primaryWalletId,
|
|
57
61
|
environmentId,
|
|
58
62
|
secondaryWallets,
|
|
59
|
-
setUser,
|
|
60
63
|
verifiedCredentials,
|
|
61
64
|
removedWalletsIds,
|
|
62
65
|
]);
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
import { Dispatch, SetStateAction } from 'react';
|
|
2
1
|
import { JwtVerifiedCredential } from '@dynamic-labs/sdk-api-core';
|
|
3
|
-
import { UserProfile } from '@dynamic-labs/types';
|
|
4
2
|
import { Wallet } from '../../../shared';
|
|
5
3
|
type UseHandleUnlinkProps = {
|
|
6
4
|
environmentId: string;
|
|
7
5
|
primaryWalletId: string | undefined;
|
|
8
6
|
secondaryWallets: Wallet[];
|
|
9
|
-
setUser: Dispatch<SetStateAction<UserProfile | undefined>>;
|
|
10
7
|
verifiedCredentials: JwtVerifiedCredential[];
|
|
11
8
|
};
|
|
12
|
-
export declare const useHandleUnlinkWallet: ({ verifiedCredentials, environmentId, primaryWalletId, secondaryWallets,
|
|
9
|
+
export declare const useHandleUnlinkWallet: ({ verifiedCredentials, environmentId, primaryWalletId, secondaryWallets, }: UseHandleUnlinkProps) => (walletId: string) => Promise<void>;
|
|
13
10
|
export {};
|
|
@@ -16,8 +16,12 @@ import { LocalStorage } from '../../../shared/utils/classes/storage/localStorage
|
|
|
16
16
|
import '@dynamic-labs/utils';
|
|
17
17
|
import '../../../shared/consts/index.js';
|
|
18
18
|
import { handleUnlinkHelper } from '../../functions/handleUnlinkHelper/handleUnlinkHelper.js';
|
|
19
|
+
import { setUser } from '../../../store/actions/userActions/userActions.js';
|
|
20
|
+
import 'zustand';
|
|
21
|
+
import 'zustand/middleware';
|
|
22
|
+
import 'zustand/react/shallow';
|
|
19
23
|
|
|
20
|
-
const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWalletId, secondaryWallets,
|
|
24
|
+
const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWalletId, secondaryWallets, }) => {
|
|
21
25
|
const { removedWalletsIds } = useInternalUserWallets();
|
|
22
26
|
const callback = useCallback((walletId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
23
27
|
var _a;
|
|
@@ -52,7 +56,6 @@ const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWall
|
|
|
52
56
|
primaryWalletId,
|
|
53
57
|
environmentId,
|
|
54
58
|
secondaryWallets,
|
|
55
|
-
setUser,
|
|
56
59
|
verifiedCredentials,
|
|
57
60
|
removedWalletsIds,
|
|
58
61
|
]);
|
|
@@ -28,8 +28,12 @@ require('../../../config/ApiEndpoint.cjs');
|
|
|
28
28
|
require('../../../locale/locale.cjs');
|
|
29
29
|
var wallets = require('../../../data/api/wallets/wallets.cjs');
|
|
30
30
|
var updateJWTAndCreateUserProfile = require('../../functions/updateJWTAndCreateUserProfile/updateJWTAndCreateUserProfile.cjs');
|
|
31
|
+
var userActions = require('../../../store/actions/userActions/userActions.cjs');
|
|
32
|
+
require('zustand');
|
|
33
|
+
require('zustand/middleware');
|
|
34
|
+
require('zustand/react/shallow');
|
|
31
35
|
|
|
32
|
-
const usePrimaryWalletId = ({ minAuthToken, environmentId
|
|
36
|
+
const usePrimaryWalletId = ({ minAuthToken, environmentId }) => {
|
|
33
37
|
const [primaryWalletId, setPrimaryWalletIdState, clearPrimaryWalletId] = useLocalStorage.useLocalStorage(localStorage.PRIMARY_WALLET_ID, undefined, primaryWalletIdValidator.primaryWalletIdValidator);
|
|
34
38
|
const setPrimaryWalletId = React.useCallback((walletId) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
35
39
|
setPrimaryWalletIdState(walletId);
|
|
@@ -37,7 +41,7 @@ const usePrimaryWalletId = ({ minAuthToken, environmentId, setUser, }) => {
|
|
|
37
41
|
const response = yield wallets.storeSelectedWallet({ environmentId, walletId });
|
|
38
42
|
// only update userProfile, authToken, and minAuthToken when response is valid from storeSelectedWallet
|
|
39
43
|
if (response) {
|
|
40
|
-
setUser(updateJWTAndCreateUserProfile.updateJWTAndCreateUserProfile(response.jwt, response.minifiedJwt));
|
|
44
|
+
userActions.setUser(updateJWTAndCreateUserProfile.updateJWTAndCreateUserProfile(response.jwt, response.minifiedJwt));
|
|
41
45
|
}
|
|
42
46
|
}
|
|
43
47
|
}), [setPrimaryWalletIdState]);
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import { Dispatch, SetStateAction } from 'react';
|
|
2
|
-
import { UserProfile } from '@dynamic-labs/types';
|
|
3
1
|
type Props = {
|
|
4
|
-
setUser: Dispatch<SetStateAction<UserProfile | undefined>>;
|
|
5
2
|
environmentId: string;
|
|
6
3
|
minAuthToken: string | undefined;
|
|
7
4
|
};
|
|
8
|
-
export declare const usePrimaryWalletId: ({ minAuthToken, environmentId
|
|
5
|
+
export declare const usePrimaryWalletId: ({ minAuthToken, environmentId }: Props) => {
|
|
9
6
|
clearPrimaryWalletId: () => void;
|
|
10
7
|
primaryWalletId: string | undefined;
|
|
11
8
|
setPrimaryWalletId: (walletId: string) => Promise<void>;
|
|
@@ -24,8 +24,12 @@ import '../../../config/ApiEndpoint.js';
|
|
|
24
24
|
import '../../../locale/locale.js';
|
|
25
25
|
import { storeSelectedWallet } from '../../../data/api/wallets/wallets.js';
|
|
26
26
|
import { updateJWTAndCreateUserProfile } from '../../functions/updateJWTAndCreateUserProfile/updateJWTAndCreateUserProfile.js';
|
|
27
|
+
import { setUser } from '../../../store/actions/userActions/userActions.js';
|
|
28
|
+
import 'zustand';
|
|
29
|
+
import 'zustand/middleware';
|
|
30
|
+
import 'zustand/react/shallow';
|
|
27
31
|
|
|
28
|
-
const usePrimaryWalletId = ({ minAuthToken, environmentId
|
|
32
|
+
const usePrimaryWalletId = ({ minAuthToken, environmentId }) => {
|
|
29
33
|
const [primaryWalletId, setPrimaryWalletIdState, clearPrimaryWalletId] = useLocalStorage(PRIMARY_WALLET_ID, undefined, primaryWalletIdValidator);
|
|
30
34
|
const setPrimaryWalletId = useCallback((walletId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
31
35
|
setPrimaryWalletIdState(walletId);
|
|
@@ -33,6 +33,7 @@ require('viem');
|
|
|
33
33
|
require('viem/chains');
|
|
34
34
|
require('../../../config/ApiEndpoint.cjs');
|
|
35
35
|
require('../../../locale/locale.cjs');
|
|
36
|
+
var downloadFile = require('../../../utils/functions/downloadFile/downloadFile.cjs');
|
|
36
37
|
require('../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
|
|
37
38
|
require('../../../context/AccountExistsContext/AccountExistsContext.cjs');
|
|
38
39
|
require('../../../context/UserWalletsContext/UserWalletsContext.cjs');
|
|
@@ -99,22 +100,16 @@ const SavePasswordStep = ({ password, error, isLoading, onSave, onBack, onClose,
|
|
|
99
100
|
e.preventDefault();
|
|
100
101
|
onSave();
|
|
101
102
|
});
|
|
102
|
-
const handleDownloadFile = (e) => {
|
|
103
|
-
e.preventDefault();
|
|
104
|
-
const element = document.createElement('a');
|
|
105
|
-
const file = new Blob([password], { type: 'text/plain' });
|
|
106
|
-
element.href = URL.createObjectURL(file);
|
|
107
|
-
element.download = 'dynamic-wallet-recovery.txt';
|
|
108
|
-
document.body.appendChild(element);
|
|
109
|
-
element.click();
|
|
110
|
-
};
|
|
111
103
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(ModalHeader.ModalHeader, { leading: backButton, trailing: closeButton, children: jsxRuntime.jsx(Typography.Typography, { as: 'h1', variant: 'title', color: 'primary', "data-testid": 'dynamic-auth-modal-heading', className: 'header__typography', copykey: 'dyn_save_password.title', children: t('dyn_save_password.title') }) }), jsxRuntime.jsx("div", { className: 'save-password-view', children: jsxRuntime.jsxs("form", { className: 'save-password-view__body', "data-testid": 'save-password-form', onSubmit: handleSavePassword, children: [jsxRuntime.jsx("div", { className: 'save-password-view__body__icon', children: jsxRuntime.jsx(savePasswordHero.ReactComponent, {}) }), jsxRuntime.jsx("div", { className: 'save-password-view__body__icon', children: jsxRuntime.jsx(Badge.Badge, { text: t('dyn_save_password.badge_text'), className: 'save-password-view__body__badge', copykey: 'dyn_save_password.badge_text' }) }), jsxRuntime.jsxs("div", { className: 'save-password-view__body__description', children: [jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', copykey: 'dyn_save_password.description', children: t('dyn_save_password.description') }), jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', weight: 'bold', color: 'secondary', copykey: 'dyn_save_password.description', children: t('dyn_save_password.warning') })] }), error && jsxRuntime.jsx(ErrorContainer.ErrorContainer, { children: error }), jsxRuntime.jsx("div", { children: jsxRuntime.jsx(Input.Input, { id: 'password', placeholder: t('dyn_save_password.password_input.placeholder'), type: inputType, suffix: inputSuffix, disabled: true, label: t('dyn_save_password.password_input.label'), value: password, autoFocus: true, copykey: 'dyn_save_password.password_input' }) }), jsxRuntime.jsxs("div", { className: 'save-password-view__actions', children: [jsxRuntime.jsx(TypographyButton.TypographyButton, { dataTestId: 'save-password-copy', buttonPadding: 'small', buttonVariant: 'primary', onClick: (e) => {
|
|
112
104
|
e.preventDefault();
|
|
113
105
|
helpers.copyToClipboard(password);
|
|
114
106
|
setIsCopied(true);
|
|
115
107
|
}, startSlot: jsxRuntime.jsx(copy.ReactComponent, {}), expanded: true, copykey: 'dyn_save_password.copy_button', children: isCopied
|
|
116
108
|
? t('dyn_save_password.copy_button.copied')
|
|
117
|
-
: t('dyn_save_password.copy_button.copy') }), jsxRuntime.jsx(TypographyButton.TypographyButton, { dataTestId: 'save-password-download', buttonPadding: 'small', buttonVariant: 'primary', onClick:
|
|
109
|
+
: t('dyn_save_password.copy_button.copy') }), jsxRuntime.jsx(TypographyButton.TypographyButton, { dataTestId: 'save-password-download', buttonPadding: 'small', buttonVariant: 'primary', onClick: (e) => {
|
|
110
|
+
e.preventDefault();
|
|
111
|
+
downloadFile.downloadFile('wallet-recovery.txt', password);
|
|
112
|
+
}, startSlot: jsxRuntime.jsx(download.ReactComponent, {}), expanded: true, copykey: 'dyn_save_password.download_button', children: t('dyn_save_password.download_button') })] }), jsxRuntime.jsx("div", { className: 'save-password-view__body__confirm-card', children: jsxRuntime.jsxs("button", { className: 'save-password-view__body__card__acknowledgement', onClick: (e) => {
|
|
118
113
|
e.stopPropagation();
|
|
119
114
|
setAcknowledgement(!acknowledgement);
|
|
120
115
|
}, type: 'button', children: [jsxRuntime.jsx("div", { children: jsxRuntime.jsx(Checkbox.Checkbox, { checked: acknowledgement, onChange: (e) => {
|
|
@@ -29,6 +29,7 @@ import 'viem';
|
|
|
29
29
|
import 'viem/chains';
|
|
30
30
|
import '../../../config/ApiEndpoint.js';
|
|
31
31
|
import '../../../locale/locale.js';
|
|
32
|
+
import { downloadFile } from '../../../utils/functions/downloadFile/downloadFile.js';
|
|
32
33
|
import '../../../context/AccessDeniedContext/AccessDeniedContext.js';
|
|
33
34
|
import '../../../context/AccountExistsContext/AccountExistsContext.js';
|
|
34
35
|
import '../../../context/UserWalletsContext/UserWalletsContext.js';
|
|
@@ -95,22 +96,16 @@ const SavePasswordStep = ({ password, error, isLoading, onSave, onBack, onClose,
|
|
|
95
96
|
e.preventDefault();
|
|
96
97
|
onSave();
|
|
97
98
|
});
|
|
98
|
-
const handleDownloadFile = (e) => {
|
|
99
|
-
e.preventDefault();
|
|
100
|
-
const element = document.createElement('a');
|
|
101
|
-
const file = new Blob([password], { type: 'text/plain' });
|
|
102
|
-
element.href = URL.createObjectURL(file);
|
|
103
|
-
element.download = 'dynamic-wallet-recovery.txt';
|
|
104
|
-
document.body.appendChild(element);
|
|
105
|
-
element.click();
|
|
106
|
-
};
|
|
107
99
|
return (jsxs(Fragment, { children: [jsx(ModalHeader, { leading: backButton, trailing: closeButton, children: jsx(Typography, { as: 'h1', variant: 'title', color: 'primary', "data-testid": 'dynamic-auth-modal-heading', className: 'header__typography', copykey: 'dyn_save_password.title', children: t('dyn_save_password.title') }) }), jsx("div", { className: 'save-password-view', children: jsxs("form", { className: 'save-password-view__body', "data-testid": 'save-password-form', onSubmit: handleSavePassword, children: [jsx("div", { className: 'save-password-view__body__icon', children: jsx(SvgSavePasswordHero, {}) }), jsx("div", { className: 'save-password-view__body__icon', children: jsx(Badge, { text: t('dyn_save_password.badge_text'), className: 'save-password-view__body__badge', copykey: 'dyn_save_password.badge_text' }) }), jsxs("div", { className: 'save-password-view__body__description', children: [jsx(Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', copykey: 'dyn_save_password.description', children: t('dyn_save_password.description') }), jsx(Typography, { variant: 'body_normal', weight: 'bold', color: 'secondary', copykey: 'dyn_save_password.description', children: t('dyn_save_password.warning') })] }), error && jsx(ErrorContainer, { children: error }), jsx("div", { children: jsx(Input, { id: 'password', placeholder: t('dyn_save_password.password_input.placeholder'), type: inputType, suffix: inputSuffix, disabled: true, label: t('dyn_save_password.password_input.label'), value: password, autoFocus: true, copykey: 'dyn_save_password.password_input' }) }), jsxs("div", { className: 'save-password-view__actions', children: [jsx(TypographyButton, { dataTestId: 'save-password-copy', buttonPadding: 'small', buttonVariant: 'primary', onClick: (e) => {
|
|
108
100
|
e.preventDefault();
|
|
109
101
|
copyToClipboard(password);
|
|
110
102
|
setIsCopied(true);
|
|
111
103
|
}, startSlot: jsx(SvgCopy, {}), expanded: true, copykey: 'dyn_save_password.copy_button', children: isCopied
|
|
112
104
|
? t('dyn_save_password.copy_button.copied')
|
|
113
|
-
: t('dyn_save_password.copy_button.copy') }), jsx(TypographyButton, { dataTestId: 'save-password-download', buttonPadding: 'small', buttonVariant: 'primary', onClick:
|
|
105
|
+
: t('dyn_save_password.copy_button.copy') }), jsx(TypographyButton, { dataTestId: 'save-password-download', buttonPadding: 'small', buttonVariant: 'primary', onClick: (e) => {
|
|
106
|
+
e.preventDefault();
|
|
107
|
+
downloadFile('wallet-recovery.txt', password);
|
|
108
|
+
}, startSlot: jsx(SvgDownload, {}), expanded: true, copykey: 'dyn_save_password.download_button', children: t('dyn_save_password.download_button') })] }), jsx("div", { className: 'save-password-view__body__confirm-card', children: jsxs("button", { className: 'save-password-view__body__card__acknowledgement', onClick: (e) => {
|
|
114
109
|
e.stopPropagation();
|
|
115
110
|
setAcknowledgement(!acknowledgement);
|
|
116
111
|
}, type: 'button', children: [jsx("div", { children: jsx(Checkbox, { checked: acknowledgement, onChange: (e) => {
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
+
var React = require('react');
|
|
8
|
+
var reactI18next = require('react-i18next');
|
|
9
|
+
require('../../events/dynamicEvents.cjs');
|
|
10
|
+
require('../../../../_virtual/_tslib.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
|
+
var copy = require('../../shared/assets/copy.cjs');
|
|
19
|
+
var download = require('../../shared/assets/download.cjs');
|
|
20
|
+
require('@dynamic-labs/wallet-book');
|
|
21
|
+
require('../../utils/constants/colors.cjs');
|
|
22
|
+
require('../../utils/constants/values.cjs');
|
|
23
|
+
require('../../shared/utils/classes/storage/localStorage.cjs');
|
|
24
|
+
require('../../shared/consts/index.cjs');
|
|
25
|
+
var useInternalDynamicContext = require('../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.cjs');
|
|
26
|
+
require('../../context/CaptchaContext/CaptchaContext.cjs');
|
|
27
|
+
require('../../context/ErrorContext/ErrorContext.cjs');
|
|
28
|
+
require('@dynamic-labs/multi-wallet');
|
|
29
|
+
require('react-international-phone');
|
|
30
|
+
require('viem');
|
|
31
|
+
require('viem/chains');
|
|
32
|
+
require('../../config/ApiEndpoint.cjs');
|
|
33
|
+
require('../../locale/locale.cjs');
|
|
34
|
+
var downloadFile = require('../../utils/functions/downloadFile/downloadFile.cjs');
|
|
35
|
+
require('../../context/AccessDeniedContext/AccessDeniedContext.cjs');
|
|
36
|
+
require('../../context/AccountExistsContext/AccountExistsContext.cjs');
|
|
37
|
+
require('../../context/UserWalletsContext/UserWalletsContext.cjs');
|
|
38
|
+
require('../../context/VerificationContext/VerificationContext.cjs');
|
|
39
|
+
require('react-dom');
|
|
40
|
+
require('../../context/WalletContext/WalletContext.cjs');
|
|
41
|
+
var usePromise = require('../../utils/hooks/usePromise/usePromise.cjs');
|
|
42
|
+
require('../../context/ThemeContext/ThemeContext.cjs');
|
|
43
|
+
require('@dynamic-labs/types');
|
|
44
|
+
require('../../context/LoadingContext/LoadingContext.cjs');
|
|
45
|
+
require('yup');
|
|
46
|
+
require('../../context/MockContext/MockContext.cjs');
|
|
47
|
+
require('../../context/FieldsStateContext/FieldsStateContext.cjs');
|
|
48
|
+
require('../../utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUser.cjs');
|
|
49
|
+
require('../../context/UserFieldEditorContext/UserFieldEditorContext.cjs');
|
|
50
|
+
require('@dynamic-labs/rpc-providers');
|
|
51
|
+
var Typography = require('../../components/Typography/Typography.cjs');
|
|
52
|
+
require('../../context/FooterAnimationContext/index.cjs');
|
|
53
|
+
require('../../components/ShadowDOM/ShadowDOM.cjs');
|
|
54
|
+
require('../../components/Transition/ZoomTransition/ZoomTransition.cjs');
|
|
55
|
+
require('../../components/Transition/SlideInUpTransition/SlideInUpTransition.cjs');
|
|
56
|
+
require('../../components/Transition/OpacityTransition/OpacityTransition.cjs');
|
|
57
|
+
require('../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.cjs');
|
|
58
|
+
require('../../context/SocialRedirectContext/SocialRedirectContext.cjs');
|
|
59
|
+
require('../../context/WalletGroupContext/WalletGroupContext.cjs');
|
|
60
|
+
require('../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.cjs');
|
|
61
|
+
require('react-focus-lock');
|
|
62
|
+
var Icon = require('../../components/Icon/Icon.cjs');
|
|
63
|
+
require('../../widgets/DynamicWidget/context/DynamicWidgetContext.cjs');
|
|
64
|
+
require('../../components/IconButton/IconButton.cjs');
|
|
65
|
+
require('../../components/MenuList/Dropdown/Dropdown.cjs');
|
|
66
|
+
require('formik');
|
|
67
|
+
var TypographyButton = require('../../components/TypographyButton/TypographyButton.cjs');
|
|
68
|
+
require('../TransactionConfirmationView/helpers/transactionErrorMessage.cjs');
|
|
69
|
+
var spinner = require('../../components/Spinner/spinner.cjs');
|
|
70
|
+
var Alert = require('../../components/Alert/Alert.cjs');
|
|
71
|
+
require('../../components/Input/Input.cjs');
|
|
72
|
+
require('../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.cjs');
|
|
73
|
+
require('../../context/PasskeyContext/PasskeyContext.cjs');
|
|
74
|
+
require('../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
|
|
75
|
+
var useMfa = require('../../utils/hooks/useMfa/useMfa.cjs');
|
|
76
|
+
var Checkbox = require('../../components/Checkbox/Checkbox.cjs');
|
|
77
|
+
var CopyButton = require('../../components/CopyButton/CopyButton.cjs');
|
|
78
|
+
require('../../components/InlineWidget/InlineWidget.cjs');
|
|
79
|
+
require('../../components/IsBrowser/IsBrowser.cjs');
|
|
80
|
+
require('../../components/Popper/Popper/Popper.cjs');
|
|
81
|
+
require('../../components/Popper/PopperContext/PopperContext.cjs');
|
|
82
|
+
require('qrcode');
|
|
83
|
+
require('../WalletList/WalletList.cjs');
|
|
84
|
+
require('../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.cjs');
|
|
85
|
+
require('@hcaptcha/react-hcaptcha');
|
|
86
|
+
require('../LoginView/sections/PhoneNumberSignInSection/PhoneNumberSignInSection.cjs');
|
|
87
|
+
|
|
88
|
+
const MfaDisplayBackupCodesView = () => {
|
|
89
|
+
const { setShowAuthFlow } = useInternalDynamicContext.useInternalDynamicContext();
|
|
90
|
+
const [acknowledgement, setAcknowledgement] = React.useState(false);
|
|
91
|
+
const { t } = reactI18next.useTranslation();
|
|
92
|
+
const { getRecoveryCodes } = useMfa.useMfa();
|
|
93
|
+
const { data: codes, isLoading } = usePromise.usePromise(() => getRecoveryCodes());
|
|
94
|
+
const codesAsString = (codes || []).join('\n');
|
|
95
|
+
return (jsxRuntime.jsxs("div", { className: 'mfa-display-backup-codes-view__body', "data-testid": 'mfa-display-backup-codes-view', children: [jsxRuntime.jsx(Typography.Typography, { className: 'mfa-display-backup-codes-view__copy', variant: 'body_normal', weight: 'regular', color: 'secondary', children: t('dyn_mfa.display_backup_codes_view.body') }), jsxRuntime.jsx(Alert.Alert, { variant: 'warning', copykey: 'dyn_mfa.display_backup_codes_view.warning', className: 'mfa-display-backup-codes-view__warning', children: t('dyn_mfa.display_backup_codes_view.warning') }), isLoading ? (jsxRuntime.jsx(spinner.Spinner, { className: 'mfa-display-backup-codes-view__loading-spinner' })) : (jsxRuntime.jsxs("div", { className: 'mfa-display-backup-codes-view__codes', children: [codes === null || codes === void 0 ? void 0 : codes.map((code, index) => (jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', className: 'mfa-display-backup-codes-view__code', children: code }, index))), jsxRuntime.jsxs("div", { className: 'mfa-display-backup-codes-view__actions', children: [jsxRuntime.jsx(CopyButton.CopyButton, { variant: 'button', textToCopy: codesAsString, copykey: 'dyn_mfa.display_backup_codes_view.copy_all', startSlot:
|
|
96
|
+
// eslint-disable-next-line react/jsx-wrap-multilines
|
|
97
|
+
jsxRuntime.jsx(Icon.Icon, { size: 'mini', color: 'text-tertiary', children: jsxRuntime.jsx(copy.ReactComponent, {}) }), children: t('dyn_mfa.display_backup_codes_view.copy_all') }), jsxRuntime.jsx(TypographyButton.TypographyButton, { dataTestId: 'download-button', buttonPadding: 'small', buttonVariant: 'primary', onClick: (e) => {
|
|
98
|
+
e.preventDefault();
|
|
99
|
+
downloadFile.downloadFile('mfa-backup-codes.txt', codesAsString);
|
|
100
|
+
}, startSlot: jsxRuntime.jsx(download.ReactComponent, {}), expanded: true, copykey: 'dyn_mfa.display_backup_codes_view.download', children: t('dyn_mfa.display_backup_codes_view.download') })] })] })), jsxRuntime.jsxs("div", { className: 'mfa-display-backup-codes-view__complete', children: [jsxRuntime.jsx(TypographyButton.TypographyButton, { buttonClassName: 'mfa-display-backup-codes-view__acknowledgement', dataTestId: 'ack-button', buttonPadding: 'small', buttonVariant: 'primary', onClick: () => setAcknowledgement(!acknowledgement), startSlot:
|
|
101
|
+
// eslint-disable-next-line react/jsx-wrap-multilines
|
|
102
|
+
jsxRuntime.jsx(Checkbox.Checkbox, { checked: acknowledgement, onChange: () => {
|
|
103
|
+
setAcknowledgement(!acknowledgement);
|
|
104
|
+
}, className: 'mfa-display-backup-codes-view__acknowledgement__checkbox' }), expanded: true, typographyProps: {
|
|
105
|
+
color: 'secondary',
|
|
106
|
+
}, copykey: 'dyn_mfa.display_backup_codes_view.checkbox', children: t('dyn_mfa.display_backup_codes_view.checkbox') }), jsxRuntime.jsx(TypographyButton.TypographyButton, { dataTestId: 'complete-button', buttonPadding: 'large', buttonVariant: 'brand-primary', typographyProps: {
|
|
107
|
+
color: 'inherit',
|
|
108
|
+
}, disabled: !acknowledgement, expanded: true, copykey: 'dyn_mfa.display_backup_codes_view.complete', onClick: () => setShowAuthFlow(false), children: t('dyn_mfa.display_backup_codes_view.complete') })] })] }));
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
exports.MfaDisplayBackupCodesView = MfaDisplayBackupCodesView;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
import { useTranslation } from 'react-i18next';
|
|
5
|
+
import '../../events/dynamicEvents.js';
|
|
6
|
+
import '../../../../_virtual/_tslib.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 { ReactComponent as SvgCopy } from '../../shared/assets/copy.js';
|
|
15
|
+
import { ReactComponent as SvgDownload } from '../../shared/assets/download.js';
|
|
16
|
+
import '@dynamic-labs/wallet-book';
|
|
17
|
+
import '../../utils/constants/colors.js';
|
|
18
|
+
import '../../utils/constants/values.js';
|
|
19
|
+
import '../../shared/utils/classes/storage/localStorage.js';
|
|
20
|
+
import '../../shared/consts/index.js';
|
|
21
|
+
import { useInternalDynamicContext } from '../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.js';
|
|
22
|
+
import '../../context/CaptchaContext/CaptchaContext.js';
|
|
23
|
+
import '../../context/ErrorContext/ErrorContext.js';
|
|
24
|
+
import '@dynamic-labs/multi-wallet';
|
|
25
|
+
import 'react-international-phone';
|
|
26
|
+
import 'viem';
|
|
27
|
+
import 'viem/chains';
|
|
28
|
+
import '../../config/ApiEndpoint.js';
|
|
29
|
+
import '../../locale/locale.js';
|
|
30
|
+
import { downloadFile } from '../../utils/functions/downloadFile/downloadFile.js';
|
|
31
|
+
import '../../context/AccessDeniedContext/AccessDeniedContext.js';
|
|
32
|
+
import '../../context/AccountExistsContext/AccountExistsContext.js';
|
|
33
|
+
import '../../context/UserWalletsContext/UserWalletsContext.js';
|
|
34
|
+
import '../../context/VerificationContext/VerificationContext.js';
|
|
35
|
+
import 'react-dom';
|
|
36
|
+
import '../../context/WalletContext/WalletContext.js';
|
|
37
|
+
import { usePromise } from '../../utils/hooks/usePromise/usePromise.js';
|
|
38
|
+
import '../../context/ThemeContext/ThemeContext.js';
|
|
39
|
+
import '@dynamic-labs/types';
|
|
40
|
+
import '../../context/LoadingContext/LoadingContext.js';
|
|
41
|
+
import 'yup';
|
|
42
|
+
import '../../context/MockContext/MockContext.js';
|
|
43
|
+
import '../../context/FieldsStateContext/FieldsStateContext.js';
|
|
44
|
+
import '../../utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUser.js';
|
|
45
|
+
import '../../context/UserFieldEditorContext/UserFieldEditorContext.js';
|
|
46
|
+
import '@dynamic-labs/rpc-providers';
|
|
47
|
+
import { Typography } from '../../components/Typography/Typography.js';
|
|
48
|
+
import '../../context/FooterAnimationContext/index.js';
|
|
49
|
+
import '../../components/ShadowDOM/ShadowDOM.js';
|
|
50
|
+
import '../../components/Transition/ZoomTransition/ZoomTransition.js';
|
|
51
|
+
import '../../components/Transition/SlideInUpTransition/SlideInUpTransition.js';
|
|
52
|
+
import '../../components/Transition/OpacityTransition/OpacityTransition.js';
|
|
53
|
+
import '../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.js';
|
|
54
|
+
import '../../context/SocialRedirectContext/SocialRedirectContext.js';
|
|
55
|
+
import '../../context/WalletGroupContext/WalletGroupContext.js';
|
|
56
|
+
import '../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.js';
|
|
57
|
+
import 'react-focus-lock';
|
|
58
|
+
import { Icon } from '../../components/Icon/Icon.js';
|
|
59
|
+
import '../../widgets/DynamicWidget/context/DynamicWidgetContext.js';
|
|
60
|
+
import '../../components/IconButton/IconButton.js';
|
|
61
|
+
import '../../components/MenuList/Dropdown/Dropdown.js';
|
|
62
|
+
import 'formik';
|
|
63
|
+
import { TypographyButton } from '../../components/TypographyButton/TypographyButton.js';
|
|
64
|
+
import '../TransactionConfirmationView/helpers/transactionErrorMessage.js';
|
|
65
|
+
import { Spinner } from '../../components/Spinner/spinner.js';
|
|
66
|
+
import { Alert } from '../../components/Alert/Alert.js';
|
|
67
|
+
import '../../components/Input/Input.js';
|
|
68
|
+
import '../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.js';
|
|
69
|
+
import '../../context/PasskeyContext/PasskeyContext.js';
|
|
70
|
+
import '../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.js';
|
|
71
|
+
import { useMfa } from '../../utils/hooks/useMfa/useMfa.js';
|
|
72
|
+
import { Checkbox } from '../../components/Checkbox/Checkbox.js';
|
|
73
|
+
import { CopyButton } from '../../components/CopyButton/CopyButton.js';
|
|
74
|
+
import '../../components/InlineWidget/InlineWidget.js';
|
|
75
|
+
import '../../components/IsBrowser/IsBrowser.js';
|
|
76
|
+
import '../../components/Popper/Popper/Popper.js';
|
|
77
|
+
import '../../components/Popper/PopperContext/PopperContext.js';
|
|
78
|
+
import 'qrcode';
|
|
79
|
+
import '../WalletList/WalletList.js';
|
|
80
|
+
import '../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.js';
|
|
81
|
+
import '@hcaptcha/react-hcaptcha';
|
|
82
|
+
import '../LoginView/sections/PhoneNumberSignInSection/PhoneNumberSignInSection.js';
|
|
83
|
+
|
|
84
|
+
const MfaDisplayBackupCodesView = () => {
|
|
85
|
+
const { setShowAuthFlow } = useInternalDynamicContext();
|
|
86
|
+
const [acknowledgement, setAcknowledgement] = useState(false);
|
|
87
|
+
const { t } = useTranslation();
|
|
88
|
+
const { getRecoveryCodes } = useMfa();
|
|
89
|
+
const { data: codes, isLoading } = usePromise(() => getRecoveryCodes());
|
|
90
|
+
const codesAsString = (codes || []).join('\n');
|
|
91
|
+
return (jsxs("div", { className: 'mfa-display-backup-codes-view__body', "data-testid": 'mfa-display-backup-codes-view', children: [jsx(Typography, { className: 'mfa-display-backup-codes-view__copy', variant: 'body_normal', weight: 'regular', color: 'secondary', children: t('dyn_mfa.display_backup_codes_view.body') }), jsx(Alert, { variant: 'warning', copykey: 'dyn_mfa.display_backup_codes_view.warning', className: 'mfa-display-backup-codes-view__warning', children: t('dyn_mfa.display_backup_codes_view.warning') }), isLoading ? (jsx(Spinner, { className: 'mfa-display-backup-codes-view__loading-spinner' })) : (jsxs("div", { className: 'mfa-display-backup-codes-view__codes', children: [codes === null || codes === void 0 ? void 0 : codes.map((code, index) => (jsx(Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', className: 'mfa-display-backup-codes-view__code', children: code }, index))), jsxs("div", { className: 'mfa-display-backup-codes-view__actions', children: [jsx(CopyButton, { variant: 'button', textToCopy: codesAsString, copykey: 'dyn_mfa.display_backup_codes_view.copy_all', startSlot:
|
|
92
|
+
// eslint-disable-next-line react/jsx-wrap-multilines
|
|
93
|
+
jsx(Icon, { size: 'mini', color: 'text-tertiary', children: jsx(SvgCopy, {}) }), children: t('dyn_mfa.display_backup_codes_view.copy_all') }), jsx(TypographyButton, { dataTestId: 'download-button', buttonPadding: 'small', buttonVariant: 'primary', onClick: (e) => {
|
|
94
|
+
e.preventDefault();
|
|
95
|
+
downloadFile('mfa-backup-codes.txt', codesAsString);
|
|
96
|
+
}, startSlot: jsx(SvgDownload, {}), expanded: true, copykey: 'dyn_mfa.display_backup_codes_view.download', children: t('dyn_mfa.display_backup_codes_view.download') })] })] })), jsxs("div", { className: 'mfa-display-backup-codes-view__complete', children: [jsx(TypographyButton, { buttonClassName: 'mfa-display-backup-codes-view__acknowledgement', dataTestId: 'ack-button', buttonPadding: 'small', buttonVariant: 'primary', onClick: () => setAcknowledgement(!acknowledgement), startSlot:
|
|
97
|
+
// eslint-disable-next-line react/jsx-wrap-multilines
|
|
98
|
+
jsx(Checkbox, { checked: acknowledgement, onChange: () => {
|
|
99
|
+
setAcknowledgement(!acknowledgement);
|
|
100
|
+
}, className: 'mfa-display-backup-codes-view__acknowledgement__checkbox' }), expanded: true, typographyProps: {
|
|
101
|
+
color: 'secondary',
|
|
102
|
+
}, copykey: 'dyn_mfa.display_backup_codes_view.checkbox', children: t('dyn_mfa.display_backup_codes_view.checkbox') }), jsx(TypographyButton, { dataTestId: 'complete-button', buttonPadding: 'large', buttonVariant: 'brand-primary', typographyProps: {
|
|
103
|
+
color: 'inherit',
|
|
104
|
+
}, disabled: !acknowledgement, expanded: true, copykey: 'dyn_mfa.display_backup_codes_view.complete', onClick: () => setShowAuthFlow(false), children: t('dyn_mfa.display_backup_codes_view.complete') })] })] }));
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
export { MfaDisplayBackupCodesView };
|