@dynamic-labs/sdk-react-core 2.3.0 → 2.3.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,13 @@
1
1
 
2
+ ### [2.3.1](https://github.com/dynamic-labs/DynamicAuth/compare/v2.3.1-alpha.0...v2.3.1) (2024-07-13)
3
+
4
+ ### [2.3.1-alpha.0](https://github.com/dynamic-labs/DynamicAuth/compare/v2.3.0...v2.3.1-alpha.0) (2024-07-12)
5
+
6
+
7
+ ### Bug Fixes
8
+
9
+ * embedded wallets hide confirmation ui cherrypick ([#6325](https://github.com/dynamic-labs/DynamicAuth/issues/6325)) ([4c97af6](https://github.com/dynamic-labs/DynamicAuth/commit/4c97af64520fc47277af0e53236f1070f2b310c7))
10
+
2
11
  ## [2.3.0](https://github.com/dynamic-labs/DynamicAuth/compare/v2.2.10...v2.3.0) (2024-07-12)
3
12
 
4
13
 
package/package.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var version = "2.3.0";
6
+ var version = "2.3.1";
7
7
  var dependencies = {
8
8
  "@dynamic-labs/sdk-api-core": "0.0.460",
9
9
  "@hcaptcha/react-hcaptcha": "1.4.4",
package/package.js CHANGED
@@ -1,5 +1,5 @@
1
1
  'use client'
2
- var version = "2.3.0";
2
+ var version = "2.3.1";
3
3
  var dependencies = {
4
4
  "@dynamic-labs/sdk-api-core": "0.0.460",
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": "2.3.0",
3
+ "version": "2.3.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/dynamic-labs/dynamic-auth.git",
@@ -17,18 +17,18 @@
17
17
  "react-i18next": "13.5.0",
18
18
  "yup": "0.32.11",
19
19
  "react-international-phone": "4.2.5",
20
- "@dynamic-labs/iconic": "2.3.0",
21
- "@dynamic-labs/logger": "2.3.0",
22
- "@dynamic-labs/multi-wallet": "2.3.0",
23
- "@dynamic-labs/rpc-provider-ethereum": "2.3.0",
24
- "@dynamic-labs/rpc-provider-solana": "2.3.0",
25
- "@dynamic-labs/rpc-providers": "2.3.0",
26
- "@dynamic-labs/store": "2.3.0",
27
- "@dynamic-labs/types": "2.3.0",
28
- "@dynamic-labs/utils": "2.3.0",
29
- "@dynamic-labs/viem-utils": "2.3.0",
30
- "@dynamic-labs/wallet-book": "2.3.0",
31
- "@dynamic-labs/wallet-connector-core": "2.3.0",
20
+ "@dynamic-labs/iconic": "2.3.1",
21
+ "@dynamic-labs/logger": "2.3.1",
22
+ "@dynamic-labs/multi-wallet": "2.3.1",
23
+ "@dynamic-labs/rpc-provider-ethereum": "2.3.1",
24
+ "@dynamic-labs/rpc-provider-solana": "2.3.1",
25
+ "@dynamic-labs/rpc-providers": "2.3.1",
26
+ "@dynamic-labs/store": "2.3.1",
27
+ "@dynamic-labs/types": "2.3.1",
28
+ "@dynamic-labs/utils": "2.3.1",
29
+ "@dynamic-labs/viem-utils": "2.3.1",
30
+ "@dynamic-labs/wallet-book": "2.3.1",
31
+ "@dynamic-labs/wallet-connector-core": "2.3.1",
32
32
  "eventemitter3": "5.0.1"
33
33
  },
34
34
  "devDependencies": {
@@ -22,6 +22,7 @@ require('@dynamic-labs/wallet-book');
22
22
  require('../../utils/constants/colors.cjs');
23
23
  require('../../utils/constants/values.cjs');
24
24
  require('../../shared/utils/classes/storage/localStorage.cjs');
25
+ var useEffectOnce = require('../../shared/utils/hooks/useEffectOnce/useEffectOnce.cjs');
25
26
  require('@dynamic-labs/logger');
26
27
  require('@dynamic-labs/utils');
27
28
  require('../../shared/consts/index.cjs');
@@ -93,13 +94,23 @@ require('../../views/TransactionConfirmationView/helpers/transactionErrorMessage
93
94
  require('../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
94
95
  var useInternalDynamicContext = require('../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.cjs');
95
96
 
96
- const TransactionConfirmationPageLayout = ({ onClickClose, isLoading, onClickBack, copykey, title, error, appOrigin, appLogoUrl, appName, onClickSend, disableSendButton, displayPoweredByDynamicFooter = false, alert, children, }) => {
97
+ const TransactionConfirmationPageLayout = ({ onClickClose, isLoading, onClickBack, copykey, title, error, appOrigin, appLogoUrl, appName, onClickSend, disableSendButton, displayPoweredByDynamicFooter = false, alert, children, hideModal, onSuccess, }) => {
97
98
  const { t } = reactI18next.useTranslation();
98
99
  const { isTurnkeyWallet } = useIsTurnkeyWallet.useIsTurnkeyWallet();
99
100
  const { setShowAuthFlow } = useInternalDynamicContext.useInternalDynamicContext();
100
101
  const { setView } = ViewContext.useViewContext();
101
102
  const { userNeedsCrossDomainPasskey } = PasskeyContext.usePasskeyContext();
102
103
  const { initPasskeyRecoveryProcess, shouldInitRecovery } = usePasskeyRecovery.usePasskeyRecovery();
104
+ const handleRecovery = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
105
+ if (yield shouldInitRecovery())
106
+ yield initPasskeyRecoveryProcess('email', 'sendTransaction');
107
+ onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess('callHandlerOutsideModal');
108
+ });
109
+ useEffectOnce.useEffectOnce(() => {
110
+ if (hideModal) {
111
+ handleRecovery();
112
+ }
113
+ });
103
114
  const closeButton = onClickClose && (jsxRuntime.jsx(IconButton.IconButton, { type: 'button', onClick: onClickClose, "data-testid": 'close', disabled: isLoading, children: jsxRuntime.jsx(close.ReactComponent, {}) }));
104
115
  const backButton = onClickBack && (jsxRuntime.jsx(IconButton.IconButton, { type: 'button', onClick: onClickBack, "data-testid": 'back-button', children: jsxRuntime.jsx(chevronLeft.ReactComponent, {}) }));
105
116
  const handleSubmitWithChecks = (e) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
@@ -119,7 +130,7 @@ const TransactionConfirmationPageLayout = ({ onClickClose, isLoading, onClickBac
119
130
  }
120
131
  onClickSend(e);
121
132
  });
122
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(ModalHeader.ModalHeader, { trailing: closeButton, leading: backButton, alignContent: 'bottom', children: jsxRuntime.jsx(IconWithSpinner.IconWithSpinner, { Icon: (props) => (jsxRuntime.jsx(Icon.Icon, { color: 'brand-primary', children: jsxRuntime.jsx(signCircle.ReactComponent, Object.assign({}, props)) })), iconSize: 64, isSpinning: true }) }), jsxRuntime.jsx(PasskeyCreatedSuccessBanner.PasskeyCreatedSuccessBanner, {}), jsxRuntime.jsxs("div", { className: 'transaction-confirmation__body', children: [jsxRuntime.jsx(Typography.Typography, { variant: 'title', color: 'primary', className: 'transaction-confirmation__title', copykey: copykey, children: title }), jsxRuntime.jsx(AnimatePresence.AnimatePresence, { animationComponent: jsxRuntime.jsx(VerticalDrawerTransition.VerticalDrawerTransition, {}), children: error && (jsxRuntime.jsx("div", { className: 'transaction-confirmation__error', children: jsxRuntime.jsx(Alert.Alert, { icon: 'error', variant: 'error', children: error }) })) }), jsxRuntime.jsxs("div", { className: 'transaction-confirmation__content', children: [jsxRuntime.jsx("div", { className: 'transaction-confirmation__app-origin-tile', children: jsxRuntime.jsx(AppOriginTile.AppOriginTile, { appLogoUrl: appLogoUrl, appName: appName, appOrigin: appOrigin }) }), 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: [onClickClose && (jsxRuntime.jsx(TypographyButton.TypographyButton, { buttonVariant: 'secondary', onClick: onClickClose, expanded: true, buttonPadding: 'large', disabled: isLoading, copykey: 'dyn_send_transaction.confirmation.cancel_button', children: t('dyn_send_transaction.confirmation.cancel_button') })), jsxRuntime.jsx(TypographyButton.TypographyButton, { buttonVariant: 'primary', buttonPadding: 'large', onClick: handleSubmitWithChecks, expanded: true, loading: isLoading, disabled: disableSendButton, copykey: 'dyn_send_transaction.confirmation.confirm_button', children: t('dyn_send_transaction.confirmation.confirm_button') })] }), displayPoweredByDynamicFooter && (jsxRuntime.jsx(PoweredByDynamic.PoweredByDynamic, { classNameRoot: 'transaction-confirmation__footer' }))] })] }));
133
+ return hideModal ? null : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(ModalHeader.ModalHeader, { trailing: closeButton, leading: backButton, alignContent: 'bottom', children: jsxRuntime.jsx(IconWithSpinner.IconWithSpinner, { Icon: (props) => (jsxRuntime.jsx(Icon.Icon, { color: 'brand-primary', children: jsxRuntime.jsx(signCircle.ReactComponent, Object.assign({}, props)) })), iconSize: 64, isSpinning: true }) }), jsxRuntime.jsx(PasskeyCreatedSuccessBanner.PasskeyCreatedSuccessBanner, {}), jsxRuntime.jsxs("div", { className: 'transaction-confirmation__body', children: [jsxRuntime.jsx(Typography.Typography, { variant: 'title', color: 'primary', className: 'transaction-confirmation__title', copykey: copykey, children: title }), jsxRuntime.jsx(AnimatePresence.AnimatePresence, { animationComponent: jsxRuntime.jsx(VerticalDrawerTransition.VerticalDrawerTransition, {}), children: error && (jsxRuntime.jsx("div", { className: 'transaction-confirmation__error', children: jsxRuntime.jsx(Alert.Alert, { icon: 'error', variant: 'error', children: error }) })) }), jsxRuntime.jsxs("div", { className: 'transaction-confirmation__content', children: [jsxRuntime.jsx("div", { className: 'transaction-confirmation__app-origin-tile', children: jsxRuntime.jsx(AppOriginTile.AppOriginTile, { appLogoUrl: appLogoUrl, appName: appName, appOrigin: appOrigin }) }), 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: [onClickClose && (jsxRuntime.jsx(TypographyButton.TypographyButton, { buttonVariant: 'secondary', onClick: onClickClose, expanded: true, buttonPadding: 'large', disabled: isLoading, copykey: 'dyn_send_transaction.confirmation.cancel_button', children: t('dyn_send_transaction.confirmation.cancel_button') })), jsxRuntime.jsx(TypographyButton.TypographyButton, { buttonVariant: 'primary', buttonPadding: 'large', onClick: handleSubmitWithChecks, expanded: true, loading: isLoading, disabled: disableSendButton, copykey: 'dyn_send_transaction.confirmation.confirm_button', children: t('dyn_send_transaction.confirmation.confirm_button') })] }), displayPoweredByDynamicFooter && (jsxRuntime.jsx(PoweredByDynamic.PoweredByDynamic, { classNameRoot: 'transaction-confirmation__footer' }))] })] }));
123
134
  };
