@dynamic-labs/sdk-react-core 4.19.5 → 4.19.6

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 (68) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/package.cjs +2 -2
  3. package/package.js +2 -2
  4. package/package.json +12 -12
  5. package/src/lib/components/AppOriginTile/AppOriginTile.cjs +8 -5
  6. package/src/lib/components/AppOriginTile/AppOriginTile.d.ts +4 -1
  7. package/src/lib/components/AppOriginTile/AppOriginTile.js +8 -5
  8. package/src/lib/components/Chip/Chip.cjs +2 -3
  9. package/src/lib/components/Chip/Chip.d.ts +5 -4
  10. package/src/lib/components/Chip/Chip.js +2 -3
  11. package/src/lib/components/NeedHelpSection/NeedHelpSection.cjs +3 -2
  12. package/src/lib/components/NeedHelpSection/NeedHelpSection.js +3 -2
  13. package/src/lib/context/OnrampContext/useEnabledOnrampProviders/useEnabledOnrampProviders.d.ts +2 -2
  14. package/src/lib/context/ViewContext/types/index.d.ts +1 -1
  15. package/src/lib/data/api/exchangeAccounts/exchangeAccounts.d.ts +45 -0
  16. package/src/lib/data/api/exchangeAccounts/index.d.ts +1 -0
  17. package/src/lib/data/api/index.d.ts +1 -0
  18. package/src/lib/data/api/onramp/onramp.d.ts +2 -2
  19. package/src/lib/locale/en/translation.cjs +16 -0
  20. package/src/lib/locale/en/translation.d.ts +16 -0
  21. package/src/lib/locale/en/translation.js +16 -0
  22. package/src/lib/modals/SignMessageConfirmationModal/SignMessageConfirmationModal.cjs +1 -1
  23. package/src/lib/modals/SignMessageConfirmationModal/SignMessageConfirmationModal.js +1 -1
  24. package/src/lib/modals/ZkSyncApprovalModal/ZkSyncApprovalModal.cjs +22 -0
  25. package/src/lib/modals/ZkSyncApprovalModal/ZkSyncApprovalModal.d.ts +8 -0
  26. package/src/lib/modals/ZkSyncApprovalModal/ZkSyncApprovalModal.js +18 -0
  27. package/src/lib/modals/ZkSyncApprovalModal/index.d.ts +1 -0
  28. package/src/lib/modals/index.d.ts +1 -0
  29. package/src/lib/shared/assets/backup.cjs +52 -0
  30. package/src/lib/shared/assets/backup.js +28 -0
  31. package/src/lib/shared/assets/clock.cjs +54 -0
  32. package/src/lib/shared/assets/clock.js +30 -0
  33. package/src/lib/shared/assets/index.d.ts +2 -0
  34. package/src/lib/styles/index.shadow.cjs +1 -1
  35. package/src/lib/styles/index.shadow.js +1 -1
  36. package/src/lib/utils/constants/authViewLayoutChecks.cjs +1 -0
  37. package/src/lib/utils/constants/authViewLayoutChecks.js +1 -0
  38. package/src/lib/utils/functions/onrampConfigurationToOnrampOption/onrampConfigurationToOnrampOption.d.ts +2 -2
  39. package/src/lib/utils/functions/updatePrimaryWalletId/updatePrimaryWalletId.cjs +25 -18
  40. package/src/lib/utils/functions/updatePrimaryWalletId/updatePrimaryWalletId.js +25 -18
  41. package/src/lib/utils/hooks/index.d.ts +1 -0
  42. package/src/lib/utils/hooks/useDynamicLayoutData/useDynamicLayoutData.cjs +4 -0
  43. package/src/lib/utils/hooks/useDynamicLayoutData/useDynamicLayoutData.js +4 -0
  44. package/src/lib/utils/hooks/useExchangeAccounts/index.d.ts +1 -0
  45. package/src/lib/utils/hooks/useExchangeAccounts/useExchangeAccounts.d.ts +13 -0
  46. package/src/lib/utils/hooks/useSyncDynamicWaas/useSyncDynamicWaas.cjs +4 -2
  47. package/src/lib/utils/hooks/useSyncDynamicWaas/useSyncDynamicWaas.js +4 -2
  48. package/src/lib/utils/hooks/useWalletUiUtils/useWalletUiUtils.cjs +12 -1
  49. package/src/lib/utils/hooks/useWalletUiUtils/useWalletUiUtils.js +12 -1
  50. package/src/lib/views/BackupUnsuccessfulView/BackupUnsuccessfulView.cjs +138 -0
  51. package/src/lib/views/BackupUnsuccessfulView/BackupUnsuccessfulView.d.ts +3 -0
  52. package/src/lib/views/BackupUnsuccessfulView/BackupUnsuccessfulView.js +133 -0
  53. package/src/lib/views/Passkey/PasskeyNewDomainDetectedView/PasskeyNewDomainDetectedView.cjs +1 -1
  54. package/src/lib/views/Passkey/PasskeyNewDomainDetectedView/PasskeyNewDomainDetectedView.js +1 -1
  55. package/src/lib/views/Passkey/PasskeyRecovery/InitRecovery/PasskeyInitRecovery.cjs +1 -1
  56. package/src/lib/views/Passkey/PasskeyRecovery/InitRecovery/PasskeyInitRecovery.js +1 -1
  57. package/src/lib/views/SessionKeyApprovalView/SessionKeyApprovalView.cjs +114 -0
  58. package/src/lib/views/SessionKeyApprovalView/SessionKeyApprovalView.js +110 -0
  59. package/src/lib/views/SessionPermissionsView/SessionPermissionsView.cjs +6 -6
  60. package/src/lib/views/SessionPermissionsView/SessionPermissionsView.js +2 -2
  61. package/src/lib/views/index.d.ts +1 -0
  62. package/src/lib/views/viewToComponentMap.cjs +2 -0
  63. package/src/lib/views/viewToComponentMap.d.ts +1 -0
  64. package/src/lib/views/viewToComponentMap.js +2 -0
  65. package/src/lib/widgets/DynamicWidget/prompts/QrCodeModalView/QrCodeModalView.cjs +1 -1
  66. package/src/lib/widgets/DynamicWidget/prompts/QrCodeModalView/QrCodeModalView.js +1 -1
  67. package/src/lib/widgets/DynamicWidget/views/SessionManagementView/RevokeAccessView/RevokeAccessView.cjs +6 -4
  68. package/src/lib/widgets/DynamicWidget/views/SessionManagementView/RevokeAccessView/RevokeAccessView.js +7 -5
