@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 +9 -0
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +13 -13
- package/src/lib/components/TransactionConfirmationPageLayout/TransactionConfirmationPageLayout.cjs +13 -2
- package/src/lib/components/TransactionConfirmationPageLayout/TransactionConfirmationPageLayout.d.ts +2 -0
- package/src/lib/components/TransactionConfirmationPageLayout/TransactionConfirmationPageLayout.js +13 -2
- package/src/lib/modals/SignMessageConfirmationModal/SignMessageConfirmationModal.cjs +13 -3
- package/src/lib/modals/SignMessageConfirmationModal/SignMessageConfirmationModal.js +13 -3
- package/src/lib/modals/SignMessageConfirmationModal/SignMessageConfirmationModal.types.d.ts +1 -0
- package/src/lib/modals/TransactionConfirmationModal/TransactionConfirmationModal.cjs +2 -2
- package/src/lib/modals/TransactionConfirmationModal/TransactionConfirmationModal.js +2 -2
- package/src/lib/modals/TransactionConfirmationModal/TransactionConfirmationModal.types.d.ts +1 -0
- package/src/lib/utils/hooks/useWalletUiUtils/useWalletUiUtils.cjs +20 -13
- package/src/lib/utils/hooks/useWalletUiUtils/useWalletUiUtils.js +20 -13
- package/src/lib/views/TransactionConfirmationView/TransactionConfirmationView.cjs +2 -2
- package/src/lib/views/TransactionConfirmationView/TransactionConfirmationView.d.ts +1 -0
- package/src/lib/views/TransactionConfirmationView/TransactionConfirmationView.js +2 -2
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
package/package.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/sdk-react-core",
|
|
3
|
-
"version": "2.3.
|
|
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.
|
|
21
|
-
"@dynamic-labs/logger": "2.3.
|
|
22
|
-
"@dynamic-labs/multi-wallet": "2.3.
|
|
23
|
-
"@dynamic-labs/rpc-provider-ethereum": "2.3.
|
|
24
|
-
"@dynamic-labs/rpc-provider-solana": "2.3.
|
|
25
|
-
"@dynamic-labs/rpc-providers": "2.3.
|
|
26
|
-
"@dynamic-labs/store": "2.3.
|
|
27
|
-
"@dynamic-labs/types": "2.3.
|
|
28
|
-
"@dynamic-labs/utils": "2.3.
|
|
29
|
-
"@dynamic-labs/viem-utils": "2.3.
|
|
30
|
-
"@dynamic-labs/wallet-book": "2.3.
|
|
31
|
-
"@dynamic-labs/wallet-connector-core": "2.3.
|
|
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": {
|
package/src/lib/components/TransactionConfirmationPageLayout/TransactionConfirmationPageLayout.cjs
CHANGED
|
@@ -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;
|
package/src/lib/components/TransactionConfirmationPageLayout/TransactionConfirmationPageLayout.d.ts
CHANGED
|
@@ -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 {};
|
package/src/lib/components/TransactionConfirmationPageLayout/TransactionConfirmationPageLayout.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
116
|
-
|
|
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
|
-
|
|
120
|
+
// prevent the modal from opening itself again
|
|
121
|
+
if (!shouldConfirmAction())
|
|
119
122
|
return transaction.submit();
|
|
120
|
-
}
|
|
121
|
-
|
|
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((
|
|
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((
|
|
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
|
-
|
|
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
|
-
|
|
112
|
-
|
|
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
|
-
|
|
116
|
+
// prevent the modal from opening itself again
|
|
117
|
+
if (!shouldConfirmAction())
|
|
115
118
|
return transaction.submit();
|
|
116
|
-
}
|
|
117
|
-
|
|
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((
|
|
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((
|
|
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
|