124
135
 
125
136
  exports.TransactionConfirmationPageLayout = TransactionConfirmationPageLayout;
@@ -11,8 +11,10 @@ type TransactionConfirmationPageLayoutProps = {
11
11
  onClickBack?: MouseEventHandler<HTMLButtonElement>;
12
12
  onClickClose?: MouseEventHandler<HTMLButtonElement>;
13
13
  onClickSend: MouseEventHandler<HTMLButtonElement>;
14
+ onSuccess: ((transactionResponse: string) => void) | undefined;
14
15
  title?: ReactNode;
15
16
  alert?: ReactNode;
17
+ hideModal?: boolean;
16
18
  } & CopyKey;
17
19
  export declare const TransactionConfirmationPageLayout: FC<PropsWithChildren<TransactionConfirmationPageLayoutProps>>;
18
20
  export {};
@@ -18,6 +18,7 @@ import '@dynamic-labs/wallet-book';
18
18
  import '../../utils/constants/colors.js';
19
19
  import '../../utils/constants/values.js';
20
20
  import '../../shared/utils/classes/storage/localStorage.js';
21
+ import { useEffectOnce } from '../../shared/utils/hooks/useEffectOnce/useEffectOnce.js';
21
22
  import '@dynamic-labs/logger';
22
23
  import '@dynamic-labs/utils';
23
24
  import '../../shared/consts/index.js';
@@ -89,13 +90,23 @@ import '../../views/TransactionConfirmationView/helpers/transactionErrorMessage.
89
90
  import '../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.js';
90
91
  import { useInternalDynamicContext } from '../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.js';
91
92
 