@@ -122,6 +122,7 @@ const viewsThatHideCloseButton = [
122
122
  'mfa-display-backup-codes',
123
123
  'mfa-recovery',
124
124
  'user-delete-account',
125
+ 'backup-unsuccessful',
125
126
  ];
126
127
 
127
128
  exports.mfaViewsThatPreventModalClose = mfaViewsThatPreventModalClose;
@@ -118,6 +118,7 @@ const viewsThatHideCloseButton = [
118
118
  'mfa-display-backup-codes',
119
119
  'mfa-recovery',
120
120
  'user-delete-account',
121
+ 'backup-unsuccessful',
121
122
  ];
122
123
 
123
124
  export { mfaViewsThatPreventModalClose, viewsThatHideCloseButton, viewsThatHideHeader, viewsThatHideHelpContent, viewsThatPreventBorderBelowHeader, viewsThatPreventModalClose, viewsThatShowConnectedWalletProgress, viewsThatShowDynamicFooter, viewsWithWalletListType };
@@ -1,6 +1,6 @@
1
- import type { OnrampConfiguration } from '@dynamic-labs/sdk-api-core';
1
+ import type { RampConfiguration } from '@dynamic-labs/sdk-api-core';
2
2
  import type { OnrampOption } from '../../../context/DynamicContext';
3
3
  /**
4
4
  * Converts an OnrampConfiguration to an OnrampOption based on the provider's display mode
5
5
  */
6
- export declare const onrampConfigurationToOnrampOption: (provider: OnrampConfiguration) => OnrampOption;
6
+ export declare const onrampConfigurationToOnrampOption: (provider: RampConfiguration) => OnrampOption;
@@ -29,29 +29,36 @@ require('../../../locale/locale.cjs');
29
29
  var wallets = require('../../../data/api/wallets/wallets.cjs');
30
30
 
31
31
  const updatePrimaryWalletId = (walletId) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
32
+ var _a;
32
33
  primaryWalletId.setPrimaryWalletId(walletId);
33
34
  const user$1 = user.getUser();
