@dynamic-labs/sdk-react-core 4.47.0 → 4.47.2

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 (150) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/package.cjs +3 -3
  3. package/package.js +3 -3
  4. package/package.json +14 -14
  5. package/src/lib/client/extension/deprecated/mfa/verifyTotpMfaDevice/verifyTotpMfaDevice.d.ts +1 -1
  6. package/src/lib/client/extension/hooks/useInitializeSdkClient/useInitializeSdkClient.cjs +17 -0
  7. package/src/lib/client/extension/hooks/useInitializeSdkClient/useInitializeSdkClient.js +17 -0
  8. package/src/lib/client/extension/user/raiseUserProfileEvent/raiseUserProfileEvent.cjs +6 -6
  9. package/src/lib/client/extension/user/raiseUserProfileEvent/raiseUserProfileEvent.js +6 -6
  10. package/src/lib/components/PoweredByDynamic/PoweredByDynamic.cjs +6 -6
  11. package/src/lib/components/PoweredByDynamic/PoweredByDynamic.js +6 -6
  12. package/src/lib/context/ConnectWithOtpContext/utils/createEmailHandler.cjs +7 -5
  13. package/src/lib/context/ConnectWithOtpContext/utils/createEmailHandler.js +7 -5
  14. package/src/lib/context/ConnectWithOtpContext/utils/createSmsHandler.cjs +7 -5
  15. package/src/lib/context/ConnectWithOtpContext/utils/createSmsHandler.js +7 -5
  16. package/src/lib/context/DynamicContext/hooks/useRemoveWallet/useRemoveWallet.cjs +4 -4
  17. package/src/lib/context/DynamicContext/hooks/useRemoveWallet/useRemoveWallet.js +4 -4
  18. package/src/lib/context/SocialRedirectContext/SocialRedirectContext.cjs +2 -0
  19. package/src/lib/context/SocialRedirectContext/SocialRedirectContext.js +2 -0
  20. package/src/lib/context/ViewContext/ViewContext.cjs +6 -1
  21. package/src/lib/context/ViewContext/ViewContext.js +6 -1
  22. package/src/lib/data/api/api.cjs +9 -9
  23. package/src/lib/data/api/api.js +9 -9
  24. package/src/lib/data/api/externalAuth/externalAuth.cjs +4 -4
  25. package/src/lib/data/api/externalAuth/externalAuth.js +4 -4
  26. package/src/lib/data/api/oauth/oauth.cjs +4 -4
  27. package/src/lib/data/api/oauth/oauth.js +4 -4
  28. package/src/lib/data/api/user/user.cjs +4 -4
  29. package/src/lib/data/api/user/user.js +4 -4
  30. package/src/lib/data/api/wallets/wallets.cjs +4 -4
  31. package/src/lib/data/api/wallets/wallets.js +4 -4
  32. package/src/lib/shared/assets/index.d.ts +1 -0
  33. package/src/lib/shared/assets/reload-icon.cjs +54 -0
  34. package/src/lib/shared/assets/reload-icon.js +30 -0
  35. package/src/lib/store/state/connectedWalletsInfo/connectedWalletsInfo.cjs +6 -6
  36. package/src/lib/store/state/connectedWalletsInfo/connectedWalletsInfo.js +6 -6
  37. package/src/lib/store/state/nonce/nonce.cjs +4 -4
  38. package/src/lib/store/state/nonce/nonce.js +4 -4
  39. package/src/lib/store/utils/settingsUtils/settingsUtils.cjs +6 -6
  40. package/src/lib/store/utils/settingsUtils/settingsUtils.js +6 -6
  41. package/src/lib/styles/index.shadow.cjs +1 -1
  42. package/src/lib/styles/index.shadow.js +1 -1
  43. package/src/lib/utils/functions/clientSessionKeys/getClientSessionKeys.js +1 -1
  44. package/src/lib/utils/functions/isMfaMethodEnabled/isMfaMethodEnabled.cjs +6 -6
  45. package/src/lib/utils/functions/isMfaMethodEnabled/isMfaMethodEnabled.js +6 -6
  46. package/src/lib/utils/functions/updatePrimaryWalletId/updatePrimaryWalletId.cjs +5 -5
  47. package/src/lib/utils/functions/updatePrimaryWalletId/updatePrimaryWalletId.js +5 -5
  48. package/src/lib/utils/hooks/authenticationHooks/helpers/isConnectOnly.cjs +6 -6
  49. package/src/lib/utils/hooks/authenticationHooks/helpers/isConnectOnly.js +6 -6
  50. package/src/lib/utils/hooks/authenticationHooks/useConnectAndSign/useConnectAndSign.cjs +2 -0
  51. package/src/lib/utils/hooks/authenticationHooks/useConnectAndSign/useConnectAndSign.js +2 -0
  52. package/src/lib/utils/hooks/authenticationHooks/useConnectAndSignSplitSteps/useConnectAndSignSplitSteps.cjs +2 -0
  53. package/src/lib/utils/hooks/authenticationHooks/useConnectAndSignSplitSteps/useConnectAndSignSplitSteps.js +2 -0
  54. package/src/lib/utils/hooks/authenticationHooks/useSignConnectOnlyUser/useSignConnectOnlyUser.cjs +2 -0
  55. package/src/lib/utils/hooks/authenticationHooks/useSignConnectOnlyUser/useSignConnectOnlyUser.js +2 -0
  56. package/src/lib/utils/hooks/useAuthLayoutChecks/useAllowClose/useAllowClose.cjs +6 -6
  57. package/src/lib/utils/hooks/useAuthLayoutChecks/useAllowClose/useAllowClose.js +6 -6
  58. package/src/lib/utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.cjs +6 -6
  59. package/src/lib/utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.js +6 -6
  60. package/src/lib/utils/hooks/useClientSessionKeys/useClientSessionKeys.cjs +5 -11
  61. package/src/lib/utils/hooks/useClientSessionKeys/useClientSessionKeys.js +6 -12
  62. package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.cjs +4 -4
  63. package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.js +4 -4
  64. package/src/lib/utils/hooks/useDeleteUserAccount/useDeleteUserAccount.cjs +4 -4
  65. package/src/lib/utils/hooks/useDeleteUserAccount/useDeleteUserAccount.js +4 -4
  66. package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.cjs +4 -4
  67. package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.js +4 -4
  68. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.cjs +16 -16
  69. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.js +16 -16
  70. package/src/lib/utils/hooks/useEmbeddedWalletSessionKeys/useEmbeddedWalletSessionKeys.cjs +5 -5
  71. package/src/lib/utils/hooks/useEmbeddedWalletSessionKeys/useEmbeddedWalletSessionKeys.js +5 -5
  72. package/src/lib/utils/hooks/useExternalAuth/useExternalAuth.cjs +6 -4
  73. package/src/lib/utils/hooks/useExternalAuth/useExternalAuth.js +6 -4
  74. package/src/lib/utils/hooks/useFundingHelpers/useFundingHelpers.cjs +2 -1
  75. package/src/lib/utils/hooks/useFundingHelpers/useFundingHelpers.js +2 -1
  76. package/src/lib/utils/hooks/useGlobalLoading/useGlobalLoading.cjs +5 -5
  77. package/src/lib/utils/hooks/useGlobalLoading/useGlobalLoading.js +5 -5
  78. package/src/lib/utils/hooks/useIsLoadingEmbeddedWallet/useIsLoadingEmbeddedWallet.cjs +6 -6
  79. package/src/lib/utils/hooks/useIsLoadingEmbeddedWallet/useIsLoadingEmbeddedWallet.js +6 -6
  80. package/src/lib/utils/hooks/useIsPasskeysMfaEnabled/useIsPasskeysMfaEnabled.cjs +6 -6
  81. package/src/lib/utils/hooks/useIsPasskeysMfaEnabled/useIsPasskeysMfaEnabled.js +6 -6
  82. package/src/lib/utils/hooks/useIsTotpMfaEnabled/useIsTotpMfaEnabled.cjs +6 -6
  83. package/src/lib/utils/hooks/useIsTotpMfaEnabled/useIsTotpMfaEnabled.js +6 -6
  84. package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.cjs +4 -4
  85. package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.js +4 -4
  86. package/src/lib/utils/hooks/useMfa/useMfa.cjs +5 -5
  87. package/src/lib/utils/hooks/useMfa/useMfa.js +5 -5
  88. package/src/lib/utils/hooks/useMultichainTokenBalances/useMultichainTokenBalances.cjs +6 -6
  89. package/src/lib/utils/hooks/useMultichainTokenBalances/useMultichainTokenBalances.js +6 -6
  90. package/src/lib/utils/hooks/usePayWithDynamic/usePayWithDynamic.cjs +5 -5
  91. package/src/lib/utils/hooks/usePayWithDynamic/usePayWithDynamic.js +5 -5
  92. package/src/lib/utils/hooks/usePromptMfaAuth/usePromptMfaAuth.cjs +25 -27
  93. package/src/lib/utils/hooks/usePromptMfaAuth/usePromptMfaAuth.js +25 -27
  94. package/src/lib/utils/hooks/useRefreshUser/useRefreshUser.cjs +4 -4
  95. package/src/lib/utils/hooks/useRefreshUser/useRefreshUser.js +4 -4
  96. package/src/lib/utils/hooks/useSendDynamicProps/useSendDynamicProps.cjs +4 -4
  97. package/src/lib/utils/hooks/useSendDynamicProps/useSendDynamicProps.js +4 -4
  98. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.cjs +6 -3
  99. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.js +6 -3
  100. package/src/lib/utils/hooks/useSyncDynamicWaas/useSyncDynamicWaas.cjs +5 -5
  101. package/src/lib/utils/hooks/useSyncDynamicWaas/useSyncDynamicWaas.js +5 -5
  102. package/src/lib/utils/hooks/useTokenBalances/useTokenBalances.cjs +6 -6
  103. package/src/lib/utils/hooks/useTokenBalances/useTokenBalances.js +6 -6
  104. package/src/lib/utils/hooks/useTransferWallet/useTransferWallet.cjs +5 -5
  105. package/src/lib/utils/hooks/useTransferWallet/useTransferWallet.js +5 -5
  106. package/src/lib/utils/hooks/useUpgradeEmbeddedWallet/useUpgradeEmbeddedWallet.cjs +6 -6
  107. package/src/lib/utils/hooks/useUpgradeEmbeddedWallet/useUpgradeEmbeddedWallet.js +6 -6
  108. package/src/lib/utils/hooks/useUserAuth/useUserAuth.cjs +4 -4
  109. package/src/lib/utils/hooks/useUserAuth/useUserAuth.js +4 -4
  110. package/src/lib/utils/hooks/useValidateSession/handleWalletInfoOutOfSync/handleWalletInfoOutOfSync.cjs +5 -5
  111. package/src/lib/utils/hooks/useValidateSession/handleWalletInfoOutOfSync/handleWalletInfoOutOfSync.js +5 -5
  112. package/src/lib/utils/hooks/useValidateSession/useValidateSession.cjs +5 -5
  113. package/src/lib/utils/hooks/useValidateSession/useValidateSession.js +5 -5
  114. package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.cjs +2 -0
  115. package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.js +2 -0
  116. package/src/lib/utils/hooks/useWalletOptions/useWalletOptions.cjs +4 -3
  117. package/src/lib/utils/hooks/useWalletOptions/useWalletOptions.d.ts +3 -20
  118. package/src/lib/utils/hooks/useWalletOptions/useWalletOptions.js +4 -3
  119. package/src/lib/views/EmailVerification/EmailVerification.cjs +9 -7
  120. package/src/lib/views/EmailVerification/EmailVerification.js +9 -7
  121. package/src/lib/views/EmbeddedReveal/utils/turnkeyExport/turnkeyExport.cjs +9 -9
  122. package/src/lib/views/EmbeddedReveal/utils/turnkeyExport/turnkeyExport.js +9 -9
  123. package/src/lib/views/ExchangeList/ExchangeList.cjs +6 -6
  124. package/src/lib/views/ExchangeList/ExchangeList.js +6 -6
  125. package/src/lib/views/MfaChooseDeviceView/useGetMfaOptions/useGetMfaOptions.cjs +5 -5
  126. package/src/lib/views/MfaChooseDeviceView/useGetMfaOptions/useGetMfaOptions.js +5 -5
  127. package/src/lib/views/MfaVerificationView/MfaVerificationView.cjs +4 -4
  128. package/src/lib/views/MfaVerificationView/MfaVerificationView.js +4 -4
  129. package/src/lib/views/Passkey/utils/createEmbeddedWalletRequest/createEmbeddedWalletRequest.cjs +5 -5
  130. package/src/lib/views/Passkey/utils/createEmbeddedWalletRequest/createEmbeddedWalletRequest.js +5 -5
  131. package/src/lib/views/Passkey/utils/passkeyRecovery/passkeyRecovery.cjs +25 -25
  132. package/src/lib/views/Passkey/utils/passkeyRecovery/passkeyRecovery.js +25 -25
  133. package/src/lib/views/SendBalanceView/SendBalanceView.cjs +1 -0
  134. package/src/lib/views/SendBalanceView/SendBalanceView.js +1 -0
  135. package/src/lib/views/SmsVerification/useSmsVerification/useSmsVerification.cjs +2 -0
  136. package/src/lib/views/SmsVerification/useSmsVerification/useSmsVerification.js +2 -0
  137. package/src/lib/widgets/DynamicWidget/components/ActiveWalletBalance/ActiveWalletBalance.cjs +42 -2
  138. package/src/lib/widgets/DynamicWidget/components/ActiveWalletBalance/ActiveWalletBalance.js +42 -2
  139. package/src/lib/widgets/DynamicWidget/hooks/useFetchNameService/useFetchNameService.cjs +6 -6
  140. package/src/lib/widgets/DynamicWidget/hooks/useFetchNameService/useFetchNameService.js +6 -6
  141. package/src/lib/widgets/DynamicWidget/views/AccountAndSecuritySettingsView/ZKSyncSessionsSection/ZKSyncSessionsSection.cjs +6 -6
  142. package/src/lib/widgets/DynamicWidget/views/AccountAndSecuritySettingsView/ZKSyncSessionsSection/ZKSyncSessionsSection.js +6 -6
  143. package/src/lib/widgets/DynamicWidget/views/ChooseWalletFundingMethod/useFundingMethods/getPromptAmountParams/getPromptAmountParams.cjs +5 -5
  144. package/src/lib/widgets/DynamicWidget/views/ChooseWalletFundingMethod/useFundingMethods/getPromptAmountParams/getPromptAmountParams.js +5 -5
  145. package/src/lib/widgets/DynamicWidget/views/ChooseWalletFundingMethod/useFundingMethods/useStartExchangeFunding/useStartExchangeFunding.cjs +5 -5
  146. package/src/lib/widgets/DynamicWidget/views/ChooseWalletFundingMethod/useFundingMethods/useStartExchangeFunding/useStartExchangeFunding.js +5 -5
  147. package/src/lib/widgets/DynamicWidget/views/ManagePasskeysWidgetView/ManagePasskeysWidgetView.cjs +6 -6
  148. package/src/lib/widgets/DynamicWidget/views/ManagePasskeysWidgetView/ManagePasskeysWidgetView.js +6 -6
  149. package/src/lib/widgets/DynamicWidget/views/WaasBackupView/WaasBackupView.cjs +5 -5
  150. package/src/lib/widgets/DynamicWidget/views/WaasBackupView/WaasBackupView.js +5 -5