92
- const TransactionConfirmationPageLayout = ({ onClickClose, isLoading, onClickBack, copykey, title, error, appOrigin, appLogoUrl, appName, onClickSend, disableSendButton, displayPoweredByDynamicFooter = false, alert, children, }) => {
93
+ const TransactionConfirmationPageLayout = ({ onClickClose, isLoading, onClickBack, copykey, title, error, appOrigin, appLogoUrl, appName, onClickSend, disableSendButton, displayPoweredByDynamicFooter = false, alert, children, hideModal, onSuccess, }) => {
93
94
  const { t } = useTranslation();
94
95
  const { isTurnkeyWallet } = useIsTurnkeyWallet();
95
96
  const { setShowAuthFlow } = useInternalDynamicContext();
96
97
  const { setView } = useViewContext();
97
98
  const { userNeedsCrossDomainPasskey } = usePasskeyContext();
98
99
  const { initPasskeyRecoveryProcess, shouldInitRecovery } = usePasskeyRecovery();
100
+ const handleRecovery = () => __awaiter(void 0, void 0, void 0, function* () {
101
+ if (yield shouldInitRecovery())
102
+ yield initPasskeyRecoveryProcess('email', 'sendTransaction');
103
+ onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess('callHandlerOutsideModal');
104
+ });
105
+ useEffectOnce(() => {
106
+ if (hideModal) {
107
+ handleRecovery();
108
+ }
109
+ });
99
110
  const closeButton = onClickClose && (jsx(IconButton, { type: 'button', onClick: onClickClose, "data-testid": 'close', disabled: isLoading, children: jsx(SvgClose, {}) }));
100
111
  const backButton = onClickBack && (jsx(IconButton, { type: 'button', onClick: onClickBack, "data-testid": 'back-button', children: jsx(SvgChevronLeft, {}) }));
101
112
  const handleSubmitWithChecks = (e) => __awaiter(void 0, void 0, void 0, function* () {
@@ -115,7 +126,7 @@ const TransactionConfirmationPageLayout = ({ onClickClose, isLoading, onClickBac
115
126
  }
116
127
  onClickSend(e);
117
128
  });
118
- return (jsxs(Fragment, { children: [jsx(ModalHeader, { trailing: closeButton, leading: backButton, alignContent: 'bottom', children: jsx(IconWithSpinner, { Icon: (props) => (jsx(Icon, { color: 'brand-primary', children: jsx(SvgSignCircle, Object.assign({}, props)) })), iconSize: 64, isSpinning: true }) }), jsx(PasskeyCreatedSuccessBanner, {}), jsxs("div", { className: 'transaction-confirmation__body', children: [jsx(Typography, { variant: 'title', color: 'primary', className: 'transaction-confirmation__title', copykey: copykey, children: title }), jsx(AnimatePresence, { animationComponent: jsx(VerticalDrawerTransition, {}), children: error && (jsx("div", { className: 'transaction-confirmation__error', children: jsx(Alert, { icon: 'error', variant: 'error', children: error }) })) }), jsxs("div", { className: 'transaction-confirmation__content', children: [jsx("div", { className: 'transaction-confirmation__app-origin-tile', children: jsx(AppOriginTile, { appLogoUrl: appLogoUrl, appName: appName, appOrigin: appOrigin }) }), 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: [onClickClose && (jsx(TypographyButton, { buttonVariant: 'secondary', onClick: onClickClose, expanded: true, buttonPadding: 'large', disabled: isLoading, copykey: 'dyn_send_transaction.confirmation.cancel_button', children: t('dyn_send_transaction.confirmation.cancel_button') })), jsx(TypographyButton, { buttonVariant: 'primary', buttonPadding: 'large', onClick: handleSubmitWithChecks, expanded: true, loading: isLoading, disabled: disableSendButton, copykey: 'dyn_send_transaction.confirmation.confirm_button', children: t('dyn_send_transaction.confirmation.confirm_button') })] }), displayPoweredByDynamicFooter && (jsx(PoweredByDynamic, { classNameRoot: 'transaction-confirmation__footer' }))] })] }));
129
+ return hideModal ? null : (jsxs(Fragment, { children: [jsx(ModalHeader, { trailing: closeButton, leading: backButton, alignContent: 'bottom', children: jsx(IconWithSpinner, { Icon: (props) => (jsx(Icon, { color: 'brand-primary', children: jsx(SvgSignCircle, Object.assign({}, props)) })), iconSize: 64, isSpinning: true }) }), jsx(PasskeyCreatedSuccessBanner, {}), jsxs("div", { className: 'transaction-confirmation__body', children: [jsx(Typography, { variant: 'title', color: 'primary', className: 'transaction-confirmation__title', copykey: copykey, children: title }), jsx(AnimatePresence, { animationComponent: jsx(VerticalDrawerTransition, {}), children: error && (jsx("div", { className: 'transaction-confirmation__error', children: jsx(Alert, { icon: 'error', variant: 'error', children: error }) })) }), jsxs("div", { className: 'transaction-confirmation__content', children: [jsx("div", { className: 'transaction-confirmation__app-origin-tile', children: jsx(AppOriginTile, { appLogoUrl: appLogoUrl, appName: appName, appOrigin: appOrigin }) }), 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: [onClickClose && (jsx(TypographyButton, { buttonVariant: 'secondary', onClick: onClickClose, expanded: true, buttonPadding: 'large', disabled: isLoading, copykey: 'dyn_send_transaction.confirmation.cancel_button', children: t('dyn_send_transaction.confirmation.cancel_button') })), jsx(TypographyButton, { buttonVariant: 'primary', buttonPadding: 'large', onClick: handleSubmitWithChecks, expanded: true, loading: isLoading, disabled: disableSendButton, copykey: 'dyn_send_transaction.confirmation.confirm_button', children: t('dyn_send_transaction.confirmation.confirm_button') })] }), displayPoweredByDynamicFooter && (jsx(PoweredByDynamic, { classNameRoot: 'transaction-confirmation__footer' }))] })] }));
119
130
  };
120
131
 
121
132
  export { TransactionConfirmationPageLayout };
@@ -23,6 +23,7 @@ require('@dynamic-labs/wallet-book');
23
23
  require('../../utils/constants/colors.cjs');
24
24
  require('../../utils/constants/values.cjs');
25
25
  require('../../shared/utils/classes/storage/localStorage.cjs');
26
+ var useEffectOnce = require('../../shared/utils/hooks/useEffectOnce/useEffectOnce.cjs');
26
27
  require('@dynamic-labs/logger');
27
28
  var usePreventPageScroll = require('../../shared/utils/hooks/usePreventPageScroll/usePreventPageScroll.cjs');
28
29
  var index = require('../../shared/consts/index.cjs');
@@ -100,7 +101,7 @@ require('@hcaptcha/react-hcaptcha');
100
101
  require('../../context/IpConfigurationContext/IpConfigurationContext.cjs');
101
102
  var SignMessagePreview = require('../../components/SignMessagePreview/SignMessagePreview.cjs');
102
103
 
103
- const SignMessageConfirmationModal = ({ appLogoUrl, appName, appOrigin, message, handler, onReject, onSignMessage, }) => {
104
+ const SignMessageConfirmationModal = ({ appLogoUrl, appName, appOrigin, message, handler, onReject, onSignMessage, hideModal, }) => {
104
105
  usePreventPageScroll.usePreventPageScroll(true);
105
106
  const didConfirmRef = React.useRef(false);
106
107
  const [show, setShow] = React.useState(true);
@@ -143,10 +144,14 @@ const SignMessageConfirmationModal = ({ appLogoUrl, appName, appOrigin, message,
143
144
  }
144
145
  onReject(signMessageError || new Error('user rejected signing'));
145
146
  }, [signedMessage, onSignMessage, onReject, signMessageError]);
146
- const handleMessageSign = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
147
+ const handleMessageSign = (signWithoutModal) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
147
148
  if (yield shouldInitRecovery()) {
148
149
  yield initPasskeyRecoveryProcess('email', 'signMessage');
149
150
  }
151
+ if (signWithoutModal === true) {
152
+ onSignMessage('callHandlerOutsideModal');
153
+ return;
154
+ }
150
155
  if (isTurnkeyWallet && userNeedsCrossDomainPasskey) {
151
156
  setView('passkey-new-domain-detected');
152
157
  setShowAuthFlow(true, {
@@ -160,8 +165,13 @@ const SignMessageConfirmationModal = ({ appLogoUrl, appName, appOrigin, message,
160
165
  }
161
166
  confirm();
162
167
  });
168
+ useEffectOnce.useEffectOnce(() => {
169
+ if (hideModal) {
170
+ handleMessageSign(true);
171
+ }
172
+ });
163
173
  const closeButton = (jsxRuntime.jsx(IconButton.IconButton, { type: 'button', onClick: handleOnReject, "data-testid": 'close', disabled: isLoading, children: jsxRuntime.jsx(close.ReactComponent, {}) }));
164
- return (jsxRuntime.jsx(Portal.Portal, { handleClose: handleOnReject, isShown: show, zIndex: index.authModalZIndex, withBackdrop: true, elementId: 'dynamic-sign-message', transitionEvents: {
174
+ return hideModal ? null : (jsxRuntime.jsx(Portal.Portal, { handleClose: handleOnReject, isShown: show, zIndex: index.authModalZIndex, withBackdrop: true, elementId: 'dynamic-sign-message', transitionEvents: {
165
175
  onUnmount: handleOnModalUnmount,
166
176
  }, children: jsxRuntime.jsx(Modal.Modal, { children: jsxRuntime.jsxs(ModalCard.ModalCard, { children: [jsxRuntime.jsx(ModalHeader.ModalHeader, { trailing: closeButton, alignContent: 'bottom', children: jsxRuntime.jsx(IconWithSpinner.IconWithSpinner, { Icon: (props) => (jsxRuntime.jsx(Icon.Icon, { color: 'brand-primary', children: jsxRuntime.jsx(signCircle.ReactComponent, Object.assign({}, props)) })), iconSize: 64, isSpinning: true }) }), jsxRuntime.jsx(PasskeyCreatedSuccessBanner.PasskeyCreatedSuccessBanner, {}), jsxRuntime.jsxs("div", { className: 'sign-message-confirmation__body', children: [jsxRuntime.jsx(Typography.Typography, { variant: 'title', color: 'primary', className: 'sign-message-confirmation__title', copykey: 'dyn_sign_message.title', children: t('dyn_sign_message.title') }), jsxRuntime.jsx(AnimatePresence.AnimatePresence, { animationComponent: jsxRuntime.jsx(VerticalDrawerTransition.VerticalDrawerTransition, {}), children: signMessageError && (jsxRuntime.jsx("div", { className: 'sign-message-confirmation__error', children: jsxRuntime.jsx(ErrorContainer.ErrorContainer, { children: errorText }) })) }), jsxRuntime.jsxs("div", { className: 'sign-message-confirmation__message-container', children: [jsxRuntime.jsx(AppOriginTile.AppOriginTile, { appLogoUrl: appLogoUrl, appName: appName, appOrigin: appOrigin }), jsxRuntime.jsx("div", { className: 'sign-message-confirmation__message', children: jsxRuntime.jsx(SignMessagePreview.SignMessagePreview, { message: message.toString() }) })] }), jsxRuntime.jsxs("div", { className: 'sign-message-confirmation__actions', children: [jsxRuntime.jsx(TypographyButton.TypographyButton, { buttonVariant: 'secondary', onClick: handleOnReject, expanded: true, buttonPadding: 'large', disabled: isLoading, copykey: 'dyn_sign_message.cancel_button', children: t('dyn_sign_message.cancel_button') }), jsxRuntime.jsx(TypographyButton.TypographyButton, { buttonVariant: 'primary', buttonPadding: 'large', onClick: handleMessageSign, expanded: true, loading: isLoading, copykey: 'dyn_sign_message.sign_button', dataTestId: 'sign-button', children: t('dyn_sign_message.sign_button') })] }), jsxRuntime.jsx(NeedHelpSection.NeedHelpSection, {}), jsxRuntime.jsx(PoweredByDynamic.PoweredByDynamic, {})] })] }) }) }));
167
177
  };
@@ -19,6 +19,7 @@ import '@dynamic-labs/wallet-book';
19
19
  import '../../utils/constants/colors.js';
20
20
  import '../../utils/constants/values.js';
21
21
  import '../../shared/utils/classes/storage/localStorage.js';
22
+ import { useEffectOnce } from '../../shared/utils/hooks/useEffectOnce/useEffectOnce.js';
22
23
  import '@dynamic-labs/logger';
23
24
  import { usePreventPageScroll } from '../../shared/utils/hooks/usePreventPageScroll/usePreventPageScroll.js';
24
25
  import { authModalZIndex } from '../../shared/consts/index.js';
@@ -96,7 +97,7 @@ import '@hcaptcha/react-hcaptcha';
96
97
  import '../../context/IpConfigurationContext/IpConfigurationContext.js';
97
98
  import { SignMessagePreview } from '../../components/SignMessagePreview/SignMessagePreview.js';
98
99
 
99
- const SignMessageConfirmationModal = ({ appLogoUrl, appName, appOrigin, message, handler, onReject, onSignMessage, }) => {
100
+ const SignMessageConfirmationModal = ({ appLogoUrl, appName, appOrigin, message, handler, onReject, onSignMessage, hideModal, }) => {
100
101
  usePreventPageScroll(true);
101
102
  const didConfirmRef = useRef(false);
102
103
  const [show, setShow] = useState(true);
@@ -139,10 +140,14 @@ const SignMessageConfirmationModal = ({ appLogoUrl, appName, appOrigin, message,
139
140
  }
140
141
  onReject(signMessageError || new Error('user rejected signing'));
141
142
  }, [signedMessage, onSignMessage, onReject, signMessageError]);
142
- const handleMessageSign = () => __awaiter(void 0, void 0, void 0, function* () {
143
+ const handleMessageSign = (signWithoutModal) => __awaiter(void 0, void 0, void 0, function* () {
143
144
  if (yield shouldInitRecovery()) {
144
145
  yield initPasskeyRecoveryProcess('email', 'signMessage');
145
146
  }
147
+ if (signWithoutModal === true) {
148
+ onSignMessage('callHandlerOutsideModal');
149
+ return;
150
+ }
146
151
  if (isTurnkeyWallet && userNeedsCrossDomainPasskey) {
147
152
  setView('passkey-new-domain-detected');
148
153
  setShowAuthFlow(true, {
@@ -156,8 +161,13 @@ const SignMessageConfirmationModal = ({ appLogoUrl, appName, appOrigin, message,
156
161
  }
157
162
  confirm();
158
163
  });
164
+ useEffectOnce(() => {
165
+ if (hideModal) {
166
+ handleMessageSign(true);
167
+ }
168
+ });
159
169
  const closeButton = (jsx(IconButton, { type: 'button', onClick: handleOnReject, "data-testid": 'close', disabled: isLoading, children: jsx(SvgClose, {}) }));
160
- return (jsx(Portal, { handleClose: handleOnReject, isShown: show, zIndex: authModalZIndex, withBackdrop: true, elementId: 'dynamic-sign-message', transitionEvents: {
170
+ return hideModal ? null : (jsx(Portal, { handleClose: handleOnReject, isShown: show, zIndex: authModalZIndex, withBackdrop: true, elementId: 'dynamic-sign-message', transitionEvents: {
161
171
  onUnmount: handleOnModalUnmount,
162
172
  }, children: jsx(Modal, { children: jsxs(ModalCard, { children: [jsx(ModalHeader, { trailing: closeButton, alignContent: 'bottom', children: jsx(IconWithSpinner, { Icon: (props) => (jsx(Icon, { color: 'brand-primary', children: jsx(SvgSignCircle, Object.assign({}, props)) })), iconSize: 64, isSpinning: true }) }), jsx(PasskeyCreatedSuccessBanner, {}), jsxs("div", { className: 'sign-message-confirmation__body', children: [jsx(Typography, { variant: 'title', color: 'primary', className: 'sign-message-confirmation__title', copykey: 'dyn_sign_message.title', children: t('dyn_sign_message.title') }), jsx(AnimatePresence, { animationComponent: jsx(VerticalDrawerTransition, {}), children: signMessageError && (jsx("div", { className: 'sign-message-confirmation__error', children: jsx(ErrorContainer, { children: errorText }) })) }), jsxs("div", { className: 'sign-message-confirmation__message-container', children: [jsx(AppOriginTile, { appLogoUrl: appLogoUrl, appName: appName, appOrigin: appOrigin }), jsx("div", { className: 'sign-message-confirmation__message', children: jsx(SignMessagePreview, { message: message.toString() }) })] }), jsxs("div", { className: 'sign-message-confirmation__actions', children: [jsx(TypographyButton, { buttonVariant: 'secondary', onClick: handleOnReject, expanded: true, buttonPadding: 'large', disabled: isLoading, copykey: 'dyn_sign_message.cancel_button', children: t('dyn_sign_message.cancel_button') }), jsx(TypographyButton, { buttonVariant: 'primary', buttonPadding: 'large', onClick: handleMessageSign, expanded: true, loading: isLoading, copykey: 'dyn_sign_message.sign_button', dataTestId: 'sign-button', children: t('dyn_sign_message.sign_button') })] }), jsx(NeedHelpSection, {}), jsx(PoweredByDynamic, {})] })] }) }) }));
163
173
  };
@@ -8,6 +8,7 @@ export type SignMessageConfirmationModalProps = {
8
8
  message: string | ArrayLike<number>;
9
9
  onReject: (error: unknown) => void;
10
10
  onSignMessage: (signedMessage: string) => void;
11
+ hideModal: boolean;
11
12
  };
12
13
  export type SignMessageConfirmationModalComponent = FC<SignMessageConfirmationModalProps>;
13
14
  export type SignMessageError = Error & PasskeyError & {
@@ -81,7 +81,7 @@ require('../../widgets/DynamicBridgeWidget/views/WalletsView/components/Secondar
81
81
  require('@hcaptcha/react-hcaptcha');
82
82
  require('../../context/IpConfigurationContext/IpConfigurationContext.cjs');
83
83
 
84
- const TransactionConfirmationModal = ({ title, onReject, onTransactionResponseSuccess, transaction, copykey, walletConnector, }) => {
84
+ const TransactionConfirmationModal = ({ title, onReject, onTransactionResponseSuccess, transaction, copykey, walletConnector, hideModal, }) => {
85
85
  usePreventPageScroll.usePreventPageScroll(true);
86
86
  const [show, setShow] = React.useState(true);
87
87
  const errorRef = React.useRef(null);
@@ -97,7 +97,7 @@ const TransactionConfirmationModal = ({ title, onReject, onTransactionResponseSu
97
97
  }, [onTransactionResponseSuccess, onReject]);
98
98
  return (jsxRuntime.jsx(Portal.Portal, { handleClose: closeModal, isShown: show, zIndex: index.authModalZIndex, withBackdrop: true, elementId: 'dynamic-send-transaction', transitionEvents: {
99
99
  onUnmount: handleOnModalUnmount,
100
- }, children: jsxRuntime.jsx(Modal.Modal, { children: jsxRuntime.jsx(ModalCard.ModalCard, { children: jsxRuntime.jsx(TransactionConfirmationView.TransactionConfirmationView, { transaction: transaction, title: title, copykey: copykey, mutation: () => transaction.submit(), onClickClose: closeModal, onError: (error) => (errorRef.current = error), displayPoweredByDynamicFooter: true, walletConnector: walletConnector, onSuccess: (transactionResponse) => {
100
+ }, children: jsxRuntime.jsx(Modal.Modal, { children: jsxRuntime.jsx(ModalCard.ModalCard, { children: jsxRuntime.jsx(TransactionConfirmationView.TransactionConfirmationView, { transaction: transaction, title: title, copykey: copykey, hideModal: hideModal, mutation: () => transaction.submit(), onClickClose: closeModal, onError: (error) => (errorRef.current = error), displayPoweredByDynamicFooter: true, walletConnector: walletConnector, onSuccess: (transactionResponse) => {
101
101
  errorRef.current = null;
102
102
  transactionResponseRef.current = transactionResponse;
103
103
  closeModal();
@@ -77,7 +77,7 @@ import '../../widgets/DynamicBridgeWidget/views/WalletsView/components/Secondary
77
77
  import '@hcaptcha/react-hcaptcha';
78
78
  import '../../context/IpConfigurationContext/IpConfigurationContext.js';
79
79
 
80
- const TransactionConfirmationModal = ({ title, onReject, onTransactionResponseSuccess, transaction, copykey, walletConnector, }) => {
80
+ const TransactionConfirmationModal = ({ title, onReject, onTransactionResponseSuccess, transaction, copykey, walletConnector, hideModal, }) => {
81
81
  usePreventPageScroll(true);
82
82
  const [show, setShow] = useState(true);
83
83
  const errorRef = useRef(null);
@@ -93,7 +93,7 @@ const TransactionConfirmationModal = ({ title, onReject, onTransactionResponseSu
93
93
  }, [onTransactionResponseSuccess, onReject]);
94
94
  return (jsx(Portal, { handleClose: closeModal, isShown: show, zIndex: authModalZIndex, withBackdrop: true, elementId: 'dynamic-send-transaction', transitionEvents: {
95
95
  onUnmount: handleOnModalUnmount,
96
- }, children: jsx(Modal, { children: jsx(ModalCard, { children: jsx(TransactionConfirmationView, { transaction: transaction, title: title, copykey: copykey, mutation: () => transaction.submit(), onClickClose: closeModal, onError: (error) => (errorRef.current = error), displayPoweredByDynamicFooter: true, walletConnector: walletConnector, onSuccess: (transactionResponse) => {
96
+ }, children: jsx(Modal, { children: jsx(ModalCard, { children: jsx(TransactionConfirmationView, { transaction: transaction, title: title, copykey: copykey, hideModal: hideModal, mutation: () => transaction.submit(), onClickClose: closeModal, onError: (error) => (errorRef.current = error), displayPoweredByDynamicFooter: true, walletConnector: walletConnector, onSuccess: (transactionResponse) => {
97
97
  errorRef.current = null;
98
98
  transactionResponseRef.current = transactionResponse;
99
99
  closeModal();
@@ -8,5 +8,6 @@ export type TransactionConfirmationModalProps = {
8
8
  title: ReactNode;
9
9
  transaction: IUITransaction;
10
10
  walletConnector: WalletConnector;
11
+ hideModal: boolean;
11
12
  } & CopyKey;
12
13
  export type TransactionConfirmationModalComponent = FC<TransactionConfirmationModalProps>;
@@ -99,31 +99,38 @@ const useWalletUiUtils = ({ appLogoUrl, appName, getAppOrigin, hideEmbeddedWalle
99
99
  elementId: 'dynamic-create-password',
100
100
  });
101
101
  const shouldConfirmAction = React.useCallback(() => {
102
- if (hideEmbeddedWalletTransactionUIs) {
103
- return false;
104
- }
105
102
  if (confirmationStateRef.current === 'disabled') {
106
103
  confirmationStateRef.current = 'enabled';
107
104
  return false;
108
105
  }
109
106
  return true;
110
107
  }, [confirmationStateRef, hideEmbeddedWalletTransactionUIs]);
111
- const signMessage = React.useCallback(({ message, handler }) => {
112
- if (!shouldConfirmAction()) {
108
+ const signMessage = React.useCallback((_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ message, handler }) {
109
+ // prevent the modal from opening itself again
110
+ if (!shouldConfirmAction())
113
111
  return handler();
114
- }
115
- return openSignMessage((resolve, reject) => (jsxRuntime.jsx(SignMessageConfirmationModal.SignMessageConfirmationModal, { appLogoUrl: appLogoUrl, appName: appName, appOrigin: getAppOrigin(), message: message, handler: handler, onSignMessage: resolve, onReject: reject })));
116
- }, [appLogoUrl, appName, getAppOrigin, openSignMessage, shouldConfirmAction]);
112
+ return openSignMessage((resolve, reject) => (jsxRuntime.jsx(SignMessageConfirmationModal.SignMessageConfirmationModal, { appLogoUrl: appLogoUrl, appName: appName, appOrigin: getAppOrigin(), message: message, handler: handler, onSignMessage: resolve, onReject: reject, hideModal: hideEmbeddedWalletTransactionUIs }))).then((signedMessage) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
113
+ if (signedMessage === 'callHandlerOutsideModal')
114
+ return handler();
115
+ else
116
+ return signedMessage;
117
+ }));
118
+ }), [appLogoUrl, appName, getAppOrigin, openSignMessage, shouldConfirmAction]);
117
119
  const sendTransaction = React.useCallback((walletConnector, transaction) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
118
- if (!shouldConfirmAction()) {
120
+ // prevent the modal from opening itself again
121
+ if (!shouldConfirmAction())
119
122
  return transaction.submit();
120
- }
121
- return openSendTransaction((resolve, reject) => (jsxRuntime.jsx(TransactionConfirmationModal.TransactionConfirmationModal, { copykey: 'dyn_send_transaction.confirmation.title', title: t('dyn_send_transaction.confirmation.title'), transaction: transaction, onTransactionResponseSuccess: resolve, onReject: reject, walletConnector: walletConnector })));
123
+ return openSendTransaction((resolve, reject) => (jsxRuntime.jsx(TransactionConfirmationModal.TransactionConfirmationModal, { copykey: 'dyn_send_transaction.confirmation.title', title: t('dyn_send_transaction.confirmation.title'), transaction: transaction, onTransactionResponseSuccess: resolve, onReject: reject, walletConnector: walletConnector, hideModal: hideEmbeddedWalletTransactionUIs }))).then((signedTransaction) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
124
+ if (signedTransaction === 'callHandlerOutsideModal')
125
+ return transaction.submit();
126
+ else
127
+ return signedTransaction;
128
+ }));
122
129
  }), [openSendTransaction, shouldConfirmAction, t]);
123
- const enterPassword = React.useCallback((_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ handler, closeView = true }) {
130
+ const enterPassword = React.useCallback((_b) => _tslib.__awaiter(void 0, [_b], void 0, function* ({ handler, closeView = true }) {
124
131
  return openEnterPassword((resolve, reject) => (jsxRuntime.jsx(EnterPasswordModal.EnterPasswordModal, { handler: handler, onResolve: resolve, onReject: reject, closeView: closeView })));
125
132
  }), [openEnterPassword]);
126
- const createPassword = React.useCallback((_b) => _tslib.__awaiter(void 0, [_b], void 0, function* ({ closeView = true }) {
133
+ const createPassword = React.useCallback((_c) => _tslib.__awaiter(void 0, [_c], void 0, function* ({ closeView = true }) {
127
134
  return openCreatePassword((resolve, reject) => (jsxRuntime.jsx(CreatePasswordModal.CreatePasswordModal, { onResolve: resolve, onReject: reject, closeView: closeView })));
128
135
  }), [openCreatePassword]);
129
136
  const disabledConfirmationOnce = React.useCallback(() => {
@@ -95,31 +95,38 @@ const useWalletUiUtils = ({ appLogoUrl, appName, getAppOrigin, hideEmbeddedWalle
95
95
  elementId: 'dynamic-create-password',
96
96
  });
97
97
  const shouldConfirmAction = useCallback(() => {
98
- if (hideEmbeddedWalletTransactionUIs) {
99
- return false;
100
- }
101
98
  if (confirmationStateRef.current === 'disabled') {
102
99
  confirmationStateRef.current = 'enabled';
103
100
  return false;
104
101
  }
105
102
  return true;
106
103
  }, [confirmationStateRef, hideEmbeddedWalletTransactionUIs]);
107
- const signMessage = useCallback(({ message, handler }) => {
108
- if (!shouldConfirmAction()) {
104
+ const signMessage = useCallback((_a) => __awaiter(void 0, [_a], void 0, function* ({ message, handler }) {
105
+ // prevent the modal from opening itself again
106
+ if (!shouldConfirmAction())
109
107
  return handler();
110
- }
111
- return openSignMessage((resolve, reject) => (jsx(SignMessageConfirmationModal, { appLogoUrl: appLogoUrl, appName: appName, appOrigin: getAppOrigin(), message: message, handler: handler, onSignMessage: resolve, onReject: reject })));
112
- }, [appLogoUrl, appName, getAppOrigin, openSignMessage, shouldConfirmAction]);
108
+ return openSignMessage((resolve, reject) => (jsx(SignMessageConfirmationModal, { appLogoUrl: appLogoUrl, appName: appName, appOrigin: getAppOrigin(), message: message, handler: handler, onSignMessage: resolve, onReject: reject, hideModal: hideEmbeddedWalletTransactionUIs }))).then((signedMessage) => __awaiter(void 0, void 0, void 0, function* () {
109
+ if (signedMessage === 'callHandlerOutsideModal')
110
+ return handler();
111
+ else
112
+ return signedMessage;
113
+ }));
114
+ }), [appLogoUrl, appName, getAppOrigin, openSignMessage, shouldConfirmAction]);
113
115
  const sendTransaction = useCallback((walletConnector, transaction) => __awaiter(void 0, void 0, void 0, function* () {
114
- if (!shouldConfirmAction()) {
116
+ // prevent the modal from opening itself again
117
+ if (!shouldConfirmAction())
115
118
  return transaction.submit();
116
- }
117
- return openSendTransaction((resolve, reject) => (jsx(TransactionConfirmationModal, { copykey: 'dyn_send_transaction.confirmation.title', title: t('dyn_send_transaction.confirmation.title'), transaction: transaction, onTransactionResponseSuccess: resolve, onReject: reject, walletConnector: walletConnector })));
119
+ return openSendTransaction((resolve, reject) => (jsx(TransactionConfirmationModal, { copykey: 'dyn_send_transaction.confirmation.title', title: t('dyn_send_transaction.confirmation.title'), transaction: transaction, onTransactionResponseSuccess: resolve, onReject: reject, walletConnector: walletConnector, hideModal: hideEmbeddedWalletTransactionUIs }))).then((signedTransaction) => __awaiter(void 0, void 0, void 0, function* () {
120
+ if (signedTransaction === 'callHandlerOutsideModal')
121
+ return transaction.submit();
122
+ else
123
+ return signedTransaction;
124
+ }));
118
125
  }), [openSendTransaction, shouldConfirmAction, t]);
119
- const enterPassword = useCallback((_a) => __awaiter(void 0, [_a], void 0, function* ({ handler, closeView = true }) {
126
+ const enterPassword = useCallback((_b) => __awaiter(void 0, [_b], void 0, function* ({ handler, closeView = true }) {
120
127
  return openEnterPassword((resolve, reject) => (jsx(EnterPasswordModal, { handler: handler, onResolve: resolve, onReject: reject, closeView: closeView })));
121
128
  }), [openEnterPassword]);
122
- const createPassword = useCallback((_b) => __awaiter(void 0, [_b], void 0, function* ({ closeView = true }) {
129
+ const createPassword = useCallback((_c) => __awaiter(void 0, [_c], void 0, function* ({ closeView = true }) {
123
130
  return openCreatePassword((resolve, reject) => (jsx(CreatePasswordModal, { onResolve: resolve, onReject: reject, closeView: closeView })));
124
131
  }), [openCreatePassword]);
125
132
  const disabledConfirmationOnce = useCallback(() => {
@@ -94,7 +94,7 @@ var useInternalDynamicContext = require('../../context/DynamicContext/useDynamic
94
94
 
95
95
  const DEFAULT_PRECISION = 10;
96
96
  const FEE_REFRESH_INTERVAL = 20000;
97
- const TransactionConfirmationView = ({ transaction, onError, onSuccess, mutation, onClickBack, walletConnector, onClickClose, title, displayPoweredByDynamicFooter = false, copykey, }) => {
97
+ const TransactionConfirmationView = ({ transaction, onError, onSuccess, mutation, onClickBack, walletConnector, onClickClose, title, displayPoweredByDynamicFooter = false, copykey, hideModal, }) => {
98
98
  const { appName, appLogoUrl } = useInternalDynamicContext.useInternalDynamicContext();
99
99
  const appOrigin = getAppOrigin.getAppOrigin();
100
100
  const [isGasSponsored, setIsGasSponsored] = React.useState(false);
@@ -182,7 +182,7 @@ const TransactionConfirmationView = ({ transaction, onError, onSuccess, mutation
182
182
  t,
183
183
  currencySymbol,
184
184
  ]);
185
- return (jsxRuntime.jsxs(TransactionConfirmationPageLayout.TransactionConfirmationPageLayout, { onClickBack: onClickBack, onClickClose: onClickClose, copykey: copykey, title: title, appOrigin: appOrigin, appName: appName, appLogoUrl: appLogoUrl, isLoading: isLoading, onClickSend: () => send(), displayPoweredByDynamicFooter: displayPoweredByDynamicFooter, disableSendButton: isBalanceLoading, error: errorMessage, alert: alert, children: [jsxRuntime.jsx(TransactionRow.TransactionRow, { copykey: 'dyn_send_transaction.confirmation.data.from', label: t('dyn_send_transaction.confirmation.data.from'), title: transaction.from, children: shortenWalletAddress.shortenWalletAddress(transaction.from, 4, 4) }), jsxRuntime.jsx(TransactionRow.TransactionRow, { copykey: 'dyn_send_transaction.confirmation.data.to', label: t('dyn_send_transaction.confirmation.data.to'), title: transaction.to, children: transaction.to &&
185
+ return (jsxRuntime.jsxs(TransactionConfirmationPageLayout.TransactionConfirmationPageLayout, { onClickBack: onClickBack, onClickClose: onClickClose, copykey: copykey, title: title, appOrigin: appOrigin, appName: appName, appLogoUrl: appLogoUrl, hideModal: hideModal, isLoading: isLoading, onClickSend: () => send(), onSuccess: (tx) => onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(tx), displayPoweredByDynamicFooter: displayPoweredByDynamicFooter, disableSendButton: isBalanceLoading, error: errorMessage, alert: alert, children: [jsxRuntime.jsx(TransactionRow.TransactionRow, { copykey: 'dyn_send_transaction.confirmation.data.from', label: t('dyn_send_transaction.confirmation.data.from'), title: transaction.from, children: shortenWalletAddress.shortenWalletAddress(transaction.from, 4, 4) }), jsxRuntime.jsx(TransactionRow.TransactionRow, { copykey: 'dyn_send_transaction.confirmation.data.to', label: t('dyn_send_transaction.confirmation.data.to'), title: transaction.to, children: transaction.to &&
186
186
  transaction.to === 'dyn_send_transaction.multiple_recipients'
187
187
  ? t('dyn_send_transaction.multiple_recipients')
188
188
  : shortenWalletAddress.shortenWalletAddress(transaction.to, 4, 4) }), jsxRuntime.jsx(TransactionRow.TransactionRow, { copykey: 'dyn_send_transaction.confirmation.data.amount', label: t('dyn_send_transaction.confirmation.data.amount'), isEmpty: !transaction.value, title: transaction.value ? transaction.format(transaction.value) : undefined, suffix: currencySymbol, icon: chain && jsxRuntime.jsx(ChainIcon.ChainIcon, { chain: chain, chainName: chainName }), dataTestId: 'transaction-amount', children: transaction.value
@@ -9,6 +9,7 @@ export type TransactionConfirmationViewProps = {
9
9
  onClickBack?: MouseEventHandler<HTMLButtonElement>;
10
10
  onClickClose?: MouseEventHandler<HTMLButtonElement>;
11
11
  onError?: (error: unknown) => void;
12
+ hideModal?: boolean;
12
13
  onSuccess?: (receipt: string) => void;
13
14
  title: ReactNode;
14
15
  transaction: IUITransaction;
@@ -90,7 +90,7 @@ import { useInternalDynamicContext } from '../../context/DynamicContext/useDynam
90
90
 
91
91
  const DEFAULT_PRECISION = 10;
92
92
  const FEE_REFRESH_INTERVAL = 20000;
93
- const TransactionConfirmationView = ({ transaction, onError, onSuccess, mutation, onClickBack, walletConnector, onClickClose, title, displayPoweredByDynamicFooter = false, copykey, }) => {
93
+ const TransactionConfirmationView = ({ transaction, onError, onSuccess, mutation, onClickBack, walletConnector, onClickClose, title, displayPoweredByDynamicFooter = false, copykey, hideModal, }) => {
94
94
  const { appName, appLogoUrl } = useInternalDynamicContext();
95
95
  const appOrigin = getAppOrigin();
96
96
  const [isGasSponsored, setIsGasSponsored] = useState(false);
@@ -178,7 +178,7 @@ const TransactionConfirmationView = ({ transaction, onError, onSuccess, mutation
178
178
  t,
179
179
  currencySymbol,
180
180
  ]);
181
- return (jsxs(TransactionConfirmationPageLayout, { onClickBack: onClickBack, onClickClose: onClickClose, copykey: copykey, title: title, appOrigin: appOrigin, appName: appName, appLogoUrl: appLogoUrl, isLoading: isLoading, onClickSend: () => send(), displayPoweredByDynamicFooter: displayPoweredByDynamicFooter, disableSendButton: isBalanceLoading, error: errorMessage, alert: alert, children: [jsx(TransactionRow, { copykey: 'dyn_send_transaction.confirmation.data.from', label: t('dyn_send_transaction.confirmation.data.from'), title: transaction.from, children: shortenWalletAddress(transaction.from, 4, 4) }), jsx(TransactionRow, { copykey: 'dyn_send_transaction.confirmation.data.to', label: t('dyn_send_transaction.confirmation.data.to'), title: transaction.to, children: transaction.to &&
181
+ return (jsxs(TransactionConfirmationPageLayout, { onClickBack: onClickBack, onClickClose: onClickClose, copykey: copykey, title: title, appOrigin: appOrigin, appName: appName, appLogoUrl: appLogoUrl, hideModal: hideModal, isLoading: isLoading, onClickSend: () => send(), onSuccess: (tx) => onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(tx), displayPoweredByDynamicFooter: displayPoweredByDynamicFooter, disableSendButton: isBalanceLoading, error: errorMessage, alert: alert, children: [jsx(TransactionRow, { copykey: 'dyn_send_transaction.confirmation.data.from', label: t('dyn_send_transaction.confirmation.data.from'), title: transaction.from, children: shortenWalletAddress(transaction.from, 4, 4) }), jsx(TransactionRow, { copykey: 'dyn_send_transaction.confirmation.data.to', label: t('dyn_send_transaction.confirmation.data.to'), title: transaction.to, children: transaction.to &&
182
182
  transaction.to === 'dyn_send_transaction.multiple_recipients'
183
183
  ? t('dyn_send_transaction.multiple_recipients')
184
184
  : shortenWalletAddress(transaction.to, 4, 4) }), jsx(TransactionRow, { copykey: 'dyn_send_transaction.confirmation.data.amount', label: t('dyn_send_transaction.confirmation.data.amount'), isEmpty: !transaction.value, title: transaction.value ? transaction.format(transaction.value) : undefined, suffix: currencySymbol, icon: chain && jsx(ChainIcon, { chain: chain, chainName: chainName }), dataTestId: 'transaction-amount', children: transaction.value