@dynamic-labs/sdk-react-core 4.0.0 → 4.0.1

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 CHANGED
@@ -1,4 +1,17 @@
1
1
 
2
+ ### [4.0.1](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0...v4.0.1) (2025-01-10)
3
+
4
+
5
+ ### Features
6
+
7
+ * expose getMinAuthToken helper ([#7769](https://github.com/dynamic-labs/dynamic-auth/issues/7769)) ([2967e2f](https://github.com/dynamic-labs/dynamic-auth/commit/2967e2f5e0266b8fd7c96958d4502b0faff9d78b))
8
+
9
+
10
+ ### Bug Fixes
11
+
12
+ * send balance view should not prompt confirmation ui ([#7663](https://github.com/dynamic-labs/dynamic-auth/issues/7663)) ([02d847b](https://github.com/dynamic-labs/dynamic-auth/commit/02d847b9f5f300c6d3a24778c0ddda8b46a01766))
13
+ * upgrade zerodev multichain package ([#7773](https://github.com/dynamic-labs/dynamic-auth/issues/7773)) ([cfe1ddc](https://github.com/dynamic-labs/dynamic-auth/commit/cfe1ddc1a5730b3f9624d6e0129ba88f55d54982))
14
+
2
15
  ## [4.0.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.52...v4.0.0) (2025-01-09)
3
16
 
4
17
 
package/package.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var version = "4.0.0";
6
+ var version = "4.0.1";
7
7
  var dependencies = {
8
8
  "@dynamic-labs/sdk-api-core": "0.0.578",
9
9
  "@hcaptcha/react-hcaptcha": "1.4.4",
package/package.js CHANGED
@@ -1,5 +1,5 @@
1
1
  'use client'
2
- var version = "4.0.0";
2
+ var version = "4.0.1";
3
3
  var dependencies = {
4
4
  "@dynamic-labs/sdk-api-core": "0.0.578",
5
5
  "@hcaptcha/react-hcaptcha": "1.4.4",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/sdk-react-core",
3
- "version": "4.0.0",
3
+ "version": "4.0.1",
4
4
  "dependencies": {
5
5
  "@dynamic-labs/sdk-api-core": "0.0.578",
6
6
  "@hcaptcha/react-hcaptcha": "1.4.4",
@@ -13,17 +13,17 @@
13
13
  "react-i18next": "13.5.0",
14
14
  "yup": "0.32.11",
15
15
  "react-international-phone": "4.2.5",
16
- "@dynamic-labs/assert-package-version": "4.0.0",
17
- "@dynamic-labs/ethereum-aa": "4.0.0",
18
- "@dynamic-labs/iconic": "4.0.0",
19
- "@dynamic-labs/logger": "4.0.0",
20
- "@dynamic-labs/multi-wallet": "4.0.0",
21
- "@dynamic-labs/rpc-providers": "4.0.0",
22
- "@dynamic-labs/store": "4.0.0",
23
- "@dynamic-labs/types": "4.0.0",
24
- "@dynamic-labs/utils": "4.0.0",
25
- "@dynamic-labs/wallet-book": "4.0.0",
26
- "@dynamic-labs/wallet-connector-core": "4.0.0",
16
+ "@dynamic-labs/assert-package-version": "4.0.1",
17
+ "@dynamic-labs/ethereum-aa": "4.0.1",
18
+ "@dynamic-labs/iconic": "4.0.1",
19
+ "@dynamic-labs/logger": "4.0.1",
20
+ "@dynamic-labs/multi-wallet": "4.0.1",
21
+ "@dynamic-labs/rpc-providers": "4.0.1",
22
+ "@dynamic-labs/store": "4.0.1",
23
+ "@dynamic-labs/types": "4.0.1",
24
+ "@dynamic-labs/utils": "4.0.1",
25
+ "@dynamic-labs/wallet-book": "4.0.1",
26
+ "@dynamic-labs/wallet-connector-core": "4.0.1",
27
27
  "bs58": "5.0.0",
28
28
  "eventemitter3": "5.0.1"
29
29
  },
package/src/index.cjs CHANGED
@@ -10,6 +10,7 @@ require('./lib/shared/utils/functions/getInitialUrl/getInitialUrl.cjs');
10
10
  var version = require('./version.cjs');
11
11
  var data = require('./lib/views/WalletList/data.cjs');
12
12
  var getAuthToken = require('./lib/utils/functions/getAuthToken/getAuthToken.cjs');
13
+ var getMinAuthToken = require('./lib/utils/functions/getMinAuthToken/getMinAuthToken.cjs');
13
14
  var DynamicContext = require('./lib/context/DynamicContext/DynamicContext.cjs');
14
15
  var ErrorBoundary = require('./lib/context/ErrorBoundary/ErrorBoundary.cjs');
15
16
  var ErrorBoundaryExclude = require('./lib/context/ErrorBoundary/ErrorBoundaryExclude.cjs');
@@ -179,6 +180,7 @@ assertPackageVersion.assertPackageVersion('@dynamic-labs/sdk-react-core', _packa
179
180
  exports.VERSION = version.VERSION;
180
181
  exports.getWallets = data.getWallets;
181
182
  exports.getAuthToken = getAuthToken.getAuthToken;
183
+ exports.getMinAuthToken = getMinAuthToken.getMinAuthToken;
182
184
  exports.DynamicContext = DynamicContext.DynamicContext;
183
185
  exports.DynamicContextProvider = DynamicContext.DynamicContextProvider;
184
186
  exports.ErrorBoundary = ErrorBoundary.ErrorBoundary;
package/src/index.d.ts CHANGED
@@ -3,6 +3,7 @@ import './lib/shared/utils/functions/getInitialUrl';
3
3
  export { VERSION } from './version';
4
4
  export { getWallets } from './lib/views/WalletList/data';
5
5
  export { getAuthToken } from './lib/utils/functions/getAuthToken';
6
+ export { getMinAuthToken } from './lib/utils/functions/getMinAuthToken';
6
7
  export { DynamicContextProvider, DynamicContext, } from './lib/context/DynamicContext';
7
8
  export { ErrorBoundary, ErrorBoundaryInclude, ErrorBoundaryExclude, } from './lib/context/ErrorBoundary';
8
9
  export type { DynamicContextProps } from './lib/context/DynamicContext';
package/src/index.js CHANGED
@@ -6,6 +6,7 @@ import './lib/shared/utils/functions/getInitialUrl/getInitialUrl.js';
6
6
  export { VERSION } from './version.js';
7
7
  export { getWallets } from './lib/views/WalletList/data.js';
8
8
  export { getAuthToken } from './lib/utils/functions/getAuthToken/getAuthToken.js';
9
+ export { getMinAuthToken } from './lib/utils/functions/getMinAuthToken/getMinAuthToken.js';
9
10
  export { DynamicContext, DynamicContextProvider } from './lib/context/DynamicContext/DynamicContext.js';
10
11
  export { ErrorBoundary } from './lib/context/ErrorBoundary/ErrorBoundary.js';
11
12
  export { ErrorBoundaryExclude } from './lib/context/ErrorBoundary/ErrorBoundaryExclude.js';
@@ -97,7 +97,7 @@ require('../../store/state/tokenBalances.cjs');
97
97
  require('../../shared/utils/functions/getInitialUrl/getInitialUrl.cjs');
98
98
  var useInternalDynamicContext = require('../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.cjs');
99
99
 
100
- const OldTransactionCard = ({ transaction, currentToken, currencySymbol, valueRounded, transactionValue, isGasSponsored, gasFiatValue, totalGasFiatValue, currency, total, t, walletKey, }) => {
100
+ const SendBalanceTransactionCard = ({ transaction, currentToken, currencySymbol, valueRounded, transactionValue, isGasSponsored, gasFiatValue, totalGasFiatValue, currency, total, t, walletKey, }) => {
101
101
  const { primaryWallet, projectSettings, overrides } = useInternalDynamicContext.useInternalDynamicContext();
102
102
  const networkInfo = useNetworkConfigurationsFromProjectSettings.useNetworkConfigurationsFromProjectSettings({
103
103
  evmNetworksOverrides: overrides === null || overrides === void 0 ? void 0 : overrides.evmNetworks,
@@ -124,4 +124,4 @@ const OldTransactionCard = ({ transaction, currentToken, currencySymbol, valueRo
124
124
  return (jsxRuntime.jsxs("div", { className: 'transaction-card-container', children: [renderTransferDetails(), renderTransactionDetails()] }));
125
125
  };
126
126
 
127
- exports.OldTransactionCard = OldTransactionCard;
127
+ exports.SendBalanceTransactionCard = SendBalanceTransactionCard;
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import { TokenBalance } from '@dynamic-labs/sdk-api-core';
3
3
  import { IUITransaction } from '@dynamic-labs/types';
4
- export declare const OldTransactionCard: ({ transaction, currentToken, currencySymbol, valueRounded, transactionValue, isGasSponsored, gasFiatValue, totalGasFiatValue, currency, total, t, walletKey, }: {
4
+ export declare const SendBalanceTransactionCard: ({ transaction, currentToken, currencySymbol, valueRounded, transactionValue, isGasSponsored, gasFiatValue, totalGasFiatValue, currency, total, t, walletKey, }: {
5
5
  transaction: IUITransaction;
6
6
  currentToken: TokenBalance | undefined;
7
7
  currencySymbol: string;
@@ -93,7 +93,7 @@ import '../../store/state/tokenBalances.js';
93
93
  import '../../shared/utils/functions/getInitialUrl/getInitialUrl.js';
94
94
  import { useInternalDynamicContext } from '../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.js';
95
95
 
96
- const OldTransactionCard = ({ transaction, currentToken, currencySymbol, valueRounded, transactionValue, isGasSponsored, gasFiatValue, totalGasFiatValue, currency, total, t, walletKey, }) => {
96
+ const SendBalanceTransactionCard = ({ transaction, currentToken, currencySymbol, valueRounded, transactionValue, isGasSponsored, gasFiatValue, totalGasFiatValue, currency, total, t, walletKey, }) => {
97
97
  const { primaryWallet, projectSettings, overrides } = useInternalDynamicContext();
98
98
  const networkInfo = useNetworkConfigurationsFromProjectSettings({
99
99
  evmNetworksOverrides: overrides === null || overrides === void 0 ? void 0 : overrides.evmNetworks,
@@ -120,4 +120,4 @@ const OldTransactionCard = ({ transaction, currentToken, currencySymbol, valueRo
120
120
  return (jsxs("div", { className: 'transaction-card-container', children: [renderTransferDetails(), renderTransactionDetails()] }));
121
121
  };
122
122
 
123
- export { OldTransactionCard };
123
+ export { SendBalanceTransactionCard };
@@ -96,7 +96,7 @@ var PasskeyContext = require('../../context/PasskeyContext/PasskeyContext.cjs');
96
96
  var sendBalances = require('../../store/state/sendBalances.cjs');
97
97
  var utils = require('./utils.cjs');
98
98
  var TransactionCard = require('../TransactionCard/TransactionCard.cjs');
99
- var OldTransactionCard = require('../TransactionCard/OldTransactionCard.cjs');
99
+ var SendBalanceTransactionCard = require('../TransactionCard/SendBalanceTransactionCard.cjs');
100
100
  require('../OverlayCardBase/OverlayCardTarget/OverlayCardTarget.cjs');
101
101
  require('../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.cjs');
102
102
  require('../../views/TransactionConfirmationView/TransactionConfirmationView.cjs');
@@ -129,7 +129,7 @@ const TransactionConfirmationPageLayout = ({ onClickClose, isLoading, onClickBac
129
129
  const backButton = onClickBack && (jsxRuntime.jsx(IconButton.IconButton, { type: 'button', onClick: onClickBack, "data-testid": 'back-button', children: jsxRuntime.jsx(arrowLeft.ReactComponent, {}) }));
130
130
  const gasFiatValue = fiatUtils.getGasFiatValue(currentToken, transaction, nativePrice);
131
131
  const totalGasFiatValue = fiatUtils.getTotalFiatCost(currentToken, transaction, nativePrice, transactionValue);
132
- return hideModal ? null : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(ModalHeader.ModalHeader, { trailing: closeButton, leading: backButton, alignContent: 'bottom', children: jsxRuntime.jsx("div", { className: 'send-balance-page-layout__header-content', children: jsxRuntime.jsx(Typography.Typography, { variant: 'title', color: 'primary', copykey: 'dyn_send_transaction.data.confirmation_tx', children: t('dyn_send_transaction.data.confirmation_tx') }) }) }), jsxRuntime.jsx("div", { className: 'transaction-confirmation__banner', children: jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', color: 'primary', copykey: 'dyn_send_transaction.data.banner', children: t('dyn_send_transaction.data.banner') }) }), jsxRuntime.jsx(PasskeyCreatedSuccessBanner.PasskeyCreatedSuccessBanner, {}), jsxRuntime.jsxs("div", { className: 'transaction-confirmation__body', children: [jsxRuntime.jsxs("div", { className: 'transaction-confirmation__content', children: [!sendBalanceTransaction ? (jsxRuntime.jsx(TransactionCard.TransactionCard, { transaction: transaction, isGasSponsored: isGasSponsored, isAATransaction: walletConnector ? ethereumAa.isZeroDevConnector(walletConnector) : false, simulationResult: simulationResult, recipient: recipient })) : (jsxRuntime.jsx(OldTransactionCard.OldTransactionCard, { transaction: transaction, currentToken: currentToken, currencySymbol: currencySymbol, valueRounded: (_a = utils.getValueRounded(Boolean(isNativeToken), transaction)) === null || _a === void 0 ? void 0 : _a.toString(), transactionValue: transactionValue, isGasSponsored: isGasSponsored, gasFiatValue: gasFiatValue || '0', totalGasFiatValue: totalGasFiatValue || '0', currency: currency, total: total, t: t, walletKey: walletKey })), children && (jsxRuntime.jsx("div", { className: 'transaction-confirmation__rows', children: children }))] }), jsxRuntime.jsx(AnimatePresence.AnimatePresence, { animationComponent: jsxRuntime.jsx(VerticalDrawerTransition.VerticalDrawerTransition, {}), children: alert && (jsxRuntime.jsx("div", { className: 'transaction-confirmation__warning', children: alert })) }), jsxRuntime.jsxs("div", { className: 'transaction-confirmation__actions', children: [(onClickBack || onClickClose) && (jsxRuntime.jsx(TypographyButton.TypographyButton, { buttonVariant: 'primary', buttonPadding: 'small', onClick: onClickBack || onClickClose, expanded: true, disabled: isLoading, copykey: 'dyn_send_transaction.confirmation.cancel_button', children: t('dyn_send_transaction.confirmation.cancel_button') })), jsxRuntime.jsx(TypographyButton.TypographyButton, { buttonVariant: 'brand-primary', buttonPadding: 'small', onClick: handleSubmitWithChecks, expanded: true, loading: isLoading, disabled: disableSendButton, copykey: 'dyn_send_transaction.confirmation.send', startSlot:
132
+ return hideModal ? null : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(ModalHeader.ModalHeader, { trailing: closeButton, leading: backButton, alignContent: 'bottom', children: jsxRuntime.jsx("div", { className: 'send-balance-page-layout__header-content', children: jsxRuntime.jsx(Typography.Typography, { variant: 'title', color: 'primary', copykey: 'dyn_send_transaction.data.confirmation_tx', children: t('dyn_send_transaction.data.confirmation_tx') }) }) }), jsxRuntime.jsx("div", { className: 'transaction-confirmation__banner', children: jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', color: 'primary', copykey: 'dyn_send_transaction.data.banner', children: t('dyn_send_transaction.data.banner') }) }), jsxRuntime.jsx(PasskeyCreatedSuccessBanner.PasskeyCreatedSuccessBanner, {}), jsxRuntime.jsxs("div", { className: 'transaction-confirmation__body', children: [jsxRuntime.jsxs("div", { className: 'transaction-confirmation__content', children: [!sendBalanceTransaction ? (jsxRuntime.jsx(TransactionCard.TransactionCard, { transaction: transaction, isGasSponsored: isGasSponsored, isAATransaction: walletConnector ? ethereumAa.isZeroDevConnector(walletConnector) : false, simulationResult: simulationResult, recipient: recipient })) : (jsxRuntime.jsx(SendBalanceTransactionCard.SendBalanceTransactionCard, { transaction: transaction, currentToken: currentToken, currencySymbol: currencySymbol, valueRounded: (_a = utils.getValueRounded(Boolean(isNativeToken), transaction)) === null || _a === void 0 ? void 0 : _a.toString(), transactionValue: transactionValue, isGasSponsored: isGasSponsored, gasFiatValue: gasFiatValue || '0', totalGasFiatValue: totalGasFiatValue || '0', currency: currency, total: total, t: t, walletKey: walletKey })), children && (jsxRuntime.jsx("div", { className: 'transaction-confirmation__rows', children: children }))] }), jsxRuntime.jsx(AnimatePresence.AnimatePresence, { animationComponent: jsxRuntime.jsx(VerticalDrawerTransition.VerticalDrawerTransition, {}), children: alert && (jsxRuntime.jsx("div", { className: 'transaction-confirmation__warning', children: alert })) }), jsxRuntime.jsxs("div", { className: 'transaction-confirmation__actions', children: [(onClickBack || onClickClose) && (jsxRuntime.jsx(TypographyButton.TypographyButton, { buttonVariant: 'primary', buttonPadding: 'small', onClick: onClickBack || onClickClose, expanded: true, disabled: isLoading, copykey: 'dyn_send_transaction.confirmation.cancel_button', children: t('dyn_send_transaction.confirmation.cancel_button') })), jsxRuntime.jsx(TypographyButton.TypographyButton, { buttonVariant: 'brand-primary', buttonPadding: 'small', onClick: handleSubmitWithChecks, expanded: true, loading: isLoading, disabled: disableSendButton, copykey: 'dyn_send_transaction.confirmation.send', startSlot:
133
133
  // eslint-disable-next-line react/jsx-wrap-multilines
134
134
  jsxRuntime.jsx(Icon.Icon, { size: 'small', color: 'text-secondary', children: jsxRuntime.jsx(send.ReactComponent, {}) }), dataTestId: 'transaction-confirmation-send', children: t('dyn_send_transaction.confirmation.send') })] }), displayPoweredByDynamicFooter && (jsxRuntime.jsx(PoweredByDynamic.PoweredByDynamic, { classNameRoot: 'transaction-confirmation__footer' }))] })] }));
135
135
  };
@@ -92,7 +92,7 @@ import { usePasskeyContext } from '../../context/PasskeyContext/PasskeyContext.j
92
92
  import { useSendBalanceState } from '../../store/state/sendBalances.js';
93
93
  import { useCurrencySymbol, useHandleRecovery, getValueRounded, useHandleSubmitWithChecks } from './utils.js';
94
94
  import { TransactionCard } from '../TransactionCard/TransactionCard.js';
95
- import { OldTransactionCard } from '../TransactionCard/OldTransactionCard.js';
95
+ import { SendBalanceTransactionCard } from '../TransactionCard/SendBalanceTransactionCard.js';
96
96
  import '../OverlayCardBase/OverlayCardTarget/OverlayCardTarget.js';
97
97
  import '../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.js';
98
98
  import '../../views/TransactionConfirmationView/TransactionConfirmationView.js';
@@ -125,7 +125,7 @@ const TransactionConfirmationPageLayout = ({ onClickClose, isLoading, onClickBac
125
125
  const backButton = onClickBack && (jsx(IconButton, { type: 'button', onClick: onClickBack, "data-testid": 'back-button', children: jsx(SvgArrowLeft, {}) }));
126
126
  const gasFiatValue = getGasFiatValue(currentToken, transaction, nativePrice);
127
127
  const totalGasFiatValue = getTotalFiatCost(currentToken, transaction, nativePrice, transactionValue);
128
- return hideModal ? null : (jsxs(Fragment, { children: [jsx(ModalHeader, { trailing: closeButton, leading: backButton, alignContent: 'bottom', children: jsx("div", { className: 'send-balance-page-layout__header-content', children: jsx(Typography, { variant: 'title', color: 'primary', copykey: 'dyn_send_transaction.data.confirmation_tx', children: t('dyn_send_transaction.data.confirmation_tx') }) }) }), jsx("div", { className: 'transaction-confirmation__banner', children: jsx(Typography, { variant: 'body_normal', color: 'primary', copykey: 'dyn_send_transaction.data.banner', children: t('dyn_send_transaction.data.banner') }) }), jsx(PasskeyCreatedSuccessBanner, {}), jsxs("div", { className: 'transaction-confirmation__body', children: [jsxs("div", { className: 'transaction-confirmation__content', children: [!sendBalanceTransaction ? (jsx(TransactionCard, { transaction: transaction, isGasSponsored: isGasSponsored, isAATransaction: walletConnector ? isZeroDevConnector(walletConnector) : false, simulationResult: simulationResult, recipient: recipient })) : (jsx(OldTransactionCard, { transaction: transaction, currentToken: currentToken, currencySymbol: currencySymbol, valueRounded: (_a = getValueRounded(Boolean(isNativeToken), transaction)) === null || _a === void 0 ? void 0 : _a.toString(), transactionValue: transactionValue, isGasSponsored: isGasSponsored, gasFiatValue: gasFiatValue || '0', totalGasFiatValue: totalGasFiatValue || '0', currency: currency, total: total, t: t, walletKey: walletKey })), children && (jsx("div", { className: 'transaction-confirmation__rows', children: children }))] }), jsx(AnimatePresence, { animationComponent: jsx(VerticalDrawerTransition, {}), children: alert && (jsx("div", { className: 'transaction-confirmation__warning', children: alert })) }), jsxs("div", { className: 'transaction-confirmation__actions', children: [(onClickBack || onClickClose) && (jsx(TypographyButton, { buttonVariant: 'primary', buttonPadding: 'small', onClick: onClickBack || onClickClose, expanded: true, disabled: isLoading, copykey: 'dyn_send_transaction.confirmation.cancel_button', children: t('dyn_send_transaction.confirmation.cancel_button') })), jsx(TypographyButton, { buttonVariant: 'brand-primary', buttonPadding: 'small', onClick: handleSubmitWithChecks, expanded: true, loading: isLoading, disabled: disableSendButton, copykey: 'dyn_send_transaction.confirmation.send', startSlot:
128
+ return hideModal ? null : (jsxs(Fragment, { children: [jsx(ModalHeader, { trailing: closeButton, leading: backButton, alignContent: 'bottom', children: jsx("div", { className: 'send-balance-page-layout__header-content', children: jsx(Typography, { variant: 'title', color: 'primary', copykey: 'dyn_send_transaction.data.confirmation_tx', children: t('dyn_send_transaction.data.confirmation_tx') }) }) }), jsx("div", { className: 'transaction-confirmation__banner', children: jsx(Typography, { variant: 'body_normal', color: 'primary', copykey: 'dyn_send_transaction.data.banner', children: t('dyn_send_transaction.data.banner') }) }), jsx(PasskeyCreatedSuccessBanner, {}), jsxs("div", { className: 'transaction-confirmation__body', children: [jsxs("div", { className: 'transaction-confirmation__content', children: [!sendBalanceTransaction ? (jsx(TransactionCard, { transaction: transaction, isGasSponsored: isGasSponsored, isAATransaction: walletConnector ? isZeroDevConnector(walletConnector) : false, simulationResult: simulationResult, recipient: recipient })) : (jsx(SendBalanceTransactionCard, { transaction: transaction, currentToken: currentToken, currencySymbol: currencySymbol, valueRounded: (_a = getValueRounded(Boolean(isNativeToken), transaction)) === null || _a === void 0 ? void 0 : _a.toString(), transactionValue: transactionValue, isGasSponsored: isGasSponsored, gasFiatValue: gasFiatValue || '0', totalGasFiatValue: totalGasFiatValue || '0', currency: currency, total: total, t: t, walletKey: walletKey })), children && (jsx("div", { className: 'transaction-confirmation__rows', children: children }))] }), jsx(AnimatePresence, { animationComponent: jsx(VerticalDrawerTransition, {}), children: alert && (jsx("div", { className: 'transaction-confirmation__warning', children: alert })) }), jsxs("div", { className: 'transaction-confirmation__actions', children: [(onClickBack || onClickClose) && (jsx(TypographyButton, { buttonVariant: 'primary', buttonPadding: 'small', onClick: onClickBack || onClickClose, expanded: true, disabled: isLoading, copykey: 'dyn_send_transaction.confirmation.cancel_button', children: t('dyn_send_transaction.confirmation.cancel_button') })), jsx(TypographyButton, { buttonVariant: 'brand-primary', buttonPadding: 'small', onClick: handleSubmitWithChecks, expanded: true, loading: isLoading, disabled: disableSendButton, copykey: 'dyn_send_transaction.confirmation.send', startSlot:
129
129
  // eslint-disable-next-line react/jsx-wrap-multilines
130
130
  jsx(Icon, { size: 'small', color: 'text-secondary', children: jsx(SvgSend, {}) }), dataTestId: 'transaction-confirmation-send', children: t('dyn_send_transaction.confirmation.send') })] }), displayPoweredByDynamicFooter && (jsx(PoweredByDynamic, { classNameRoot: 'transaction-confirmation__footer' }))] })] }));
131
131
  };
@@ -110,7 +110,7 @@ const getTransactionValue = (transaction, isNativeToken) => {
110
110
  };
111
111
  const SendBalanceView = ({ initialRecipientAddress = '', initialValue, onClickBack, onClickClose, onError, onSuccess, onDone, displayPoweredByDynamicFooter = false, }) => {
112
112
  const [stage, setStage] = React.useState('form');
113
- const { primaryWallet } = useInternalDynamicContext.useInternalDynamicContext();
113
+ const { primaryWallet, walletUiUtils } = useInternalDynamicContext.useInternalDynamicContext();
114
114
  const { t } = reactI18next.useTranslation();
115
115
  const [isNativeToken, setIsNativeToken] = React.useState(false);
116
116
  const [currentToken, setCurrentToken] = React.useState(undefined);
@@ -202,7 +202,10 @@ const SendBalanceView = ({ initialRecipientAddress = '', initialValue, onClickBa
202
202
  const buildFormStage = () => (jsxRuntime.jsx(SendBalancePageLayout.SendBalancePageLayout, { transaction: transaction, onClickBack: onClickBack, networkName: networkData.vanityName || networkData.name, networkIcon: currencyIcon, networkCurrencyDecimals: networkData.nativeCurrency.symbol === 'SOL'
203
203
  ? 9
204
204
  : networkData.nativeCurrency.decimals, walletAddress: shortenWalletAddress.shortenWalletAddress(currentToken === null || currentToken === void 0 ? void 0 : currentToken.address, 3, 3), walletKey: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.key, onClickClose: onClickClose, displayPoweredByDynamicFooter: displayPoweredByDynamicFooter, onSubmit: () => setStage('confirmation'), tokenBalances: tokenBalances !== null && tokenBalances !== void 0 ? tokenBalances : (currentToken && [currentToken]), currentToken: currentToken, setCurrentToken: setCurrentToken, isLoading: isLoading, isNativeToken: isNativeToken }));
205
- const buildTransactionStage = () => (jsxRuntime.jsx(TransactionConfirmationView.TransactionConfirmationView, { walletConnector: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, transaction: transaction, mutation: () => transaction.submit(), copykey: 'dyn_send_transaction.confirmation.title', title: t('dyn_send_transaction.confirmation.title'), onClickBack: () => setStage('form'), onError: onError, displayPoweredByDynamicFooter: displayPoweredByDynamicFooter, onSuccess: (txHash) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
205
+ const buildTransactionStage = () => (jsxRuntime.jsx(TransactionConfirmationView.TransactionConfirmationView, { walletConnector: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, transaction: transaction, mutation: () => {
206
+ walletUiUtils.disabledConfirmationOnce();
207
+ return transaction.submit();
208
+ }, copykey: 'dyn_send_transaction.confirmation.title', title: t('dyn_send_transaction.confirmation.title'), onClickBack: () => setStage('form'), onError: onError, displayPoweredByDynamicFooter: displayPoweredByDynamicFooter, onSuccess: (txHash) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
206
209
  if (!txHash)
207
210
  return;
208
211
  onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(txHash);
@@ -106,7 +106,7 @@ const getTransactionValue = (transaction, isNativeToken) => {
106
106
  };
107
107
  const SendBalanceView = ({ initialRecipientAddress = '', initialValue, onClickBack, onClickClose, onError, onSuccess, onDone, displayPoweredByDynamicFooter = false, }) => {
108
108
  const [stage, setStage] = useState('form');
109
- const { primaryWallet } = useInternalDynamicContext();
109
+ const { primaryWallet, walletUiUtils } = useInternalDynamicContext();
110
110
  const { t } = useTranslation();
111
111
  const [isNativeToken, setIsNativeToken] = useState(false);
112
112
  const [currentToken, setCurrentToken] = useState(undefined);
@@ -198,7 +198,10 @@ const SendBalanceView = ({ initialRecipientAddress = '', initialValue, onClickBa
198
198
  const buildFormStage = () => (jsx(SendBalancePageLayout, { transaction: transaction, onClickBack: onClickBack, networkName: networkData.vanityName || networkData.name, networkIcon: currencyIcon, networkCurrencyDecimals: networkData.nativeCurrency.symbol === 'SOL'
199
199
  ? 9
200
200
  : networkData.nativeCurrency.decimals, walletAddress: shortenWalletAddress(currentToken === null || currentToken === void 0 ? void 0 : currentToken.address, 3, 3), walletKey: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.key, onClickClose: onClickClose, displayPoweredByDynamicFooter: displayPoweredByDynamicFooter, onSubmit: () => setStage('confirmation'), tokenBalances: tokenBalances !== null && tokenBalances !== void 0 ? tokenBalances : (currentToken && [currentToken]), currentToken: currentToken, setCurrentToken: setCurrentToken, isLoading: isLoading, isNativeToken: isNativeToken }));
201
- const buildTransactionStage = () => (jsx(TransactionConfirmationView, { walletConnector: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, transaction: transaction, mutation: () => transaction.submit(), copykey: 'dyn_send_transaction.confirmation.title', title: t('dyn_send_transaction.confirmation.title'), onClickBack: () => setStage('form'), onError: onError, displayPoweredByDynamicFooter: displayPoweredByDynamicFooter, onSuccess: (txHash) => __awaiter(void 0, void 0, void 0, function* () {
201
+ const buildTransactionStage = () => (jsx(TransactionConfirmationView, { walletConnector: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, transaction: transaction, mutation: () => {
202
+ walletUiUtils.disabledConfirmationOnce();
203
+ return transaction.submit();
204
+ }, copykey: 'dyn_send_transaction.confirmation.title', title: t('dyn_send_transaction.confirmation.title'), onClickBack: () => setStage('form'), onError: onError, displayPoweredByDynamicFooter: displayPoweredByDynamicFooter, onSuccess: (txHash) => __awaiter(void 0, void 0, void 0, function* () {
202
205
  if (!txHash)
203
206
  return;
204
207
  onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(txHash);