34
35
  if (user$1) {
35
36
  const environmentId = dynamicContextProps.getEnvironmentId();
36
- // Get the last selected wallet for this user
37
- const lastSelectedWalletCredential = user$1.verifiedCredentials.reduce((mostRecentSelectedCredential, credentialToCheck) => {
38
- if (credentialToCheck.format !== 'blockchain' ||
39
- !credentialToCheck.lastSelectedAt) {
40
- return mostRecentSelectedCredential;
37
+ // We will compare the value of this wallet's lastSelectedAt to the latest
38
+ // selected credential's lastSelectedAt. If it's the same, we can skip the
39
+ // /select endpoint. This is to avoid unnecessary calls to the /select
40
+ // endpoint, which causes an update to the user's JWT.
41
+ const currentWalletLastSelectedAt = (_a = user$1.verifiedCredentials.find((credential) => credential.id === walletId)) === null || _a === void 0 ? void 0 : _a.lastSelectedAt;
42
+ if (currentWalletLastSelectedAt) {
43
+ const lastSelectedWalletCredential = user$1.verifiedCredentials.reduce((mostRecentSelectedCredential, credentialToCheck) => {
44
+ if (credentialToCheck.format !== 'blockchain' ||
45
+ !credentialToCheck.lastSelectedAt) {
46
+ return mostRecentSelectedCredential;
47
+ }
48
+ if (!mostRecentSelectedCredential ||
49
+ !mostRecentSelectedCredential.lastSelectedAt) {
50
+ return credentialToCheck;
51
+ }
52
+ return credentialToCheck.lastSelectedAt >
53
+ mostRecentSelectedCredential.lastSelectedAt
54
+ ? credentialToCheck
55
+ : mostRecentSelectedCredential;
56
+ }, null);
57
+ if ((lastSelectedWalletCredential === null || lastSelectedWalletCredential === void 0 ? void 0 : lastSelectedWalletCredential.lastSelectedAt) &&
58
+ lastSelectedWalletCredential.lastSelectedAt.getTime() ===
59
+ currentWalletLastSelectedAt.getTime()) {
60
+ return;
41
61
  }
42
- if (!mostRecentSelectedCredential ||
43
- !mostRecentSelectedCredential.lastSelectedAt) {
44
- return credentialToCheck;
45
- }
46
- return credentialToCheck.lastSelectedAt >
47
- mostRecentSelectedCredential.lastSelectedAt
48
- ? credentialToCheck
49
- : mostRecentSelectedCredential;
50
- }, null);
51
- // No need to select the primary if it's already the last selected wallet
52
- if (lastSelectedWalletCredential &&
53
- lastSelectedWalletCredential.id === walletId) {
54
- return;
55
62
  }
56
63
  yield wallets.storeSelectedWallet({ environmentId, walletId });
57
64
  }
@@ -25,29 +25,36 @@ import '../../../locale/locale.js';
25
25
  import { storeSelectedWallet } from '../../../data/api/wallets/wallets.js';
26
26
 
27
27
  const updatePrimaryWalletId = (walletId) => __awaiter(void 0, void 0, void 0, function* () {
28
+ var _a;
28
29
  setPrimaryWalletId(walletId);
29
30
  const user = getUser();
30
31
  if (user) {
31
32
  const environmentId = getEnvironmentId();
32
- // Get the last selected wallet for this user
33
- const lastSelectedWalletCredential = user.verifiedCredentials.reduce((mostRecentSelectedCredential, credentialToCheck) => {
34
- if (credentialToCheck.format !== 'blockchain' ||
35
- !credentialToCheck.lastSelectedAt) {
36
- return mostRecentSelectedCredential;
33
+ // We will compare the value of this wallet's lastSelectedAt to the latest
34
+ // selected credential's lastSelectedAt. If it's the same, we can skip the
35
+ // /select endpoint. This is to avoid unnecessary calls to the /select
36
+ // endpoint, which causes an update to the user's JWT.
37
+ const currentWalletLastSelectedAt = (_a = user.verifiedCredentials.find((credential) => credential.id === walletId)) === null || _a === void 0 ? void 0 : _a.lastSelectedAt;
38
+ if (currentWalletLastSelectedAt) {
39
+ const lastSelectedWalletCredential = user.verifiedCredentials.reduce((mostRecentSelectedCredential, credentialToCheck) => {
40
+ if (credentialToCheck.format !== 'blockchain' ||
41
+ !credentialToCheck.lastSelectedAt) {
42
+ return mostRecentSelectedCredential;
43
+ }
44
+ if (!mostRecentSelectedCredential ||
45
+ !mostRecentSelectedCredential.lastSelectedAt) {
46
+ return credentialToCheck;
47
+ }
48
+ return credentialToCheck.lastSelectedAt >
49
+ mostRecentSelectedCredential.lastSelectedAt
50
+ ? credentialToCheck
51
+ : mostRecentSelectedCredential;
52
+ }, null);
53
+ if ((lastSelectedWalletCredential === null || lastSelectedWalletCredential === void 0 ? void 0 : lastSelectedWalletCredential.lastSelectedAt) &&
54
+ lastSelectedWalletCredential.lastSelectedAt.getTime() ===
55
+ currentWalletLastSelectedAt.getTime()) {
56
+ return;
37
57
  }
38
- if (!mostRecentSelectedCredential ||
39
- !mostRecentSelectedCredential.lastSelectedAt) {
40
- return credentialToCheck;
41
- }
42
- return credentialToCheck.lastSelectedAt >
43
- mostRecentSelectedCredential.lastSelectedAt
44
- ? credentialToCheck
45
- : mostRecentSelectedCredential;
46
- }, null);
47
- // No need to select the primary if it's already the last selected wallet
48
- if (lastSelectedWalletCredential &&
49
- lastSelectedWalletCredential.id === walletId) {
50
- return;
51
58
  }
52
59
  yield storeSelectedWallet({ environmentId, walletId });
53
60
  }
@@ -76,3 +76,4 @@ export { useAggregateWalletEvents } from './useAggregateWalletEvents';
76
76
  export { useDeleteUserAccount } from './useDeleteUserAccount';
77
77
  export { useDynamicWaas } from './useDynamicWaas';
78
78
  export { useSyncDynamicWaas } from './useSyncDynamicWaas';
79
+ export { useExchangeAccounts } from './useExchangeAccounts';
@@ -147,6 +147,10 @@ const useDynamicLayoutData = ({ view }) => {
147
147
  copykey: 'dyn_account_exists.title',
148
148
  heading: t('dyn_account_exists.title'),
149
149
  },
150
+ 'backup-unsuccessful': {
151
+ copykey: 'dyn_waas.backup_unsuccessful.title',
152
+ heading: t('dyn_waas.backup_unsuccessful.title'),
153
+ },
150
154
  'chainalysis-blocked-wallet': {
151
155
  copykey: 'dyn_chainalysis_blocked_wallet.title',
152
156
  heading: t('dyn_chainalysis_blocked_wallet.title'),
@@ -143,6 +143,10 @@ const useDynamicLayoutData = ({ view }) => {
143
143
  copykey: 'dyn_account_exists.title',
144
144
  heading: t('dyn_account_exists.title'),
145
145
  },
146
+ 'backup-unsuccessful': {
147
+ copykey: 'dyn_waas.backup_unsuccessful.title',
148
+ heading: t('dyn_waas.backup_unsuccessful.title'),
149
+ },
146
150
  'chainalysis-blocked-wallet': {
147
151
  copykey: 'dyn_chainalysis_blocked_wallet.title',
148
152
  heading: t('dyn_chainalysis_blocked_wallet.title'),
@@ -0,0 +1 @@
1
+ export * from './useExchangeAccounts';
@@ -0,0 +1,13 @@
1
+ import { Account, CreateExchangeTransferRequest, ExchangeKeyEnum, ExchangeTransferResponse } from '@dynamic-labs/sdk-api-core';
2
+ type Props = {
3
+ exchange: ExchangeKeyEnum;
4
+ };
5
+ type TransferProps = {
6
+ exchange: ExchangeKeyEnum;
7
+ transferRequest: CreateExchangeTransferRequest;
8
+ };
9
+ export declare const useExchangeAccounts: () => {
10
+ exchangeTransfer: ({ exchange, transferRequest, }: TransferProps) => Promise<ExchangeTransferResponse>;
11
+ getExchangeUserAccounts: ({ exchange, }: Props) => Promise<Account[]>;
12
+ };
13
+ export {};
@@ -10,7 +10,7 @@ var logger = require('../../../shared/logger.cjs');
10
10
  require('@dynamic-labs/iconic');
11
11
  require('@dynamic-labs/wallet-connector-core');
12
12
  require('react/jsx-runtime');
13
- require('../../../context/ViewContext/ViewContext.cjs');
13
+ var ViewContext = require('../../../context/ViewContext/ViewContext.cjs');
14
14
  require('@dynamic-labs/wallet-book');
15
15
  require('@dynamic-labs/utils');
16
16
  require('../../constants/colors.cjs');
@@ -101,6 +101,7 @@ var useInternalDynamicContext = require('../../../context/DynamicContext/useDyna
101
101
  const useSyncDynamicWaas = () => {
102
102
  const { primaryWallet, setShowAuthFlow } = useInternalDynamicContext.useInternalDynamicContext();
103
103
  const { loading: globalLoading } = LoadingContext.useLoadingContext();
104
+ const { clearStackAndPush } = ViewContext.useViewContext();
104
105
  const { user: user$1 } = user.useUser();
105
106
  const projectSettings$1 = projectSettings.useProjectSettings();
106
107
  const walletConnectorOptions = walletOptions.useWalletConnectorOptions();
@@ -119,7 +120,8 @@ const useSyncDynamicWaas = () => {
119
120
  }
120
121
  catch (error) {
121
122
  logger.logger.error('Error creating dynamic waas wallet', error);
122
- setShowAuthFlow(false);
123
+ setShowAuthFlow(true);
124
+ clearStackAndPush('backup-unsuccessful');
123
125
  }
124
126
  });
125
127
  const shouldSyncCreateWallet = shouldAutoCreateDynamicWaasWallet && !triggeredCreate.current;
@@ -6,7 +6,7 @@ import { logger } from '../../../shared/logger.js';
6
6
  import '@dynamic-labs/iconic';
7
7
  import '@dynamic-labs/wallet-connector-core';
8
8
  import 'react/jsx-runtime';
9
- import '../../../context/ViewContext/ViewContext.js';
9
+ import { useViewContext } from '../../../context/ViewContext/ViewContext.js';
10
10
  import '@dynamic-labs/wallet-book';
11
11
  import '@dynamic-labs/utils';
12
12
  import '../../constants/colors.js';
@@ -97,6 +97,7 @@ import { useInternalDynamicContext } from '../../../context/DynamicContext/useDy
97
97
  const useSyncDynamicWaas = () => {
98
98
  const { primaryWallet, setShowAuthFlow } = useInternalDynamicContext();
99
99
  const { loading: globalLoading } = useLoadingContext();
100
+ const { clearStackAndPush } = useViewContext();
100
101
  const { user } = useUser();
101
102
  const projectSettings = useProjectSettings();
102
103
  const walletConnectorOptions = useWalletConnectorOptions();
@@ -115,7 +116,8 @@ const useSyncDynamicWaas = () => {
115
116
  }
116
117
  catch (error) {
117
118
  logger.error('Error creating dynamic waas wallet', error);
118
- setShowAuthFlow(false);
119
+ setShowAuthFlow(true);
120
+ clearStackAndPush('backup-unsuccessful');
119
121
  }
120
122
  });
121
123
  const shouldSyncCreateWallet = shouldAutoCreateDynamicWaasWallet && !triggeredCreate.current;
@@ -98,6 +98,7 @@ var SignMessageConfirmationModal = require('../../../modals/SignMessageConfirmat
98
98
  var SyncWalletPromptModal = require('../../../modals/SyncWalletPromptModal/SyncWalletPromptModal.cjs');
99
99
  var TransactionConfirmationModal = require('../../../modals/TransactionConfirmationModal/TransactionConfirmationModal.cjs');
100
100
  var AddNetworkModal = require('../../../modals/AddNetworkModal/AddNetworkModal.cjs');
101
+ var ZkSyncApprovalModal = require('../../../modals/ZkSyncApprovalModal/ZkSyncApprovalModal.cjs');
101
102
 
102
103
  const useWalletUiUtils = ({ hideEmbeddedWalletTransactionUIs = false, }) => {
103
104
  const confirmationStateRef = React.useRef('enabled');
@@ -114,6 +115,9 @@ const useWalletUiUtils = ({ hideEmbeddedWalletTransactionUIs = false, }) => {
114
115
  const { modal: addNetworkModal, open: openAddNetwork } = useConfirmationModal.useConfirmationModal({
115
116
  elementId: 'dynamic-prompt-to-add-network',
116
117
  });
118
+ const { modal: zkSyncCreateSessionModal, open: openZkSyncCreateSession } = useConfirmationModal.useConfirmationModal({
119
+ elementId: 'dynamic-zksync-approval',
120
+ });
117
121
  const shouldConfirmAction = React.useCallback(() => {
118
122
  if (confirmationStateRef.current === 'disabled') {
119
123
  confirmationStateRef.current = 'enabled';
@@ -174,6 +178,9 @@ const useWalletUiUtils = ({ hideEmbeddedWalletTransactionUIs = false, }) => {
174
178
  const addNetwork = React.useCallback((_c) => _tslib.__awaiter(void 0, [_c], void 0, function* ({ handler, network, walletConnector }) {
175
179
  yield openAddNetwork((resolve) => (jsxRuntime.jsx(AddNetworkModal.AddNetworkModal, { network: network, walletConnector: walletConnector, onCancel: resolve, onNetworkAdded: resolve, addNetworkMutation: handler })));
176
180
  }), [openAddNetwork]);
181
+ const zkSyncCreateSession = React.useCallback((_d) => _tslib.__awaiter(void 0, [_d], void 0, function* ({ session: sessionConfig }) {
182
+ return yield openZkSyncCreateSession((resolve, reject) => (jsxRuntime.jsx(ZkSyncApprovalModal.ZkSyncApprovalModal, { session: sessionConfig, onCancel: reject, onApproved: () => resolve(true) })));
183
+ }), [openZkSyncCreateSession]);
177
184
  const disabledConfirmationOnce = React.useCallback(() => {
178
185
  confirmationStateRef.current = 'disabled';
179
186
  }, []);
@@ -184,6 +191,7 @@ const useWalletUiUtils = ({ hideEmbeddedWalletTransactionUIs = false, }) => {
184
191
  signMessage,
185
192
  signTransaction,
186
193
  syncWallet,
194
+ zkSyncCreateSession,
187
195
  }), [
188
196
  signMessage,
189
197
  signTransaction,
@@ -191,18 +199,21 @@ const useWalletUiUtils = ({ hideEmbeddedWalletTransactionUIs = false, }) => {
191
199
  sendTransaction,
192
200
  syncWallet,
193
201
  addNetwork,
202
+ zkSyncCreateSession,
194
203
  ]);
195
204
  return React.useMemo(() => [
196
205
  signMessageModal ||
197
206
  sendTransactionModal ||
198
207
  syncWalletPromptModal ||
199
- addNetworkModal,
208
+ addNetworkModal ||
209
+ zkSyncCreateSessionModal,
200
210
  walletUiUtils,
201
211
  ], [
202
212
  signMessageModal,
203
213
  sendTransactionModal,
204
214
  syncWalletPromptModal,
205
215
  addNetworkModal,
216
+ zkSyncCreateSessionModal,
206
217
  walletUiUtils,
207
218
  ]);
208
219
  };
@@ -94,6 +94,7 @@ import { SignMessageConfirmationModal } from '../../../modals/SignMessageConfirm
94
94
  import { SyncWalletPromptModal } from '../../../modals/SyncWalletPromptModal/SyncWalletPromptModal.js';
95
95
  import { TransactionConfirmationModal } from '../../../modals/TransactionConfirmationModal/TransactionConfirmationModal.js';
96
96
  import { AddNetworkModal } from '../../../modals/AddNetworkModal/AddNetworkModal.js';
97
+ import { ZkSyncApprovalModal } from '../../../modals/ZkSyncApprovalModal/ZkSyncApprovalModal.js';
97
98
 
98
99
  const useWalletUiUtils = ({ hideEmbeddedWalletTransactionUIs = false, }) => {
99
100
  const confirmationStateRef = useRef('enabled');
@@ -110,6 +111,9 @@ const useWalletUiUtils = ({ hideEmbeddedWalletTransactionUIs = false, }) => {
110
111
  const { modal: addNetworkModal, open: openAddNetwork } = useConfirmationModal({
111
112
  elementId: 'dynamic-prompt-to-add-network',
112
113
  });
114
+ const { modal: zkSyncCreateSessionModal, open: openZkSyncCreateSession } = useConfirmationModal({
115
+ elementId: 'dynamic-zksync-approval',
116
+ });
113
117
  const shouldConfirmAction = useCallback(() => {
114
118
  if (confirmationStateRef.current === 'disabled') {
115
119
  confirmationStateRef.current = 'enabled';
@@ -170,6 +174,9 @@ const useWalletUiUtils = ({ hideEmbeddedWalletTransactionUIs = false, }) => {
170
174
  const addNetwork = useCallback((_c) => __awaiter(void 0, [_c], void 0, function* ({ handler, network, walletConnector }) {
171
175
  yield openAddNetwork((resolve) => (jsx(AddNetworkModal, { network: network, walletConnector: walletConnector, onCancel: resolve, onNetworkAdded: resolve, addNetworkMutation: handler })));
172
176
  }), [openAddNetwork]);
177
+ const zkSyncCreateSession = useCallback((_d) => __awaiter(void 0, [_d], void 0, function* ({ session: sessionConfig }) {
178
+ return yield openZkSyncCreateSession((resolve, reject) => (jsx(ZkSyncApprovalModal, { session: sessionConfig, onCancel: reject, onApproved: () => resolve(true) })));
179
+ }), [openZkSyncCreateSession]);
173
180
  const disabledConfirmationOnce = useCallback(() => {
174
181
  confirmationStateRef.current = 'disabled';
175
182
  }, []);
@@ -180,6 +187,7 @@ const useWalletUiUtils = ({ hideEmbeddedWalletTransactionUIs = false, }) => {
180
187
  signMessage,
181
188
  signTransaction,
182
189
  syncWallet,
190
+ zkSyncCreateSession,
183
191
  }), [
184
192
  signMessage,
185
193
  signTransaction,
@@ -187,18 +195,21 @@ const useWalletUiUtils = ({ hideEmbeddedWalletTransactionUIs = false, }) => {
187
195
  sendTransaction,
188
196
  syncWallet,
189
197
  addNetwork,
198
+ zkSyncCreateSession,
190
199
  ]);
191
200
  return useMemo(() => [
192
201
  signMessageModal ||
193
202
  sendTransactionModal ||
194
203
  syncWalletPromptModal ||
195
- addNetworkModal,
204
+ addNetworkModal ||
205
+ zkSyncCreateSessionModal,
196
206
  walletUiUtils,
197
207
  ], [
198
208
  signMessageModal,
199
209
  sendTransactionModal,
200
210
  syncWalletPromptModal,
201
211
  addNetworkModal,
212
+ zkSyncCreateSessionModal,
202
213
  walletUiUtils,
203
214
  ]);
204
215
  };
@@ -0,0 +1,138 @@
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('@dynamic-labs/utils');
10
+ require('../../components/Accordion/components/AccordionItem/AccordionItem.cjs');
11
+ var exclamation = require('../../shared/assets/exclamation.cjs');
12
+ require('@dynamic-labs/iconic');
13
+ require('../../context/ViewContext/ViewContext.cjs');
14
+ var warningRed = require('../../shared/assets/warning-red.cjs');
15
+ var backup = require('../../shared/assets/backup.cjs');
16
+ require('../../../../_virtual/_tslib.cjs');
17
+ require('@dynamic-labs/sdk-api-core');
18
+ require('../../shared/logger.cjs');
19
+ require('@dynamic-labs/wallet-connector-core');
20
+ require('@dynamic-labs/wallet-book');
21
+ require('../../utils/constants/colors.cjs');
22
+ require('../../utils/constants/values.cjs');
23
+ require('../../shared/consts/index.cjs');
24
+ require('../../components/Alert/Alert.cjs');
25
+ require('../../events/dynamicEvents.cjs');
26
+ require('../../context/DynamicContext/DynamicContext.cjs');
27
+ require('../../store/state/loadingAndLifecycle/loadingAndLifecycle.cjs');
28
+ require('../../store/state/authMode/authMode.cjs');
29
+ require('../../context/CaptchaContext/CaptchaContext.cjs');
30
+ require('../../context/ErrorContext/ErrorContext.cjs');
31
+ require('@dynamic-labs/multi-wallet');
32
+ require('react-international-phone');
33
+ require('../../store/state/nonce/nonce.cjs');
34
+ require('../../store/state/projectSettings/projectSettings.cjs');
35
+ require('../../config/ApiEndpoint.cjs');
36
+ require('../../store/state/user/user.cjs');
37
+ require('../../locale/locale.cjs');
38
+ require('../../store/state/dynamicContextProps/dynamicContextProps.cjs');
39
+ require('../../store/state/primaryWalletId/primaryWalletId.cjs');
40
+ require('../../store/state/connectedWalletsInfo/connectedWalletsInfo.cjs');
41
+ require('../../context/AccessDeniedContext/AccessDeniedContext.cjs');
42
+ require('../../context/AccountExistsContext/AccountExistsContext.cjs');
43
+ require('../../context/UserWalletsContext/UserWalletsContext.cjs');
44
+ require('../../context/VerificationContext/VerificationContext.cjs');
45
+ require('react-dom');
46
+ require('../../utils/functions/compareChains/compareChains.cjs');
47
+ require('../Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.cjs');
48
+ require('../../context/ThemeContext/ThemeContext.cjs');
49
+ require('../../utils/hooks/useUserUpdateRequest/useUpdateUser/userFieldsSchema.cjs');
50
+ require('bs58');
51
+ require('@dynamic-labs/types');
52
+ require('../../context/SocialRedirectContext/SocialRedirectContext.cjs');
53
+ require('../../context/LoadingContext/LoadingContext.cjs');
54
+ require('../../context/WalletContext/WalletContext.cjs');
55
+ require('../../utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/constants.cjs');
56
+ require('yup');
57
+ require('../../context/MockContext/MockContext.cjs');
58
+ require('../CollectUserDataView/useFields.cjs');
59
+ require('../../context/FieldsStateContext/FieldsStateContext.cjs');
60
+ require('../../context/UserFieldEditorContext/UserFieldEditorContext.cjs');
61
+ require('@dynamic-labs/rpc-providers');
62
+ require('../../store/state/walletOptions/walletOptions.cjs');
63
+ var PoweredByDynamic = require('../../components/PoweredByDynamic/PoweredByDynamic.cjs');
64
+ require('../../context/FooterAnimationContext/index.cjs');
65
+ require('../../components/ShadowDOM/ShadowDOM.cjs');
66
+ require('../../components/Transition/ZoomTransition/ZoomTransition.cjs');
67
+ require('../../components/Transition/SlideInUpTransition/SlideInUpTransition.cjs');
68
+ require('../../components/Transition/OpacityTransition/OpacityTransition.cjs');
69
+ require('../../components/OverlayCardBase/OverlayCardTarget/OverlayCardTarget.cjs');
70
+ require('../../context/WalletGroupContext/WalletGroupContext.cjs');
71
+ require('../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.cjs');
72
+ require('react-focus-lock');
73
+ var Icon = require('../../components/Icon/Icon.cjs');
74
+ var Typography = require('../../components/Typography/Typography.cjs');
75
+ require('../../widgets/DynamicWidget/context/DynamicWidgetContext.cjs');
76
+ require('../../components/IconButton/IconButton.cjs');
77
+ require('../../components/MenuList/Dropdown/Dropdown.cjs');
78
+ var TypographyButton = require('../../components/TypographyButton/TypographyButton.cjs');
79
+ require('formik');
80
+ require('../../utils/hooks/useSubdomainCheck/useSubdomainCheck.cjs');
81
+ require('../../store/state/sendBalances.cjs');
82
+ require('../../components/Input/Input.cjs');
83
+ require('../../components/OverlayCard/OverlayCard.cjs');
84
+ require('../TransactionConfirmationView/TransactionConfirmationView.cjs');
85
+ require('../../context/PasskeyContext/PasskeyContext.cjs');
86
+ require('../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
87
+ require('../../context/OnrampContext/OnrampContext.cjs');
88
+ require('qrcode');
89
+ require('../../widgets/DynamicWidget/views/ReceiveWalletFunds/ReceiveWalletFunds.cjs');
90
+ require('../../../index.cjs');
91
+ var NeedHelpSection = require('../../components/NeedHelpSection/NeedHelpSection.cjs');
92
+ require('../../context/IpConfigurationContext/IpConfigurationContext.cjs');
93
+ require('../../context/ConnectWithOtpContext/ConnectWithOtpContext.cjs');
94
+ require('../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.cjs');
95
+ require('@hcaptcha/react-hcaptcha');
96
+ require('../../context/ErrorContext/hooks/useErrorText/useErrorText.cjs');
97
+ require('../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.cjs');
98
+ require('../../store/state/connectorsInitializing/connectorsInitializing.cjs');
99
+ require('../../store/state/tokenBalances.cjs');
100
+ require('../../shared/utils/functions/getInitialUrl/getInitialUrl.cjs');
101
+ require('../../components/InlineWidget/InlineWidget.cjs');
102
+ require('../../components/IsBrowser/IsBrowser.cjs');
103
+ require('../../components/Popper/Popper/Popper.cjs');
104
+ require('../../components/Popper/PopperContext/PopperContext.cjs');
105
+
106
+ const BackupUnsuccessfulView = () => {
107
+ const { t } = reactI18next.useTranslation();
108
+ const isProperlyMounted = React.useRef(false);
109
+ const refreshPage = () => {
110
+ window.location.reload();
111
+ };
112
+ // force refresh on component unmount
113
+ React.useEffect(() => {
114
+ const timer = setTimeout(() => {
115
+ isProperlyMounted.current = true;
116
+ }, 100);
117
+ return () => {
118
+ clearTimeout(timer);
119
+ // Only refresh if component was properly mounted and is now being unmounted
120
+ if (isProperlyMounted.current) {
121
+ setTimeout(() => {
122
+ refreshPage();
123
+ }, 0);
124
+ }
125
+ };
126
+ }, []);
127
+ return (jsxRuntime.jsxs("div", { className: 'backup-unsuccessful-view', children: [jsxRuntime.jsxs("div", { className: 'backup-unsuccessful-view__content', children: [jsxRuntime.jsxs("div", { className: 'backup-icon-container', children: [jsxRuntime.jsx(Icon.Icon, { color: 'brand-primary', children: jsxRuntime.jsx(backup.ReactComponent, { className: 'backup-icon', width: 64, height: 64 }) }), jsxRuntime.jsxs("div", { className: 'warning-icon-container', children: [jsxRuntime.jsx(warningRed.ReactComponent, { className: 'combined-icon', width: 40, height: 40 }), jsxRuntime.jsx(exclamation.ReactComponent, { className: 'exclamation-icon', width: 20, height: 20, style: {
128
+ left: '50%',
129
+ position: 'absolute',
130
+ top: '50%',
131
+ transform: 'translate(-50%, -50%)',
132
+ } })] })] }), jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', className: 'backup-message', color: 'primary', children: t('dyn_waas.backup_unsuccessful.description') }), jsxRuntime.jsx("div", { className: 'need-help-section', children: jsxRuntime.jsx(NeedHelpSection.NeedHelpSection, {}) }), jsxRuntime.jsx("div", { className: 'button-group', children: jsxRuntime.jsx(TypographyButton.TypographyButton, { buttonClassName: 'retry-button', buttonVariant: 'brand-primary', type: 'submit', onClick: () => refreshPage(), copykey: 'dyn_waas.backup_unsuccessful.try_again', typographyProps: {
133
+ color: 'inherit',
134
+ }, children: t('dyn_waas.backup_unsuccessful.try_again') }) })] }), jsxRuntime.jsx(PoweredByDynamic.PoweredByDynamic, { asFooter: true })] }));
135
+ };
136
+
137
+ exports.BackupUnsuccessfulView = BackupUnsuccessfulView;
138
+ exports["default"] = BackupUnsuccessfulView;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const BackupUnsuccessfulView: React.FC;
3
+ export default BackupUnsuccessfulView;