@@ -11,8 +11,10 @@ require('../../../../context/DynamicContext/DynamicContext.cjs');
11
11
  require('../../../../store/state/loadingAndLifecycle/loadingAndLifecycle.cjs');
12
12
  require('@dynamic-labs/iconic');
13
13
  require('@dynamic-labs/wallet-connector-core');
14
+ var check = require('../../../../shared/assets/check.cjs');
14
15
  var chevronDown = require('../../../../shared/assets/chevron-down.cjs');
15
16
  require('../../../../context/ViewContext/ViewContext.cjs');
17
+ var reloadIcon = require('../../../../shared/assets/reload-icon.cjs');
16
18
  require('../../../../shared/logger.cjs');
17
19
  require('@dynamic-labs/wallet-book');
18
20
  require('@dynamic-labs/utils');
@@ -117,12 +119,16 @@ const ActiveWalletBalance = ({ isLoading = false, }) => {
117
119
  const [balanceIsExpanded, setBalanceIsExpanded] = React.useState(false);
118
120
  /** Controls for the shadow on scroll of the multi asset balance section */
119
121
  const [hasShadow, setHasShadow] = React.useState(false);
122
+ const [isRefreshing, setIsRefreshing] = React.useState(false);
123
+ const [isSuccess, setIsSuccess] = React.useState(false);
120
124
  const contentRef = React.useRef(null);
125
+ const successTimeoutRef = React.useRef(null);
126
+ const refreshTimeoutRef = React.useRef(null);
121
127
  const { primaryWallet, network, showFiat, multiAsset } = useInternalDynamicContext.useInternalDynamicContext();
122
128
  const authMode$1 = authMode.useAuthMode();
123
129
  const projectSettings = useProjectSettings.useProjectSettings();
124
130
  const { data: testnet } = usePromise.usePromise(() => _tslib.__awaiter(void 0, void 0, void 0, function* () { return Boolean(yield (primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.isTestnet())); }), { deps: [network], initialData: false });
125
- const { isLoading: isLoadingTokenBalances, tokenBalances, error: errorTokenBalances, } = useTokenBalances.useTokenBalances({
131
+ const { isLoading: isLoadingTokenBalances, tokenBalances, error: errorTokenBalances, fetchAccountBalances, } = useTokenBalances.useTokenBalances({
126
132
  chainName: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.connectedChain,
127
133
  includeFiat: showFiat,
128
134
  includeNativeBalance: true,
@@ -152,6 +158,37 @@ const ActiveWalletBalance = ({ isLoading = false, }) => {
152
158
  setHasShadow(contentRef.current.scrollTop > 0);
153
159
  }
154
160
  };
161
+ const handleRefresh = React.useCallback((event) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
162
+ event.stopPropagation();
163
+ if (isRefreshing || isSuccess)
164
+ return;
165
+ // Clear any existing timeouts
166
+ if (successTimeoutRef.current) {
167
+ clearTimeout(successTimeoutRef.current);
168
+ successTimeoutRef.current = null;
169
+ }
170
+ if (refreshTimeoutRef.current) {
171
+ clearTimeout(refreshTimeoutRef.current);
172
+ refreshTimeoutRef.current = null;
173
+ }
174
+ setIsRefreshing(true);
175
+ setIsSuccess(false);
176
+ try {
177
+ yield fetchAccountBalances(true);
178
+ setIsRefreshing(false);
179
+ setIsSuccess(true);
180
+ successTimeoutRef.current = setTimeout(() => {
181
+ setIsSuccess(false);
182
+ successTimeoutRef.current = null;
183
+ }, 5000);
184
+ }
185
+ catch (error) {
186
+ refreshTimeoutRef.current = setTimeout(() => {
187
+ setIsRefreshing(false);
188
+ refreshTimeoutRef.current = null;
189
+ }, 1000);
190
+ }
191
+ }), [isRefreshing, isSuccess, fetchAccountBalances]);
155
192
  const primaryWalletNativeBalance = () => {
156
193
  if (!primaryWallet || isLoadingTokenBalances || isLoading) {
157
194
  return jsxRuntime.jsx(Skeleton.Skeleton, { className: 'balance-container__skeleton' });
@@ -160,7 +197,10 @@ const ActiveWalletBalance = ({ isLoading = false, }) => {
160
197
  ? currencyFormatter.format(parseFloat(totalValue.toFixed(2)))
161
198
  : '<$0.01' })) : (jsxRuntime.jsx(Balance.Balance, { className: 'balance-header__balance', wallet: primaryWallet, network: network, variant: 'numbers_display' }));
162
199
  };
163
- const balanceHeaderTitle = () => (jsxRuntime.jsxs("div", { className: 'balance-header__title', children: [isLoadingTokenBalances || isLoading ? (jsxRuntime.jsx(Skeleton.Skeleton, { className: 'balance-header__title-skeleton' })) : (jsxRuntime.jsx(Typography.Typography, { color: 'secondary', variant: 'body_normal', copykey: 'dyn_active_wallet_info.balance', children: t('dyn_active_wallet_info.balance') })), jsxRuntime.jsx("div", { className: 'balance-header__balance', children: primaryWalletNativeBalance() })] }));
200
+ const balanceHeaderTitle = () => (jsxRuntime.jsxs("div", { className: 'balance-header__title', children: [isLoadingTokenBalances || isLoading ? (jsxRuntime.jsx(Skeleton.Skeleton, { className: 'balance-header__title-skeleton' })) : (jsxRuntime.jsx(Typography.Typography, { color: 'secondary', variant: 'body_normal', copykey: 'dyn_active_wallet_info.balance', children: t('dyn_active_wallet_info.balance') })), jsxRuntime.jsxs("div", { className: 'balance-header__balance', children: [primaryWalletNativeBalance(), isSuccess ? (jsxRuntime.jsx("div", { className: 'balance-header__success-icon', children: jsxRuntime.jsx(check.ReactComponent, { "data-testid": 'success-icon' }) })) : (jsxRuntime.jsx(reloadIcon.ReactComponent, { "data-testid": 'refresh-balances', className: `balance-header__refresh-icon ${isRefreshing ? 'balance-header__refresh-icon--spinning' : ''}`, onClick: handleRefresh, style: {
201
+ cursor: isRefreshing ? 'not-allowed' : 'pointer',
202
+ opacity: isRefreshing ? 0.5 : 1,
203
+ }, title: 'Refresh balances' }))] })] }));
164
204
  const toggleBalanceAccordion = React.useCallback(() => {
165
205
  if (!isLoadingTokenBalances) {
166
206
  setBalanceIsExpanded(!balanceIsExpanded);
@@ -7,8 +7,10 @@ import '../../../../context/DynamicContext/DynamicContext.js';
7
7
  import '../../../../store/state/loadingAndLifecycle/loadingAndLifecycle.js';
8
8
  import '@dynamic-labs/iconic';
9
9
  import '@dynamic-labs/wallet-connector-core';
10
+ import { ReactComponent as SvgCheck } from '../../../../shared/assets/check.js';
10
11
  import { ReactComponent as SvgChevronDown } from '../../../../shared/assets/chevron-down.js';
11
12
  import '../../../../context/ViewContext/ViewContext.js';
13
+ import { ReactComponent as SvgReloadIcon } from '../../../../shared/assets/reload-icon.js';
12
14
  import '../../../../shared/logger.js';
13
15
  import '@dynamic-labs/wallet-book';
14
16
  import '@dynamic-labs/utils';
@@ -113,12 +115,16 @@ const ActiveWalletBalance = ({ isLoading = false, }) => {
113
115
  const [balanceIsExpanded, setBalanceIsExpanded] = useState(false);
114
116
  /** Controls for the shadow on scroll of the multi asset balance section */
115
117
  const [hasShadow, setHasShadow] = useState(false);
118
+ const [isRefreshing, setIsRefreshing] = useState(false);
119
+ const [isSuccess, setIsSuccess] = useState(false);
116
120
  const contentRef = useRef(null);
121
+ const successTimeoutRef = useRef(null);
122
+ const refreshTimeoutRef = useRef(null);
117
123
  const { primaryWallet, network, showFiat, multiAsset } = useInternalDynamicContext();
118
124
  const authMode = useAuthMode();
119
125
  const projectSettings = useProjectSettings();
120
126
  const { data: testnet } = usePromise(() => __awaiter(void 0, void 0, void 0, function* () { return Boolean(yield (primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.isTestnet())); }), { deps: [network], initialData: false });
121
- const { isLoading: isLoadingTokenBalances, tokenBalances, error: errorTokenBalances, } = useTokenBalances({
127
+ const { isLoading: isLoadingTokenBalances, tokenBalances, error: errorTokenBalances, fetchAccountBalances, } = useTokenBalances({
122
128
  chainName: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.connectedChain,
123
129
  includeFiat: showFiat,
124
130
  includeNativeBalance: true,
@@ -148,6 +154,37 @@ const ActiveWalletBalance = ({ isLoading = false, }) => {
148
154
  setHasShadow(contentRef.current.scrollTop > 0);
149
155
  }
150
156
  };
157
+ const handleRefresh = useCallback((event) => __awaiter(void 0, void 0, void 0, function* () {
158
+ event.stopPropagation();
159
+ if (isRefreshing || isSuccess)
160
+ return;
161
+ // Clear any existing timeouts
162
+ if (successTimeoutRef.current) {
163
+ clearTimeout(successTimeoutRef.current);
164
+ successTimeoutRef.current = null;
165
+ }
166
+ if (refreshTimeoutRef.current) {
167
+ clearTimeout(refreshTimeoutRef.current);
168
+ refreshTimeoutRef.current = null;
169
+ }
170
+ setIsRefreshing(true);
171
+ setIsSuccess(false);
172
+ try {
173
+ yield fetchAccountBalances(true);
174
+ setIsRefreshing(false);
175
+ setIsSuccess(true);
176
+ successTimeoutRef.current = setTimeout(() => {
177
+ setIsSuccess(false);
178
+ successTimeoutRef.current = null;
179
+ }, 5000);
180
+ }
181
+ catch (error) {
182
+ refreshTimeoutRef.current = setTimeout(() => {
183
+ setIsRefreshing(false);
184
+ refreshTimeoutRef.current = null;
185
+ }, 1000);
186
+ }
187
+ }), [isRefreshing, isSuccess, fetchAccountBalances]);
151
188
  const primaryWalletNativeBalance = () => {
152
189
  if (!primaryWallet || isLoadingTokenBalances || isLoading) {
153
190
  return jsx(Skeleton, { className: 'balance-container__skeleton' });
@@ -156,7 +193,10 @@ const ActiveWalletBalance = ({ isLoading = false, }) => {
156
193
  ? currencyFormatter.format(parseFloat(totalValue.toFixed(2)))
157
194
  : '<$0.01' })) : (jsx(Balance, { className: 'balance-header__balance', wallet: primaryWallet, network: network, variant: 'numbers_display' }));
158
195
  };
159
- const balanceHeaderTitle = () => (jsxs("div", { className: 'balance-header__title', children: [isLoadingTokenBalances || isLoading ? (jsx(Skeleton, { className: 'balance-header__title-skeleton' })) : (jsx(Typography, { color: 'secondary', variant: 'body_normal', copykey: 'dyn_active_wallet_info.balance', children: t('dyn_active_wallet_info.balance') })), jsx("div", { className: 'balance-header__balance', children: primaryWalletNativeBalance() })] }));
196
+ const balanceHeaderTitle = () => (jsxs("div", { className: 'balance-header__title', children: [isLoadingTokenBalances || isLoading ? (jsx(Skeleton, { className: 'balance-header__title-skeleton' })) : (jsx(Typography, { color: 'secondary', variant: 'body_normal', copykey: 'dyn_active_wallet_info.balance', children: t('dyn_active_wallet_info.balance') })), jsxs("div", { className: 'balance-header__balance', children: [primaryWalletNativeBalance(), isSuccess ? (jsx("div", { className: 'balance-header__success-icon', children: jsx(SvgCheck, { "data-testid": 'success-icon' }) })) : (jsx(SvgReloadIcon, { "data-testid": 'refresh-balances', className: `balance-header__refresh-icon ${isRefreshing ? 'balance-header__refresh-icon--spinning' : ''}`, onClick: handleRefresh, style: {
197
+ cursor: isRefreshing ? 'not-allowed' : 'pointer',
198
+ opacity: isRefreshing ? 0.5 : 1,
199
+ }, title: 'Refresh balances' }))] })] }));
160
200
  const toggleBalanceAccordion = useCallback(() => {
161
201
  if (!isLoadingTokenBalances) {
162
202
  setBalanceIsExpanded(!balanceIsExpanded);
@@ -9,19 +9,19 @@ require('@dynamic-labs/sdk-api-core');
9
9
  require('../../../../client/client.cjs');
10
10
  require('@dynamic-labs-sdk/client');
11
11
  require('../../../../config/ApiEndpoint.cjs');
12
- require('../../../../utils/constants/values.cjs');
13
- require('@dynamic-labs/utils');
14
- require('../../../../../../_virtual/_tslib.cjs');
15
- require('@dynamic-labs/multi-wallet');
16
- require('react-international-phone');
17
- require('../../../../utils/constants/colors.cjs');
18
12
  require('@dynamic-labs/iconic');
19
13
  require('@dynamic-labs/wallet-connector-core');
20
14
  require('react/jsx-runtime');
21
15
  require('../../../../context/ViewContext/ViewContext.cjs');
22
16
  require('../../../../shared/logger.cjs');
23
17
  require('@dynamic-labs/wallet-book');
18
+ require('@dynamic-labs/utils');
19
+ require('../../../../utils/constants/colors.cjs');
20
+ require('../../../../utils/constants/values.cjs');
24
21
  require('../../../../shared/consts/index.cjs');
22
+ require('../../../../../../_virtual/_tslib.cjs');
23
+ require('@dynamic-labs/multi-wallet');
24
+ require('react-international-phone');
25
25
  require('../../../../store/state/nonce/nonce.cjs');
26
26
  require('@dynamic-labs/locale');
27
27
  require('../../../../store/state/dynamicContextProps/dynamicContextProps.cjs');
@@ -5,19 +5,19 @@ import '@dynamic-labs/sdk-api-core';
5
5
  import '../../../../client/client.js';
6
6
  import '@dynamic-labs-sdk/client';
7
7
  import '../../../../config/ApiEndpoint.js';
8
- import '../../../../utils/constants/values.js';
9
- import '@dynamic-labs/utils';
10
- import '../../../../../../_virtual/_tslib.js';
11
- import '@dynamic-labs/multi-wallet';
12
- import 'react-international-phone';
13
- import '../../../../utils/constants/colors.js';
14
8
  import '@dynamic-labs/iconic';
15
9
  import '@dynamic-labs/wallet-connector-core';
16
10
  import 'react/jsx-runtime';
17
11
  import '../../../../context/ViewContext/ViewContext.js';
18
12
  import '../../../../shared/logger.js';
19
13
  import '@dynamic-labs/wallet-book';
14
+ import '@dynamic-labs/utils';
15
+ import '../../../../utils/constants/colors.js';
16
+ import '../../../../utils/constants/values.js';
20
17
  import '../../../../shared/consts/index.js';
18
+ import '../../../../../../_virtual/_tslib.js';
19
+ import '@dynamic-labs/multi-wallet';
20
+ import 'react-international-phone';
21
21
  import '../../../../store/state/nonce/nonce.js';
22
22
  import '@dynamic-labs/locale';
23
23
  import '../../../../store/state/dynamicContextProps/dynamicContextProps.js';
@@ -17,16 +17,16 @@ require('@dynamic-labs/sdk-api-core');
17
17
  require('../../../../../client/client.cjs');
18
18
  require('@dynamic-labs-sdk/client');
19
19
  require('../../../../../config/ApiEndpoint.cjs');
20
- require('../../../../../utils/constants/values.cjs');
21
- require('@dynamic-labs/utils');
22
- require('../../../../../../../_virtual/_tslib.cjs');
23
- require('@dynamic-labs/multi-wallet');
24
- require('react-international-phone');
25
- require('../../../../../utils/constants/colors.cjs');
26
20
  require('@dynamic-labs/wallet-connector-core');
27
21
  require('../../../../../shared/logger.cjs');
28
22
  require('@dynamic-labs/wallet-book');
23
+ require('@dynamic-labs/utils');
24
+ require('../../../../../utils/constants/colors.cjs');
25
+ require('../../../../../utils/constants/values.cjs');
29
26
  require('../../../../../shared/consts/index.cjs');
27
+ require('../../../../../../../_virtual/_tslib.cjs');
28
+ require('@dynamic-labs/multi-wallet');
29
+ require('react-international-phone');
30
30
  require('../../../../../store/state/nonce/nonce.cjs');
31
31
  require('@dynamic-labs/locale');
32
32
  require('../../../../../store/state/dynamicContextProps/dynamicContextProps.cjs');
@@ -13,16 +13,16 @@ import '@dynamic-labs/sdk-api-core';
13
13
  import '../../../../../client/client.js';
14
14
  import '@dynamic-labs-sdk/client';
15
15
  import '../../../../../config/ApiEndpoint.js';
16
- import '../../../../../utils/constants/values.js';
17
- import '@dynamic-labs/utils';
18
- import '../../../../../../../_virtual/_tslib.js';
19
- import '@dynamic-labs/multi-wallet';
20
- import 'react-international-phone';
21
- import '../../../../../utils/constants/colors.js';
22
16
  import '@dynamic-labs/wallet-connector-core';
23
17
  import '../../../../../shared/logger.js';
24
18
  import '@dynamic-labs/wallet-book';
19
+ import '@dynamic-labs/utils';
20
+ import '../../../../../utils/constants/colors.js';
21
+ import '../../../../../utils/constants/values.js';
25
22
  import '../../../../../shared/consts/index.js';
23
+ import '../../../../../../../_virtual/_tslib.js';
24
+ import '@dynamic-labs/multi-wallet';
25
+ import 'react-international-phone';
26
26
  import '../../../../../store/state/nonce/nonce.js';
27
27
  import '@dynamic-labs/locale';
28
28
  import '../../../../../store/state/dynamicContextProps/dynamicContextProps.js';
@@ -10,18 +10,18 @@ require('../../../../../../client/client.cjs');
10
10
  require('react');
11
11
  require('@dynamic-labs-sdk/client');
12
12
  require('../../../../../../config/ApiEndpoint.cjs');
13
- require('../../../../../../utils/constants/values.cjs');
14
- require('../../../../../../../../_virtual/_tslib.cjs');
15
- require('@dynamic-labs/multi-wallet');
16
- require('react-international-phone');
17
- require('../../../../../../utils/constants/colors.cjs');
18
13
  require('@dynamic-labs/iconic');
19
14
  require('@dynamic-labs/wallet-connector-core');
20
15
  require('react/jsx-runtime');
21
16
  require('../../../../../../context/ViewContext/ViewContext.cjs');
22
17
  require('../../../../../../shared/logger.cjs');
23
18
  require('@dynamic-labs/wallet-book');
19
+ require('../../../../../../utils/constants/colors.cjs');
20
+ require('../../../../../../utils/constants/values.cjs');
24
21
  require('../../../../../../shared/consts/index.cjs');
22
+ require('../../../../../../../../_virtual/_tslib.cjs');
23
+ require('@dynamic-labs/multi-wallet');
24
+ require('react-international-phone');
25
25
  require('../../../../../../store/state/nonce/nonce.cjs');
26
26
  require('@dynamic-labs/locale');
27
27
  require('../../../../../../store/state/dynamicContextProps/dynamicContextProps.cjs');
@@ -6,18 +6,18 @@ import '../../../../../../client/client.js';
6
6
  import 'react';
7
7
  import '@dynamic-labs-sdk/client';
8
8
  import '../../../../../../config/ApiEndpoint.js';
9
- import '../../../../../../utils/constants/values.js';
10
- import '../../../../../../../../_virtual/_tslib.js';
11
- import '@dynamic-labs/multi-wallet';
12
- import 'react-international-phone';
13
- import '../../../../../../utils/constants/colors.js';
14
9
  import '@dynamic-labs/iconic';
15
10
  import '@dynamic-labs/wallet-connector-core';
16
11
  import 'react/jsx-runtime';
17
12
  import '../../../../../../context/ViewContext/ViewContext.js';
18
13
  import '../../../../../../shared/logger.js';
19
14
  import '@dynamic-labs/wallet-book';
15
+ import '../../../../../../utils/constants/colors.js';
16
+ import '../../../../../../utils/constants/values.js';
20
17
  import '../../../../../../shared/consts/index.js';
18
+ import '../../../../../../../../_virtual/_tslib.js';
19
+ import '@dynamic-labs/multi-wallet';
20
+ import 'react-international-phone';
21
21
  import '../../../../../../store/state/nonce/nonce.js';
22
22
  import '@dynamic-labs/locale';
23
23
  import '../../../../../../store/state/dynamicContextProps/dynamicContextProps.js';
@@ -10,18 +10,18 @@ require('@dynamic-labs/sdk-api-core');
10
10
  require('../../../../../../client/client.cjs');
11
11
  require('@dynamic-labs-sdk/client');
12
12
  require('../../../../../../config/ApiEndpoint.cjs');
13
- require('../../../../../../utils/constants/values.cjs');
14
- require('@dynamic-labs/utils');
15
- require('@dynamic-labs/multi-wallet');
16
- require('react-international-phone');
17
- require('../../../../../../utils/constants/colors.cjs');
18
13
  require('@dynamic-labs/iconic');
19
14
  require('@dynamic-labs/wallet-connector-core');
20
15
  require('react/jsx-runtime');
21
16
  require('../../../../../../context/ViewContext/ViewContext.cjs');
22
17
  var logger = require('../../../../../../shared/logger.cjs');
23
18
  require('@dynamic-labs/wallet-book');
19
+ require('@dynamic-labs/utils');
20
+ require('../../../../../../utils/constants/colors.cjs');
21
+ require('../../../../../../utils/constants/values.cjs');
24
22
  require('../../../../../../shared/consts/index.cjs');
23
+ require('@dynamic-labs/multi-wallet');
24
+ require('react-international-phone');
25
25
  require('../../../../../../store/state/nonce/nonce.cjs');
26
26
  require('@dynamic-labs/locale');
27
27
  require('../../../../../../store/state/dynamicContextProps/dynamicContextProps.cjs');
@@ -6,18 +6,18 @@ import '@dynamic-labs/sdk-api-core';
6
6
  import '../../../../../../client/client.js';
7
7
  import '@dynamic-labs-sdk/client';
8
8
  import '../../../../../../config/ApiEndpoint.js';
9
- import '../../../../../../utils/constants/values.js';
10
- import '@dynamic-labs/utils';
11
- import '@dynamic-labs/multi-wallet';
12
- import 'react-international-phone';
13
- import '../../../../../../utils/constants/colors.js';
14
9
  import '@dynamic-labs/iconic';
15
10
  import '@dynamic-labs/wallet-connector-core';
16
11
  import 'react/jsx-runtime';
17
12
  import '../../../../../../context/ViewContext/ViewContext.js';
18
13
  import { logger } from '../../../../../../shared/logger.js';
19
14
  import '@dynamic-labs/wallet-book';
15
+ import '@dynamic-labs/utils';
16
+ import '../../../../../../utils/constants/colors.js';
17
+ import '../../../../../../utils/constants/values.js';
20
18
  import '../../../../../../shared/consts/index.js';
19
+ import '@dynamic-labs/multi-wallet';
20
+ import 'react-international-phone';
21
21
  import '../../../../../../store/state/nonce/nonce.js';
22
22
  import '@dynamic-labs/locale';
23
23
  import '../../../../../../store/state/dynamicContextProps/dynamicContextProps.js';
@@ -22,16 +22,16 @@ require('@dynamic-labs/sdk-api-core');
22
22
  require('../../../../client/client.cjs');
23
23
  require('@dynamic-labs-sdk/client');
24
24
  require('../../../../config/ApiEndpoint.cjs');
25
- require('../../../../utils/constants/values.cjs');
26
- require('@dynamic-labs/utils');
27
- require('../../../../../../_virtual/_tslib.cjs');
28
- require('@dynamic-labs/multi-wallet');
29
- require('react-international-phone');
30
- require('../../../../utils/constants/colors.cjs');
31
25
  require('@dynamic-labs/wallet-connector-core');
32
26
  require('../../../../shared/logger.cjs');
33
27
  require('@dynamic-labs/wallet-book');
28
+ require('@dynamic-labs/utils');
29
+ require('../../../../utils/constants/colors.cjs');
30
+ require('../../../../utils/constants/values.cjs');
34
31
  require('../../../../shared/consts/index.cjs');
32
+ require('../../../../../../_virtual/_tslib.cjs');
33
+ require('@dynamic-labs/multi-wallet');
34
+ require('react-international-phone');
35
35
  require('../../../../store/state/nonce/nonce.cjs');
36
36
  require('@dynamic-labs/locale');
37
37
  require('../../../../store/state/dynamicContextProps/dynamicContextProps.cjs');
@@ -18,16 +18,16 @@ import '@dynamic-labs/sdk-api-core';
18
18
  import '../../../../client/client.js';
19
19
  import '@dynamic-labs-sdk/client';
20
20
  import '../../../../config/ApiEndpoint.js';
21
- import '../../../../utils/constants/values.js';
22
- import '@dynamic-labs/utils';
23
- import '../../../../../../_virtual/_tslib.js';
24
- import '@dynamic-labs/multi-wallet';
25
- import 'react-international-phone';
26
- import '../../../../utils/constants/colors.js';
27
21
  import '@dynamic-labs/wallet-connector-core';
28
22
  import '../../../../shared/logger.js';
29
23
  import '@dynamic-labs/wallet-book';
24
+ import '@dynamic-labs/utils';
25
+ import '../../../../utils/constants/colors.js';
26
+ import '../../../../utils/constants/values.js';
30
27
  import '../../../../shared/consts/index.js';
28
+ import '../../../../../../_virtual/_tslib.js';
29
+ import '@dynamic-labs/multi-wallet';
30
+ import 'react-international-phone';
31
31
  import '../../../../store/state/nonce/nonce.js';
32
32
  import '@dynamic-labs/locale';
33
33
  import '../../../../store/state/dynamicContextProps/dynamicContextProps.js';
@@ -13,11 +13,6 @@ require('@dynamic-labs-sdk/client/core');
13
13
  require('../../../../client/client.cjs');
14
14
  require('@dynamic-labs-sdk/client');
15
15
  require('../../../../config/ApiEndpoint.cjs');
16
- require('../../../../utils/constants/values.cjs');
17
- require('@dynamic-labs/utils');
18
- require('@dynamic-labs/multi-wallet');
19
- require('react-international-phone');
20
- require('../../../../utils/constants/colors.cjs');
21
16
  require('@dynamic-labs/iconic');
22
17
  var check = require('../../../../shared/assets/check.cjs');
23
18
  var close = require('../../../../shared/assets/close.cjs');
@@ -27,7 +22,12 @@ var backupWaas = require('../../../../shared/assets/backup-waas.cjs');
27
22
  var googleDrive = require('../../../../shared/assets/google-drive.cjs');
28
23
  require('../../../../shared/logger.cjs');
29
24
  require('@dynamic-labs/wallet-book');
25
+ require('@dynamic-labs/utils');
26
+ require('../../../../utils/constants/colors.cjs');
27
+ require('../../../../utils/constants/values.cjs');
30
28
  require('../../../../shared/consts/index.cjs');
29
+ require('@dynamic-labs/multi-wallet');
30
+ require('react-international-phone');
31
31
  require('../../../../store/state/nonce/nonce.cjs');
32
32
  require('@dynamic-labs/locale');
33
33
  require('../../../../store/state/dynamicContextProps/dynamicContextProps.cjs');
@@ -9,11 +9,6 @@ import '@dynamic-labs-sdk/client/core';
9
9
  import '../../../../client/client.js';
10
10
  import '@dynamic-labs-sdk/client';
11
11
  import '../../../../config/ApiEndpoint.js';
12
- import '../../../../utils/constants/values.js';
13
- import '@dynamic-labs/utils';
14
- import '@dynamic-labs/multi-wallet';
15
- import 'react-international-phone';
16
- import '../../../../utils/constants/colors.js';
17
12
  import '@dynamic-labs/iconic';
18
13
  import { ReactComponent as SvgCheck } from '../../../../shared/assets/check.js';
19
14
  import { ReactComponent as SvgClose } from '../../../../shared/assets/close.js';
@@ -23,7 +18,12 @@ import { ReactComponent as SvgBackupWaas } from '../../../../shared/assets/backu
23
18
  import { ReactComponent as SvgGoogleDrive } from '../../../../shared/assets/google-drive.js';
24
19
  import '../../../../shared/logger.js';
25
20
  import '@dynamic-labs/wallet-book';
21
+ import '@dynamic-labs/utils';
22
+ import '../../../../utils/constants/colors.js';
23
+ import '../../../../utils/constants/values.js';
26
24
  import '../../../../shared/consts/index.js';
25
+ import '@dynamic-labs/multi-wallet';
26
+ import 'react-international-phone';
27
27
  import '../../../../store/state/nonce/nonce.js';
28
28
  import '@dynamic-labs/locale';
29
29
  import '../../../../store/state/dynamicContextProps/dynamicContextProps.js';