@dynamic-labs/sdk-react-core 3.0.0-alpha.17 → 3.0.0-alpha.18
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 +7 -0
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +10 -10
- 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/context/DynamicContext/DynamicContext.cjs +1 -0
- package/src/lib/context/DynamicContext/DynamicContext.js +1 -0
- package/src/lib/modals/SignMessageConfirmationModal/SignMessageConfirmationModal.cjs +16 -6
- package/src/lib/modals/SignMessageConfirmationModal/SignMessageConfirmationModal.js +16 -6
- 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/shared/utils/hooks/useGlobalLoading/useGlobalLoading.cjs +9 -9
- package/src/lib/shared/utils/hooks/useGlobalLoading/useGlobalLoading.d.ts +2 -1
- package/src/lib/shared/utils/hooks/useGlobalLoading/useGlobalLoading.js +9 -9
- package/src/lib/utils/hooks/useWalletUiUtils/useWalletUiUtils.cjs +21 -14
- package/src/lib/utils/hooks/useWalletUiUtils/useWalletUiUtils.js +21 -14
- 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,11 @@
|
|
|
1
1
|
|
|
2
|
+
## [3.0.0-alpha.18](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.17...v3.0.0-alpha.18) (2024-07-12)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
* hide confirmation ui triggers passkey creation ([#6322](https://github.com/dynamic-labs/DynamicAuth/issues/6322)) ([c66f282](https://github.com/dynamic-labs/DynamicAuth/commit/c66f282cf8d64f19d7f5a7355aaaec980afbe245))
|
|
8
|
+
|
|
2
9
|
## [3.0.0-alpha.17](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.16...v3.0.0-alpha.17) (2024-07-11)
|
|
3
10
|
|
|
4
11
|
|
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": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.18",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/dynamic-labs/dynamic-auth.git",
|
|
@@ -17,15 +17,15 @@
|
|
|
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": "3.0.0-alpha.
|
|
21
|
-
"@dynamic-labs/logger": "3.0.0-alpha.
|
|
22
|
-
"@dynamic-labs/multi-wallet": "3.0.0-alpha.
|
|
23
|
-
"@dynamic-labs/rpc-providers": "3.0.0-alpha.
|
|
24
|
-
"@dynamic-labs/store": "3.0.0-alpha.
|
|
25
|
-
"@dynamic-labs/types": "3.0.0-alpha.
|
|
26
|
-
"@dynamic-labs/utils": "3.0.0-alpha.
|
|
27
|
-
"@dynamic-labs/wallet-book": "3.0.0-alpha.
|
|
28
|
-
"@dynamic-labs/wallet-connector-core": "3.0.0-alpha.
|
|
20
|
+
"@dynamic-labs/iconic": "3.0.0-alpha.18",
|
|
21
|
+
"@dynamic-labs/logger": "3.0.0-alpha.18",
|
|
22
|
+
"@dynamic-labs/multi-wallet": "3.0.0-alpha.18",
|
|
23
|
+
"@dynamic-labs/rpc-providers": "3.0.0-alpha.18",
|
|
24
|
+
"@dynamic-labs/store": "3.0.0-alpha.18",
|
|
25
|
+
"@dynamic-labs/types": "3.0.0-alpha.18",
|
|
26
|
+
"@dynamic-labs/utils": "3.0.0-alpha.18",
|
|
27
|
+
"@dynamic-labs/wallet-book": "3.0.0-alpha.18",
|
|
28
|
+
"@dynamic-labs/wallet-connector-core": "3.0.0-alpha.18",
|
|
29
29
|
"eventemitter3": "5.0.1"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
package/src/lib/components/TransactionConfirmationPageLayout/TransactionConfirmationPageLayout.cjs
CHANGED
|
@@ -23,6 +23,7 @@ require('../../utils/constants/colors.cjs');
|
|
|
23
23
|
require('../../utils/constants/values.cjs');
|
|
24
24
|
require('../../shared/utils/classes/storage/localStorage.cjs');
|
|
25
25
|
require('../../shared/utils/classes/storage/sessionStorage.cjs');
|
|
26
|
+
var useEffectOnce = require('../../shared/utils/hooks/useEffectOnce/useEffectOnce.cjs');
|
|
26
27
|
require('@dynamic-labs/utils');
|
|
27
28
|
require('../../shared/consts/index.cjs');
|
|
28
29
|
var IconButton = require('../IconButton/IconButton.cjs');
|
|
@@ -102,13 +103,23 @@ require('../../context/ConnectWithOtpContext/constants.cjs');
|
|
|
102
103
|
require('../../context/ReinitializeContext/ReinitializeContextProvider.cjs');
|
|
103
104
|
var useInternalDynamicContext = require('../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.cjs');
|
|
104
105
|
|
|
105
|
-
const TransactionConfirmationPageLayout = ({ onClickClose, isLoading, onClickBack, copykey, title, error, appOrigin, appLogoUrl, appName, onClickSend, disableSendButton, displayPoweredByDynamicFooter = false, alert, children, }) => {
|
|
106
|
+
const TransactionConfirmationPageLayout = ({ onClickClose, isLoading, onClickBack, copykey, title, error, appOrigin, appLogoUrl, appName, onClickSend, disableSendButton, displayPoweredByDynamicFooter = false, alert, children, hideModal, onSuccess, }) => {
|
|
106
107
|
const { t } = reactI18next.useTranslation();
|
|
107
108
|
const { isTurnkeyWallet } = useIsTurnkeyWallet.useIsTurnkeyWallet();
|
|
108
109
|
const { setShowAuthFlow, walletConnector } = useInternalDynamicContext.useInternalDynamicContext();
|
|
109
110
|
const { setView } = ViewContext.useViewContext();
|
|
110
111
|
const { userNeedsCrossDomainPasskey } = PasskeyContext.usePasskeyContext();
|
|
111
112
|
const { initPasskeyRecoveryProcess, shouldInitRecovery } = usePasskeyRecovery.usePasskeyRecovery();
|
|
113
|
+
const handleRecovery = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
114
|
+
if (yield shouldInitRecovery())
|
|
115
|
+
yield initPasskeyRecoveryProcess('email', 'sendTransaction');
|
|
116
|
+
onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess('callHandlerOutsideModal');
|
|
117
|
+
});
|
|
118
|
+
useEffectOnce.useEffectOnce(() => {
|
|
119
|
+
if (hideModal) {
|
|
120
|
+
handleRecovery();
|
|
121
|
+
}
|
|
122
|
+
});
|
|
112
123
|
const closeButton = onClickClose && (jsxRuntime.jsx(IconButton.IconButton, { type: 'button', onClick: onClickClose, "data-testid": 'close', disabled: isLoading, children: jsxRuntime.jsx(close.ReactComponent, {}) }));
|
|
113
124
|
const backButton = onClickBack && (jsxRuntime.jsx(IconButton.IconButton, { type: 'button', onClick: onClickBack, "data-testid": 'back-button', children: jsxRuntime.jsx(chevronLeft.ReactComponent, {}) }));
|
|
114
125
|
const handleSubmitWithChecks = (e) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -134,7 +145,7 @@ const TransactionConfirmationPageLayout = ({ onClickClose, isLoading, onClickBac
|
|
|
134
145
|
}
|
|
135
146
|
onClickSend(e);
|
|
136
147
|
});
|
|
137
|
-
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' }))] })] }));
|
|
148
|
+
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' }))] })] }));
|
|
138
149
|
};
|
|
139
150
|
|
|
140
151
|
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
|
@@ -19,6 +19,7 @@ import '../../utils/constants/colors.js';
|
|
|
19
19
|
import '../../utils/constants/values.js';
|
|
20
20
|
import '../../shared/utils/classes/storage/localStorage.js';
|
|
21
21
|
import '../../shared/utils/classes/storage/sessionStorage.js';
|
|
22
|
+
import { useEffectOnce } from '../../shared/utils/hooks/useEffectOnce/useEffectOnce.js';
|
|
22
23
|
import '@dynamic-labs/utils';
|
|
23
24
|
import '../../shared/consts/index.js';
|
|
24
25
|
import { IconButton } from '../IconButton/IconButton.js';
|
|
@@ -98,13 +99,23 @@ import '../../context/ConnectWithOtpContext/constants.js';
|
|
|
98
99
|
import '../../context/ReinitializeContext/ReinitializeContextProvider.js';
|
|
99
100
|
import { useInternalDynamicContext } from '../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.js';
|
|
100
101
|
|
|
101
|
-
const TransactionConfirmationPageLayout = ({ onClickClose, isLoading, onClickBack, copykey, title, error, appOrigin, appLogoUrl, appName, onClickSend, disableSendButton, displayPoweredByDynamicFooter = false, alert, children, }) => {
|
|
102
|
+
const TransactionConfirmationPageLayout = ({ onClickClose, isLoading, onClickBack, copykey, title, error, appOrigin, appLogoUrl, appName, onClickSend, disableSendButton, displayPoweredByDynamicFooter = false, alert, children, hideModal, onSuccess, }) => {
|
|
102
103
|
const { t } = useTranslation();
|
|
103
104
|
const { isTurnkeyWallet } = useIsTurnkeyWallet();
|
|
104
105
|
const { setShowAuthFlow, walletConnector } = useInternalDynamicContext();
|
|
105
106
|
const { setView } = useViewContext();
|
|
106
107
|
const { userNeedsCrossDomainPasskey } = usePasskeyContext();
|
|
107
108
|
const { initPasskeyRecoveryProcess, shouldInitRecovery } = usePasskeyRecovery();
|
|
109
|
+
const handleRecovery = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
110
|
+
if (yield shouldInitRecovery())
|
|
111
|
+
yield initPasskeyRecoveryProcess('email', 'sendTransaction');
|
|
112
|
+
onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess('callHandlerOutsideModal');
|
|
113
|
+
});
|
|
114
|
+
useEffectOnce(() => {
|
|
115
|
+
if (hideModal) {
|
|
116
|
+
handleRecovery();
|
|
117
|
+
}
|
|
118
|
+
});
|
|
108
119
|
const closeButton = onClickClose && (jsx(IconButton, { type: 'button', onClick: onClickClose, "data-testid": 'close', disabled: isLoading, children: jsx(SvgClose, {}) }));
|
|
109
120
|
const backButton = onClickBack && (jsx(IconButton, { type: 'button', onClick: onClickBack, "data-testid": 'back-button', children: jsx(SvgChevronLeft, {}) }));
|
|
110
121
|
const handleSubmitWithChecks = (e) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -130,7 +141,7 @@ const TransactionConfirmationPageLayout = ({ onClickClose, isLoading, onClickBac
|
|
|
130
141
|
}
|
|
131
142
|
onClickSend(e);
|
|
132
143
|
});
|
|
133
|
-
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' }))] })] }));
|
|
144
|
+
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' }))] })] }));
|
|
134
145
|
};
|
|
135
146
|
|
|
136
147
|
export { TransactionConfirmationPageLayout };
|
|
@@ -311,6 +311,7 @@ const InnerDynamicContextProvider = ({ children, theme, settings: settings$1, lo
|
|
|
311
311
|
connectedInfo: connectedWalletsInfo[0],
|
|
312
312
|
connectedWallets,
|
|
313
313
|
enableInstrumentation,
|
|
314
|
+
environmentId,
|
|
314
315
|
primaryWallet,
|
|
315
316
|
projectSettings,
|
|
316
317
|
user: user !== null && user !== void 0 ? user : unauthenticatedUser,
|
|
@@ -307,6 +307,7 @@ const InnerDynamicContextProvider = ({ children, theme, settings, locale, enable
|
|
|
307
307
|
connectedInfo: connectedWalletsInfo[0],
|
|
308
308
|
connectedWallets,
|
|
309
309
|
enableInstrumentation,
|
|
310
|
+
environmentId,
|
|
310
311
|
primaryWallet,
|
|
311
312
|
projectSettings,
|
|
312
313
|
user: user !== null && user !== void 0 ? user : unauthenticatedUser,
|
|
@@ -24,6 +24,7 @@ require('../../utils/constants/colors.cjs');
|
|
|
24
24
|
require('../../utils/constants/values.cjs');
|
|
25
25
|
require('../../shared/utils/classes/storage/localStorage.cjs');
|
|
26
26
|
require('../../shared/utils/classes/storage/sessionStorage.cjs');
|
|
27
|
+
var useEffectOnce = require('../../shared/utils/hooks/useEffectOnce/useEffectOnce.cjs');
|
|
27
28
|
var usePreventPageScroll = require('../../shared/utils/hooks/usePreventPageScroll/usePreventPageScroll.cjs');
|
|
28
29
|
var index = require('../../shared/consts/index.cjs');
|
|
29
30
|
var Icon = require('../../components/Icon/Icon.cjs');
|
|
@@ -109,7 +110,7 @@ var NeedHelpSection = require('../../components/NeedHelpSection/NeedHelpSection.
|
|
|
109
110
|
require('qrcode');
|
|
110
111
|
var SignMessagePreview = require('../../components/SignMessagePreview/SignMessagePreview.cjs');
|
|
111
112
|
|
|
112
|
-
const SignMessageConfirmationModal = ({ appLogoUrl, appName, appOrigin, message, handler, onReject, onSignMessage, }) => {
|
|
113
|
+
const SignMessageConfirmationModal = ({ appLogoUrl, appName, appOrigin, message, handler, onReject, onSignMessage, hideModal, }) => {
|
|
113
114
|
usePreventPageScroll.usePreventPageScroll(true);
|
|
114
115
|
const didConfirmRef = React.useRef(false);
|
|
115
116
|
const [show, setShow] = React.useState(true);
|
|
@@ -152,16 +153,20 @@ const SignMessageConfirmationModal = ({ appLogoUrl, appName, appOrigin, message,
|
|
|
152
153
|
}
|
|
153
154
|
onReject(signMessageError || new Error('user rejected signing'));
|
|
154
155
|
}, [signedMessage, onSignMessage, onReject, signMessageError]);
|
|
155
|
-
const handleMessageSign = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
156
|
+
const handleMessageSign = (signWithoutModal) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
157
|
+
if (yield shouldInitRecovery()) {
|
|
158
|
+
yield initPasskeyRecoveryProcess('email', 'signMessage');
|
|
159
|
+
}
|
|
160
|
+
if (signWithoutModal === true) {
|
|
161
|
+
onSignMessage('callHandlerOutsideModal');
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
156
164
|
if (walletConnectorCore.isSessionKeyCompatibleWalletConnector(walletConnector) ||
|
|
157
165
|
((walletConnector === null || walletConnector === void 0 ? void 0 : walletConnector.key) === 'zerodev' &&
|
|
158
166
|
walletConnectorCore.isSessionKeyCompatibleWalletConnector(walletConnector.getEOAConnector()))) {
|
|
159
167
|
confirm();
|
|
160
168
|
return;
|
|
161
169
|
}
|
|
162
|
-
if (yield shouldInitRecovery()) {
|
|
163
|
-
yield initPasskeyRecoveryProcess('email', 'signMessage');
|
|
164
|
-
}
|
|
165
170
|
if (isTurnkeyWallet && userNeedsCrossDomainPasskey) {
|
|
166
171
|
setView('passkey-new-domain-detected');
|
|
167
172
|
setShowAuthFlow(true, {
|
|
@@ -175,8 +180,13 @@ const SignMessageConfirmationModal = ({ appLogoUrl, appName, appOrigin, message,
|
|
|
175
180
|
}
|
|
176
181
|
confirm();
|
|
177
182
|
});
|
|
183
|
+
useEffectOnce.useEffectOnce(() => {
|
|
184
|
+
if (hideModal) {
|
|
185
|
+
handleMessageSign(true);
|
|
186
|
+
}
|
|
187
|
+
});
|
|
178
188
|
const closeButton = (jsxRuntime.jsx(IconButton.IconButton, { type: 'button', onClick: handleOnReject, "data-testid": 'close', disabled: isLoading, children: jsxRuntime.jsx(close.ReactComponent, {}) }));
|
|
179
|
-
return (jsxRuntime.jsx(Portal.Portal, { handleClose: handleOnReject, isShown: show, zIndex: index.authModalZIndex, withBackdrop: true, elementId: 'dynamic-sign-message', transitionEvents: {
|
|
189
|
+
return hideModal ? null : (jsxRuntime.jsx(Portal.Portal, { handleClose: handleOnReject, isShown: show, zIndex: index.authModalZIndex, withBackdrop: true, elementId: 'dynamic-sign-message', transitionEvents: {
|
|
180
190
|
onUnmount: handleOnModalUnmount,
|
|
181
191
|
}, 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, {})] })] }) }) }));
|
|
182
192
|
};
|
|
@@ -20,6 +20,7 @@ import '../../utils/constants/colors.js';
|
|
|
20
20
|
import '../../utils/constants/values.js';
|
|
21
21
|
import '../../shared/utils/classes/storage/localStorage.js';
|
|
22
22
|
import '../../shared/utils/classes/storage/sessionStorage.js';
|
|
23
|
+
import { useEffectOnce } from '../../shared/utils/hooks/useEffectOnce/useEffectOnce.js';
|
|
23
24
|
import { usePreventPageScroll } from '../../shared/utils/hooks/usePreventPageScroll/usePreventPageScroll.js';
|
|
24
25
|
import { authModalZIndex } from '../../shared/consts/index.js';
|
|
25
26
|
import { Icon } from '../../components/Icon/Icon.js';
|
|
@@ -105,7 +106,7 @@ import { NeedHelpSection } from '../../components/NeedHelpSection/NeedHelpSectio
|
|
|
105
106
|
import 'qrcode';
|
|
106
107
|
import { SignMessagePreview } from '../../components/SignMessagePreview/SignMessagePreview.js';
|
|
107
108
|
|
|
108
|
-
const SignMessageConfirmationModal = ({ appLogoUrl, appName, appOrigin, message, handler, onReject, onSignMessage, }) => {
|
|
109
|
+
const SignMessageConfirmationModal = ({ appLogoUrl, appName, appOrigin, message, handler, onReject, onSignMessage, hideModal, }) => {
|
|
109
110
|
usePreventPageScroll(true);
|
|
110
111
|
const didConfirmRef = useRef(false);
|
|
111
112
|
const [show, setShow] = useState(true);
|
|
@@ -148,16 +149,20 @@ const SignMessageConfirmationModal = ({ appLogoUrl, appName, appOrigin, message,
|
|
|
148
149
|
}
|
|
149
150
|
onReject(signMessageError || new Error('user rejected signing'));
|
|
150
151
|
}, [signedMessage, onSignMessage, onReject, signMessageError]);
|
|
151
|
-
const handleMessageSign = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
152
|
+
const handleMessageSign = (signWithoutModal) => __awaiter(void 0, void 0, void 0, function* () {
|
|
153
|
+
if (yield shouldInitRecovery()) {
|
|
154
|
+
yield initPasskeyRecoveryProcess('email', 'signMessage');
|
|
155
|
+
}
|
|
156
|
+
if (signWithoutModal === true) {
|
|
157
|
+
onSignMessage('callHandlerOutsideModal');
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
152
160
|
if (isSessionKeyCompatibleWalletConnector(walletConnector) ||
|
|
153
161
|
((walletConnector === null || walletConnector === void 0 ? void 0 : walletConnector.key) === 'zerodev' &&
|
|
154
162
|
isSessionKeyCompatibleWalletConnector(walletConnector.getEOAConnector()))) {
|
|
155
163
|
confirm();
|
|
156
164
|
return;
|
|
157
165
|
}
|
|
158
|
-
if (yield shouldInitRecovery()) {
|
|
159
|
-
yield initPasskeyRecoveryProcess('email', 'signMessage');
|
|
160
|
-
}
|
|
161
166
|
if (isTurnkeyWallet && userNeedsCrossDomainPasskey) {
|
|
162
167
|
setView('passkey-new-domain-detected');
|
|
163
168
|
setShowAuthFlow(true, {
|
|
@@ -171,8 +176,13 @@ const SignMessageConfirmationModal = ({ appLogoUrl, appName, appOrigin, message,
|
|
|
171
176
|
}
|
|
172
177
|
confirm();
|
|
173
178
|
});
|
|
179
|
+
useEffectOnce(() => {
|
|
180
|
+
if (hideModal) {
|
|
181
|
+
handleMessageSign(true);
|
|
182
|
+
}
|
|
183
|
+
});
|
|
174
184
|
const closeButton = (jsx(IconButton, { type: 'button', onClick: handleOnReject, "data-testid": 'close', disabled: isLoading, children: jsx(SvgClose, {}) }));
|
|
175
|
-
return (jsx(Portal, { handleClose: handleOnReject, isShown: show, zIndex: authModalZIndex, withBackdrop: true, elementId: 'dynamic-sign-message', transitionEvents: {
|
|
185
|
+
return hideModal ? null : (jsx(Portal, { handleClose: handleOnReject, isShown: show, zIndex: authModalZIndex, withBackdrop: true, elementId: 'dynamic-sign-message', transitionEvents: {
|
|
176
186
|
onUnmount: handleOnModalUnmount,
|
|
177
187
|
}, 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, {})] })] }) }) }));
|
|
178
188
|
};
|
|
@@ -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 & {
|
|
@@ -90,7 +90,7 @@ require('../../context/ReinitializeContext/ReinitializeContextProvider.cjs');
|
|
|
90
90
|
require('../../components/InlineWidget/InlineWidget.cjs');
|
|
91
91
|
require('qrcode');
|
|
92
92
|
|
|
93
|
-
const TransactionConfirmationModal = ({ title, onReject, onTransactionResponseSuccess, transaction, copykey, walletConnector, }) => {
|
|
93
|
+
const TransactionConfirmationModal = ({ title, onReject, onTransactionResponseSuccess, transaction, copykey, walletConnector, hideModal, }) => {
|
|
94
94
|
usePreventPageScroll.usePreventPageScroll(true);
|
|
95
95
|
const [show, setShow] = React.useState(true);
|
|
96
96
|
const errorRef = React.useRef(null);
|
|
@@ -106,7 +106,7 @@ const TransactionConfirmationModal = ({ title, onReject, onTransactionResponseSu
|
|
|
106
106
|
}, [onTransactionResponseSuccess, onReject]);
|
|
107
107
|
return (jsxRuntime.jsx(Portal.Portal, { handleClose: closeModal, isShown: show, zIndex: index.authModalZIndex, withBackdrop: true, elementId: 'dynamic-send-transaction', transitionEvents: {
|
|
108
108
|
onUnmount: handleOnModalUnmount,
|
|
109
|
-
}, 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) => {
|
|
109
|
+
}, 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) => {
|
|
110
110
|
errorRef.current = null;
|
|
111
111
|
transactionResponseRef.current = transactionResponse;
|
|
112
112
|
closeModal();
|
|
@@ -86,7 +86,7 @@ import '../../context/ReinitializeContext/ReinitializeContextProvider.js';
|
|
|
86
86
|
import '../../components/InlineWidget/InlineWidget.js';
|
|
87
87
|
import 'qrcode';
|
|
88
88
|
|
|
89
|
-
const TransactionConfirmationModal = ({ title, onReject, onTransactionResponseSuccess, transaction, copykey, walletConnector, }) => {
|
|
89
|
+
const TransactionConfirmationModal = ({ title, onReject, onTransactionResponseSuccess, transaction, copykey, walletConnector, hideModal, }) => {
|
|
90
90
|
usePreventPageScroll(true);
|
|
91
91
|
const [show, setShow] = useState(true);
|
|
92
92
|
const errorRef = useRef(null);
|
|
@@ -102,7 +102,7 @@ const TransactionConfirmationModal = ({ title, onReject, onTransactionResponseSu
|
|
|
102
102
|
}, [onTransactionResponseSuccess, onReject]);
|
|
103
103
|
return (jsx(Portal, { handleClose: closeModal, isShown: show, zIndex: authModalZIndex, withBackdrop: true, elementId: 'dynamic-send-transaction', transitionEvents: {
|
|
104
104
|
onUnmount: handleOnModalUnmount,
|
|
105
|
-
}, 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) => {
|
|
105
|
+
}, 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) => {
|
|
106
106
|
errorRef.current = null;
|
|
107
107
|
transactionResponseRef.current = transactionResponse;
|
|
108
108
|
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>;
|
|
@@ -7,7 +7,7 @@ var React = require('react');
|
|
|
7
7
|
var logger = require('../../../logger.cjs');
|
|
8
8
|
var index = require('../../functions/lastAuthenticatedAccount/index.cjs');
|
|
9
9
|
|
|
10
|
-
const useGlobalLoading = ({ authMode, connectedInfo, connectedWallets, projectSettings, primaryWallet, user, walletBook, enableInstrumentation, appName, }) => {
|
|
10
|
+
const useGlobalLoading = ({ authMode, connectedInfo, connectedWallets, projectSettings, primaryWallet, user, walletBook, enableInstrumentation, appName, environmentId, }) => {
|
|
11
11
|
var _a, _b;
|
|
12
12
|
// Once we declare the SDK as loaded, we do not ever want to flip back to false
|
|
13
13
|
const hasLoaded = React.useRef(false);
|
|
@@ -19,16 +19,16 @@ const useGlobalLoading = ({ authMode, connectedInfo, connectedWallets, projectSe
|
|
|
19
19
|
// Calculate how long loading took and emit log
|
|
20
20
|
if (enableInstrumentation) {
|
|
21
21
|
const loadingTime = new Date().getTime() - loadingStart.current;
|
|
22
|
-
// User is already included in meta
|
|
23
|
-
const analysisParams = {
|
|
24
|
-
appName,
|
|
25
|
-
loadingTime,
|
|
26
|
-
primaryWalletId: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.id,
|
|
27
|
-
projectDisplayName: projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.general.displayName,
|
|
28
|
-
};
|
|
29
22
|
// Pass as default arg and as an object. The object value will be injected
|
|
30
23
|
// in the log later on, keeping its format as a number for calculation purposes
|
|
31
|
-
logger.logger.instrument(`SDK loaded in (ms) ${loadingTime}`,
|
|
24
|
+
logger.logger.instrument(`SDK loaded in (ms) ${loadingTime}`, {
|
|
25
|
+
appName,
|
|
26
|
+
environmentId,
|
|
27
|
+
key: 'sdkHasLoaded',
|
|
28
|
+
primaryWalletId: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.id,
|
|
29
|
+
time: loadingTime,
|
|
30
|
+
userId: user === null || user === void 0 ? void 0 : user.userId,
|
|
31
|
+
});
|
|
32
32
|
}
|
|
33
33
|
};
|
|
34
34
|
if (hasLoaded.current)
|
|
@@ -13,6 +13,7 @@ type Props = {
|
|
|
13
13
|
walletBook: WalletBookSchema;
|
|
14
14
|
enableInstrumentation: boolean;
|
|
15
15
|
appName: string;
|
|
16
|
+
environmentId: string;
|
|
16
17
|
};
|
|
17
|
-
export declare const useGlobalLoading: ({ authMode, connectedInfo, connectedWallets, projectSettings, primaryWallet, user, walletBook, enableInstrumentation, appName, }: Props) => boolean;
|
|
18
|
+
export declare const useGlobalLoading: ({ authMode, connectedInfo, connectedWallets, projectSettings, primaryWallet, user, walletBook, enableInstrumentation, appName, environmentId, }: Props) => boolean;
|
|
18
19
|
export {};
|
|
@@ -3,7 +3,7 @@ import { useRef } from 'react';
|
|
|
3
3
|
import { logger } from '../../../logger.js';
|
|
4
4
|
import { lastAuthenticatedAccount } from '../../functions/lastAuthenticatedAccount/index.js';
|
|
5
5
|
|
|
6
|
-
const useGlobalLoading = ({ authMode, connectedInfo, connectedWallets, projectSettings, primaryWallet, user, walletBook, enableInstrumentation, appName, }) => {
|
|
6
|
+
const useGlobalLoading = ({ authMode, connectedInfo, connectedWallets, projectSettings, primaryWallet, user, walletBook, enableInstrumentation, appName, environmentId, }) => {
|
|
7
7
|
var _a, _b;
|
|
8
8
|
// Once we declare the SDK as loaded, we do not ever want to flip back to false
|
|
9
9
|
const hasLoaded = useRef(false);
|
|
@@ -15,16 +15,16 @@ const useGlobalLoading = ({ authMode, connectedInfo, connectedWallets, projectSe
|
|
|
15
15
|
// Calculate how long loading took and emit log
|
|
16
16
|
if (enableInstrumentation) {
|
|
17
17
|
const loadingTime = new Date().getTime() - loadingStart.current;
|
|
18
|
-
// User is already included in meta
|
|
19
|
-
const analysisParams = {
|
|
20
|
-
appName,
|
|
21
|
-
loadingTime,
|
|
22
|
-
primaryWalletId: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.id,
|
|
23
|
-
projectDisplayName: projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.general.displayName,
|
|
24
|
-
};
|
|
25
18
|
// Pass as default arg and as an object. The object value will be injected
|
|
26
19
|
// in the log later on, keeping its format as a number for calculation purposes
|
|
27
|
-
logger.instrument(`SDK loaded in (ms) ${loadingTime}`,
|
|
20
|
+
logger.instrument(`SDK loaded in (ms) ${loadingTime}`, {
|
|
21
|
+
appName,
|
|
22
|
+
environmentId,
|
|
23
|
+
key: 'sdkHasLoaded',
|
|
24
|
+
primaryWalletId: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.id,
|
|
25
|
+
time: loadingTime,
|
|
26
|
+
userId: user === null || user === void 0 ? void 0 : user.userId,
|
|
27
|
+
});
|
|
28
28
|
}
|
|
29
29
|
};
|
|
30
30
|
if (hasLoaded.current)
|
|
@@ -101,34 +101,41 @@ const useWalletUiUtils = ({ appLogoUrl, appName, getAppOrigin, hideEmbeddedWalle
|
|
|
101
101
|
elementId: 'dynamic-sync-wallet',
|
|
102
102
|
});
|
|
103
103
|
const shouldConfirmAction = React.useCallback(() => {
|
|
104
|
-
if (hideEmbeddedWalletTransactionUIs) {
|
|
105
|
-
return false;
|
|
106
|
-
}
|
|
107
104
|
if (confirmationStateRef.current === 'disabled') {
|
|
108
105
|
confirmationStateRef.current = 'enabled';
|
|
109
106
|
return false;
|
|
110
107
|
}
|
|
111
108
|
return true;
|
|
112
109
|
}, [confirmationStateRef, hideEmbeddedWalletTransactionUIs]);
|
|
113
|
-
const signMessage = React.useCallback(({ message, handler })
|
|
114
|
-
|
|
110
|
+
const signMessage = React.useCallback((_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ message, handler }) {
|
|
111
|
+
// prevent the modal from opening itself again
|
|
112
|
+
if (!shouldConfirmAction())
|
|
115
113
|
return handler();
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
|
|
114
|
+
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* () {
|
|
115
|
+
if (signedMessage === 'callHandlerOutsideModal')
|
|
116
|
+
return handler();
|
|
117
|
+
else
|
|
118
|
+
return signedMessage;
|
|
119
|
+
}));
|
|
120
|
+
}), [appLogoUrl, appName, getAppOrigin, openSignMessage, shouldConfirmAction]);
|
|
119
121
|
const sendTransaction = React.useCallback((walletConnector, transaction) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
120
|
-
|
|
122
|
+
// prevent the modal from opening itself again
|
|
123
|
+
if (!shouldConfirmAction())
|
|
121
124
|
return transaction.submit();
|
|
122
|
-
}
|
|
123
|
-
|
|
125
|
+
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* () {
|
|
126
|
+
if (signedTransaction === 'callHandlerOutsideModal')
|
|
127
|
+
return transaction.submit();
|
|
128
|
+
else
|
|
129
|
+
return signedTransaction;
|
|
130
|
+
}));
|
|
124
131
|
}), [openSendTransaction, shouldConfirmAction, t]);
|
|
125
|
-
const enterPassword = React.useCallback((
|
|
132
|
+
const enterPassword = React.useCallback((_b) => _tslib.__awaiter(void 0, [_b], void 0, function* ({ handler, closeView = true }) {
|
|
126
133
|
return openEnterPassword((resolve, reject) => (jsxRuntime.jsx(EnterPasswordModal.EnterPasswordModal, { handler: handler, onResolve: resolve, onReject: reject, closeView: closeView })));
|
|
127
134
|
}), [openEnterPassword]);
|
|
128
|
-
const createPassword = React.useCallback((
|
|
135
|
+
const createPassword = React.useCallback((_c) => _tslib.__awaiter(void 0, [_c], void 0, function* ({ closeView = true }) {
|
|
129
136
|
return openCreatePassword((resolve, reject) => (jsxRuntime.jsx(CreatePasswordModal.CreatePasswordModal, { onResolve: resolve, onReject: reject, closeView: closeView })));
|
|
130
137
|
}), [openCreatePassword]);
|
|
131
|
-
const syncWallet = React.useCallback((
|
|
138
|
+
const syncWallet = React.useCallback((_d) => _tslib.__awaiter(void 0, [_d], void 0, function* ({ walletConnector, activeAddress, expectedAddress }) {
|
|
132
139
|
if (!activeAddress) {
|
|
133
140
|
return;
|
|
134
141
|
}
|
|
@@ -97,34 +97,41 @@ const useWalletUiUtils = ({ appLogoUrl, appName, getAppOrigin, hideEmbeddedWalle
|
|
|
97
97
|
elementId: 'dynamic-sync-wallet',
|
|
98
98
|
});
|
|
99
99
|
const shouldConfirmAction = useCallback(() => {
|
|
100
|
-
if (hideEmbeddedWalletTransactionUIs) {
|
|
101
|
-
return false;
|
|
102
|
-
}
|
|
103
100
|
if (confirmationStateRef.current === 'disabled') {
|
|
104
101
|
confirmationStateRef.current = 'enabled';
|
|
105
102
|
return false;
|
|
106
103
|
}
|
|
107
104
|
return true;
|
|
108
105
|
}, [confirmationStateRef, hideEmbeddedWalletTransactionUIs]);
|
|
109
|
-
const signMessage = useCallback(({ message, handler })
|
|
110
|
-
|
|
106
|
+
const signMessage = useCallback((_a) => __awaiter(void 0, [_a], void 0, function* ({ message, handler }) {
|
|
107
|
+
// prevent the modal from opening itself again
|
|
108
|
+
if (!shouldConfirmAction())
|
|
111
109
|
return handler();
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
|
|
110
|
+
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* () {
|
|
111
|
+
if (signedMessage === 'callHandlerOutsideModal')
|
|
112
|
+
return handler();
|
|
113
|
+
else
|
|
114
|
+
return signedMessage;
|
|
115
|
+
}));
|
|
116
|
+
}), [appLogoUrl, appName, getAppOrigin, openSignMessage, shouldConfirmAction]);
|
|
115
117
|
const sendTransaction = useCallback((walletConnector, transaction) => __awaiter(void 0, void 0, void 0, function* () {
|
|
116
|
-
|
|
118
|
+
// prevent the modal from opening itself again
|
|
119
|
+
if (!shouldConfirmAction())
|
|
117
120
|
return transaction.submit();
|
|
118
|
-
}
|
|
119
|
-
|
|
121
|
+
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* () {
|
|
122
|
+
if (signedTransaction === 'callHandlerOutsideModal')
|
|
123
|
+
return transaction.submit();
|
|
124
|
+
else
|
|
125
|
+
return signedTransaction;
|
|
126
|
+
}));
|
|
120
127
|
}), [openSendTransaction, shouldConfirmAction, t]);
|
|
121
|
-
const enterPassword = useCallback((
|
|
128
|
+
const enterPassword = useCallback((_b) => __awaiter(void 0, [_b], void 0, function* ({ handler, closeView = true }) {
|
|
122
129
|
return openEnterPassword((resolve, reject) => (jsx(EnterPasswordModal, { handler: handler, onResolve: resolve, onReject: reject, closeView: closeView })));
|
|
123
130
|
}), [openEnterPassword]);
|
|
124
|
-
const createPassword = useCallback((
|
|
131
|
+
const createPassword = useCallback((_c) => __awaiter(void 0, [_c], void 0, function* ({ closeView = true }) {
|
|
125
132
|
return openCreatePassword((resolve, reject) => (jsx(CreatePasswordModal, { onResolve: resolve, onReject: reject, closeView: closeView })));
|
|
126
133
|
}), [openCreatePassword]);
|
|
127
|
-
const syncWallet = useCallback((
|
|
134
|
+
const syncWallet = useCallback((_d) => __awaiter(void 0, [_d], void 0, function* ({ walletConnector, activeAddress, expectedAddress }) {
|
|
128
135
|
if (!activeAddress) {
|
|
129
136
|
return;
|
|
130
137
|
}
|
|
@@ -103,7 +103,7 @@ var useInternalDynamicContext = require('../../context/DynamicContext/useDynamic
|
|
|
103
103
|
|
|
104
104
|
const DEFAULT_PRECISION = 10;
|
|
105
105
|
const FEE_REFRESH_INTERVAL = 20000;
|
|
106
|
-
const TransactionConfirmationView = ({ transaction, onError, onSuccess, mutation, onClickBack, walletConnector, onClickClose, title, displayPoweredByDynamicFooter = false, copykey, }) => {
|
|
106
|
+
const TransactionConfirmationView = ({ transaction, onError, onSuccess, mutation, onClickBack, walletConnector, onClickClose, title, displayPoweredByDynamicFooter = false, copykey, hideModal, }) => {
|
|
107
107
|
const { appName, appLogoUrl } = useInternalDynamicContext.useInternalDynamicContext();
|
|
108
108
|
const appOrigin = getAppOrigin.getAppOrigin();
|
|
109
109
|
const [isGasSponsored, setIsGasSponsored] = React.useState(false);
|
|
@@ -199,7 +199,7 @@ const TransactionConfirmationView = ({ transaction, onError, onSuccess, mutation
|
|
|
199
199
|
t,
|
|
200
200
|
currencySymbol,
|
|
201
201
|
]);
|
|
202
|
-
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 &&
|
|
202
|
+
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 &&
|
|
203
203
|
transaction.to === 'dyn_send_transaction.multiple_recipients'
|
|
204
204
|
? t('dyn_send_transaction.multiple_recipients')
|
|
205
205
|
: 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 !== undefined
|
|
@@ -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;
|
|
@@ -99,7 +99,7 @@ import { useInternalDynamicContext } from '../../context/DynamicContext/useDynam
|
|
|
99
99
|
|
|
100
100
|
const DEFAULT_PRECISION = 10;
|
|
101
101
|
const FEE_REFRESH_INTERVAL = 20000;
|
|
102
|
-
const TransactionConfirmationView = ({ transaction, onError, onSuccess, mutation, onClickBack, walletConnector, onClickClose, title, displayPoweredByDynamicFooter = false, copykey, }) => {
|
|
102
|
+
const TransactionConfirmationView = ({ transaction, onError, onSuccess, mutation, onClickBack, walletConnector, onClickClose, title, displayPoweredByDynamicFooter = false, copykey, hideModal, }) => {
|
|
103
103
|
const { appName, appLogoUrl } = useInternalDynamicContext();
|
|
104
104
|
const appOrigin = getAppOrigin();
|
|
105
105
|
const [isGasSponsored, setIsGasSponsored] = useState(false);
|
|
@@ -195,7 +195,7 @@ const TransactionConfirmationView = ({ transaction, onError, onSuccess, mutation
|
|
|
195
195
|
t,
|
|
196
196
|
currencySymbol,
|
|
197
197
|
]);
|
|
198
|
-
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 &&
|
|
198
|
+
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 &&
|
|
199
199
|
transaction.to === 'dyn_send_transaction.multiple_recipients'
|
|
200
200
|
? t('dyn_send_transaction.multiple_recipients')
|
|
201
201
|
: 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 !== undefined
|