@dynamic-labs/sdk-react-core 1.0.0-alpha.6 → 1.0.0-alpha.7
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 +20 -0
- package/package.cjs +2 -2
- package/package.js +2 -2
- package/package.json +10 -10
- package/src/index.cjs +4 -2
- package/src/index.d.ts +1 -1
- package/src/index.js +2 -1
- package/src/lib/Main.cjs +18 -21
- package/src/lib/Main.js +18 -21
- package/src/lib/components/NeedHelpSection/NeedHelpSection.cjs +84 -5
- package/src/lib/components/NeedHelpSection/NeedHelpSection.js +85 -6
- package/src/lib/components/NetworkPicker/NetworkPicker.cjs +8 -6
- package/src/lib/components/NetworkPicker/NetworkPicker.d.ts +2 -1
- package/src/lib/components/NetworkPicker/NetworkPicker.js +8 -6
- package/src/lib/context/DynamicContext/DynamicContext.cjs +1 -4
- package/src/lib/context/DynamicContext/DynamicContext.js +1 -4
- package/src/lib/context/DynamicContext/types/index.d.ts +0 -1
- package/src/lib/data/api.cjs +2 -1
- package/src/lib/data/api.js +2 -1
- package/src/lib/layout/DynamicAuthLayout/Header/header.cjs +9 -11
- package/src/lib/layout/DynamicAuthLayout/Header/header.js +10 -12
- package/src/lib/locale/en/translation.cjs +7 -3
- package/src/lib/locale/en/translation.d.ts +6 -2
- package/src/lib/locale/en/translation.js +7 -3
- package/src/lib/modals/SignMessageConfirmationModal/getProperErrorMessage.cjs +1 -1
- package/src/lib/modals/SignMessageConfirmationModal/getProperErrorMessage.js +1 -1
- package/src/lib/styles/index.shadow.cjs +1 -1
- package/src/lib/styles/index.shadow.js +1 -1
- package/src/lib/utils/functions/findTurnkeyWallet/findTurnkeyWallet.cjs +1 -1
- package/src/lib/utils/functions/findTurnkeyWallet/findTurnkeyWallet.js +1 -1
- package/src/lib/utils/hooks/index.d.ts +1 -0
- package/src/lib/utils/hooks/multiWallet/useSyncPrimaryWallet/useSyncPrimaryWallet.cjs +1 -6
- package/src/lib/utils/hooks/multiWallet/useSyncPrimaryWallet/useSyncPrimaryWallet.js +1 -6
- package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.cjs +3 -0
- package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.js +3 -0
- package/src/lib/utils/hooks/useConnectedWalletsNetworkValidation/useConnectedWalletsNetworkValidation.cjs +7 -8
- package/src/lib/utils/hooks/useConnectedWalletsNetworkValidation/useConnectedWalletsNetworkValidation.js +7 -8
- package/src/lib/utils/hooks/useEventListener/useEventListener.cjs +2 -1
- package/src/lib/utils/hooks/useEventListener/useEventListener.js +2 -1
- package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.cjs +9 -5
- package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.d.ts +0 -1
- package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.js +10 -6
- package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.cjs +20 -21
- package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.d.ts +1 -2
- package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.js +20 -21
- package/src/lib/utils/hooks/useWalletsConnectionState/useWalletsConnectionState.cjs +32 -9
- package/src/lib/utils/hooks/useWalletsConnectionState/useWalletsConnectionState.d.ts +0 -1
- package/src/lib/utils/hooks/useWalletsConnectionState/useWalletsConnectionState.js +33 -10
- package/src/lib/views/CollectUserDataView/CollectUserDataView.cjs +1 -1
- package/src/lib/views/CollectUserDataView/CollectUserDataView.js +1 -1
- package/src/lib/views/NetworkNotSupported/NetworkNotSupported.cjs +6 -3
- package/src/lib/views/NetworkNotSupported/NetworkNotSupported.js +6 -3
- package/src/lib/views/Passkey/PasskeyIntroView/PasskeyIntroView.cjs +1 -1
- package/src/lib/views/Passkey/PasskeyIntroView/PasskeyIntroView.js +1 -1
- package/src/lib/views/Passkey/utils/passkeyRecovery/passkeyRecovery.cjs +1 -1
- package/src/lib/views/Passkey/utils/passkeyRecovery/passkeyRecovery.js +1 -1
- package/src/lib/views/QrCodeView/QrCodeContainer/QrCodeContainer.cjs +1 -1
- package/src/lib/views/QrCodeView/QrCodeContainer/QrCodeContainer.js +1 -1
- package/src/lib/views/TransactionConfirmationView/TransactionConfirmationView.cjs +11 -1
- package/src/lib/views/TransactionConfirmationView/TransactionConfirmationView.js +11 -1
- package/src/lib/views/TransactionConfirmationView/helpers/transactionErrorMessage.cjs +3 -0
- package/src/lib/views/TransactionConfirmationView/helpers/transactionErrorMessage.js +4 -1
- package/src/lib/widgets/DynamicWidget/components/ActiveWalletInformation/ActiveWalletInformation.cjs +3 -3
- package/src/lib/widgets/DynamicWidget/components/ActiveWalletInformation/ActiveWalletInformation.js +3 -3
- package/src/lib/widgets/DynamicWidget/components/DynamicNav/DynamicNav.cjs +2 -2
- package/src/lib/widgets/DynamicWidget/components/DynamicNav/DynamicNav.js +2 -2
- package/src/lib/widgets/DynamicWidget/components/EmailOTPConnectorPendingSignModalContent/EmailOTPConnectorPendingSignModalContent.cjs +1 -2
- package/src/lib/widgets/DynamicWidget/components/EmailOTPConnectorPendingSignModalContent/EmailOTPConnectorPendingSignModalContent.js +1 -2
- package/src/lib/widgets/DynamicWidget/components/Wallet/Wallet.cjs +1 -2
- package/src/lib/widgets/DynamicWidget/components/Wallet/Wallet.js +1 -2
- package/src/lib/widgets/DynamicWidget/prompts/PendingAccountSwitchModal/SwitchOrUseActiveAccountView/SwitchOrUseActiveAccountView.cjs +1 -3
- package/src/lib/widgets/DynamicWidget/prompts/PendingAccountSwitchModal/SwitchOrUseActiveAccountView/SwitchOrUseActiveAccountView.js +1 -3
- package/src/lib/widgets/DynamicWidget/prompts/QrCodeModalView/QrCodeModalView.cjs +1 -1
- package/src/lib/widgets/DynamicWidget/prompts/QrCodeModalView/QrCodeModalView.js +1 -1
- package/src/lib/widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs +16 -6
- package/src/lib/widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.js +16 -6
|
@@ -68,7 +68,7 @@ var UserAddress = require('../../components/UserAddress/UserAddress.cjs');
|
|
|
68
68
|
var SelectNetworkButton = require('../../components/SelectNetworkButton/SelectNetworkButton.cjs');
|
|
69
69
|
|
|
70
70
|
const NetworkNotSupported = () => {
|
|
71
|
-
const {
|
|
71
|
+
const { onboardingImageUrl, selectedWalletConnector: walletConnector, connectedWallets, primaryWallet, isFullyConnected, setShowAuthFlow, bridgeChainsToConnect, } = useInternalDynamicContext.useInternalDynamicContext();
|
|
72
72
|
const { t } = reactI18next.useTranslation();
|
|
73
73
|
// Refresh selectedWalletConnector network when primaryWallet or connectedWallets updates
|
|
74
74
|
const { data: walletConnectorNetwork } = usePromise.usePromise(() => walletConnector === null || walletConnector === void 0 ? void 0 : walletConnector.getNetwork(), { deps: [primaryWallet, walletConnector, connectedWallets] });
|
|
@@ -108,10 +108,13 @@ const NetworkNotSupported = () => {
|
|
|
108
108
|
}
|
|
109
109
|
});
|
|
110
110
|
const evmNetworks = walletConnector.evmNetworks || [];
|
|
111
|
-
const _isSupportedNetwork = isSupportedNetwork.isSupportedNetwork({
|
|
111
|
+
const _isSupportedNetwork = isSupportedNetwork.isSupportedNetwork({
|
|
112
|
+
network: walletConnectorNetwork,
|
|
113
|
+
walletConnector,
|
|
114
|
+
});
|
|
112
115
|
return (jsxRuntime.jsxs("div", { className: 'network-not-supported', "data-testid": 'network-not-supported', children: [onboardingImageUrl && (jsxRuntime.jsx("img", { className: 'network-not-supported__main-img', src: onboardingImageUrl, alt: 'onboarding' })), !_isSupportedNetwork && (jsxRuntime.jsx(ErrorContainer.ErrorContainer, { variant: 'info', withIcon: false, className: 'network-not-supported__error--not-supported', children: t('dyn_network_not_supported.warning_message') })), jsxRuntime.jsxs("div", { className: classNames.classNames('network-not-supported__content-container', {
|
|
113
116
|
'network-not-supported__content-container--error': !_isSupportedNetwork,
|
|
114
|
-
}), children: [jsxRuntime.jsx("div", { className: 'network-not-supported__img-container', children: jsxRuntime.jsx(walletBook.WalletIcon, { style: { height: 64, width: 64 }, walletKey: walletConnector.key }) }), jsxRuntime.jsx(UserAddress.UserAddress, { walletConnector: walletConnector }), jsxRuntime.jsx("div", { className: 'network-not-supported__network-container', children: evmNetworks.length > 1 && (jsxRuntime.jsx(NetworkPicker.NetworkPicker, { evmNetworks: evmNetworks, connector: walletConnector, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, showNetworkName: true, buttonClassName: 'network-not-supported__network-picker-button', mainClassName: 'network-not-supported__network-picker' })) }), jsxRuntime.jsx("div", { className: 'network-not-supported__welcome-container', children: jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', children: t('dyn_network_not_supported.subtitle') }) }), evmNetworks.length === 1 && (jsxRuntime.jsx(SelectNetworkButton.SelectNetworkButton, { onClick: onSelectNetworkButtonClick, networkId: evmNetworks[0].networkId, networkName: evmNetworks[0].vanityName || evmNetworks[0].name, networkIconUrl: evmNetworks[0].iconUrls[0] }))] })] }));
|
|
117
|
+
}), children: [jsxRuntime.jsx("div", { className: 'network-not-supported__img-container', children: jsxRuntime.jsx(walletBook.WalletIcon, { style: { height: 64, width: 64 }, walletKey: walletConnector.key }) }), jsxRuntime.jsx(UserAddress.UserAddress, { walletConnector: walletConnector }), jsxRuntime.jsx("div", { className: 'network-not-supported__network-container', children: evmNetworks.length > 1 && (jsxRuntime.jsx(NetworkPicker.NetworkPicker, { currentNetwork: walletConnectorNetwork, evmNetworks: evmNetworks, connector: walletConnector, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, showNetworkName: true, buttonClassName: 'network-not-supported__network-picker-button', mainClassName: 'network-not-supported__network-picker' })) }), jsxRuntime.jsx("div", { className: 'network-not-supported__welcome-container', children: jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', children: t('dyn_network_not_supported.subtitle') }) }), evmNetworks.length === 1 && (jsxRuntime.jsx(SelectNetworkButton.SelectNetworkButton, { onClick: onSelectNetworkButtonClick, networkId: evmNetworks[0].networkId, networkName: evmNetworks[0].vanityName || evmNetworks[0].name, networkIconUrl: evmNetworks[0].iconUrls[0] }))] })] }));
|
|
115
118
|
};
|
|
116
119
|
|
|
117
120
|
exports.NetworkNotSupported = NetworkNotSupported;
|
|
@@ -64,7 +64,7 @@ import { UserAddress } from '../../components/UserAddress/UserAddress.js';
|
|
|
64
64
|
import { SelectNetworkButton } from '../../components/SelectNetworkButton/SelectNetworkButton.js';
|
|
65
65
|
|
|
66
66
|
const NetworkNotSupported = () => {
|
|
67
|
-
const {
|
|
67
|
+
const { onboardingImageUrl, selectedWalletConnector: walletConnector, connectedWallets, primaryWallet, isFullyConnected, setShowAuthFlow, bridgeChainsToConnect, } = useInternalDynamicContext();
|
|
68
68
|
const { t } = useTranslation();
|
|
69
69
|
// Refresh selectedWalletConnector network when primaryWallet or connectedWallets updates
|
|
70
70
|
const { data: walletConnectorNetwork } = usePromise(() => walletConnector === null || walletConnector === void 0 ? void 0 : walletConnector.getNetwork(), { deps: [primaryWallet, walletConnector, connectedWallets] });
|
|
@@ -104,10 +104,13 @@ const NetworkNotSupported = () => {
|
|
|
104
104
|
}
|
|
105
105
|
});
|
|
106
106
|
const evmNetworks = walletConnector.evmNetworks || [];
|
|
107
|
-
const _isSupportedNetwork = isSupportedNetwork({
|
|
107
|
+
const _isSupportedNetwork = isSupportedNetwork({
|
|
108
|
+
network: walletConnectorNetwork,
|
|
109
|
+
walletConnector,
|
|
110
|
+
});
|
|
108
111
|
return (jsxs("div", { className: 'network-not-supported', "data-testid": 'network-not-supported', children: [onboardingImageUrl && (jsx("img", { className: 'network-not-supported__main-img', src: onboardingImageUrl, alt: 'onboarding' })), !_isSupportedNetwork && (jsx(ErrorContainer, { variant: 'info', withIcon: false, className: 'network-not-supported__error--not-supported', children: t('dyn_network_not_supported.warning_message') })), jsxs("div", { className: classNames('network-not-supported__content-container', {
|
|
109
112
|
'network-not-supported__content-container--error': !_isSupportedNetwork,
|
|
110
|
-
}), children: [jsx("div", { className: 'network-not-supported__img-container', children: jsx(WalletIcon, { style: { height: 64, width: 64 }, walletKey: walletConnector.key }) }), jsx(UserAddress, { walletConnector: walletConnector }), jsx("div", { className: 'network-not-supported__network-container', children: evmNetworks.length > 1 && (jsx(NetworkPicker, { evmNetworks: evmNetworks, connector: walletConnector, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, showNetworkName: true, buttonClassName: 'network-not-supported__network-picker-button', mainClassName: 'network-not-supported__network-picker' })) }), jsx("div", { className: 'network-not-supported__welcome-container', children: jsx(Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', children: t('dyn_network_not_supported.subtitle') }) }), evmNetworks.length === 1 && (jsx(SelectNetworkButton, { onClick: onSelectNetworkButtonClick, networkId: evmNetworks[0].networkId, networkName: evmNetworks[0].vanityName || evmNetworks[0].name, networkIconUrl: evmNetworks[0].iconUrls[0] }))] })] }));
|
|
113
|
+
}), children: [jsx("div", { className: 'network-not-supported__img-container', children: jsx(WalletIcon, { style: { height: 64, width: 64 }, walletKey: walletConnector.key }) }), jsx(UserAddress, { walletConnector: walletConnector }), jsx("div", { className: 'network-not-supported__network-container', children: evmNetworks.length > 1 && (jsx(NetworkPicker, { currentNetwork: walletConnectorNetwork, evmNetworks: evmNetworks, connector: walletConnector, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, showNetworkName: true, buttonClassName: 'network-not-supported__network-picker-button', mainClassName: 'network-not-supported__network-picker' })) }), jsx("div", { className: 'network-not-supported__welcome-container', children: jsx(Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', children: t('dyn_network_not_supported.subtitle') }) }), evmNetworks.length === 1 && (jsx(SelectNetworkButton, { onClick: onSelectNetworkButtonClick, networkId: evmNetworks[0].networkId, networkName: evmNetworks[0].vanityName || evmNetworks[0].name, networkIconUrl: evmNetworks[0].iconUrls[0] }))] })] }));
|
|
111
114
|
};
|
|
112
115
|
|
|
113
116
|
export { NetworkNotSupported };
|
|
@@ -116,7 +116,7 @@ const PasskeyIntroView = ({ createEmbeddedWalletMutation = createEmbeddedWalletW
|
|
|
116
116
|
index$1.storeAuthToken(jwt);
|
|
117
117
|
setUser(createUserProfile.createUserProfile(decodedJwt));
|
|
118
118
|
setShowAuthFlow(false);
|
|
119
|
-
const turnkeyVerifiedCredentials = (_a = decodedJwt === null || decodedJwt === void 0 ? void 0 : decodedJwt.verifiedCredentials) === null || _a === void 0 ? void 0 : _a.find(({ walletName }) => walletName === 'turnkey');
|
|
119
|
+
const turnkeyVerifiedCredentials = (_a = decodedJwt === null || decodedJwt === void 0 ? void 0 : decodedJwt.verifiedCredentials) === null || _a === void 0 ? void 0 : _a.find(({ walletName }) => walletName === null || walletName === void 0 ? void 0 : walletName.startsWith('turnkey'));
|
|
120
120
|
setCallback('embeddedWalletCreated', {
|
|
121
121
|
email: (turnkeyVerifiedCredentials === null || turnkeyVerifiedCredentials === void 0 ? void 0 : turnkeyVerifiedCredentials.email) || '',
|
|
122
122
|
verifiedCredential: turnkeyVerifiedCredentials,
|
|
@@ -112,7 +112,7 @@ const PasskeyIntroView = ({ createEmbeddedWalletMutation = createEmbeddedWalletW
|
|
|
112
112
|
storeAuthToken(jwt);
|
|
113
113
|
setUser(createUserProfile(decodedJwt));
|
|
114
114
|
setShowAuthFlow(false);
|
|
115
|
-
const turnkeyVerifiedCredentials = (_a = decodedJwt === null || decodedJwt === void 0 ? void 0 : decodedJwt.verifiedCredentials) === null || _a === void 0 ? void 0 : _a.find(({ walletName }) => walletName === 'turnkey');
|
|
115
|
+
const turnkeyVerifiedCredentials = (_a = decodedJwt === null || decodedJwt === void 0 ? void 0 : decodedJwt.verifiedCredentials) === null || _a === void 0 ? void 0 : _a.find(({ walletName }) => walletName === null || walletName === void 0 ? void 0 : walletName.startsWith('turnkey'));
|
|
116
116
|
setCallback('embeddedWalletCreated', {
|
|
117
117
|
email: (turnkeyVerifiedCredentials === null || turnkeyVerifiedCredentials === void 0 ? void 0 : turnkeyVerifiedCredentials.email) || '',
|
|
118
118
|
verifiedCredential: turnkeyVerifiedCredentials,
|
|
@@ -95,7 +95,7 @@ const completePasskeyRecovery = ({ authToken, userEmail, environmentId, wallet,
|
|
|
95
95
|
}
|
|
96
96
|
const connector = wallet.connector;
|
|
97
97
|
connector.setEmail(userEmail);
|
|
98
|
-
const organizationId = (_f = (_e = (_d = decodedJwt.verifiedCredentials) === null || _d === void 0 ? void 0 : _d.find(({ walletName }) => walletName === 'turnkey')) === null || _e === void 0 ? void 0 : _e.walletProperties) === null || _f === void 0 ? void 0 : _f.turnkeySubOrganizationId;
|
|
98
|
+
const organizationId = (_f = (_e = (_d = decodedJwt.verifiedCredentials) === null || _d === void 0 ? void 0 : _d.find(({ walletName }) => walletName === null || walletName === void 0 ? void 0 : walletName.startsWith('turnkey'))) === null || _e === void 0 ? void 0 : _e.walletProperties) === null || _f === void 0 ? void 0 : _f.turnkeySubOrganizationId;
|
|
99
99
|
if (!organizationId) {
|
|
100
100
|
throw new utils.DynamicError('Invalid token!');
|
|
101
101
|
}
|
|
@@ -91,7 +91,7 @@ const completePasskeyRecovery = ({ authToken, userEmail, environmentId, wallet,
|
|
|
91
91
|
}
|
|
92
92
|
const connector = wallet.connector;
|
|
93
93
|
connector.setEmail(userEmail);
|
|
94
|
-
const organizationId = (_f = (_e = (_d = decodedJwt.verifiedCredentials) === null || _d === void 0 ? void 0 : _d.find(({ walletName }) => walletName === 'turnkey')) === null || _e === void 0 ? void 0 : _e.walletProperties) === null || _f === void 0 ? void 0 : _f.turnkeySubOrganizationId;
|
|
94
|
+
const organizationId = (_f = (_e = (_d = decodedJwt.verifiedCredentials) === null || _d === void 0 ? void 0 : _d.find(({ walletName }) => walletName === null || walletName === void 0 ? void 0 : walletName.startsWith('turnkey'))) === null || _e === void 0 ? void 0 : _e.walletProperties) === null || _f === void 0 ? void 0 : _f.turnkeySubOrganizationId;
|
|
95
95
|
if (!organizationId) {
|
|
96
96
|
throw new DynamicError('Invalid token!');
|
|
97
97
|
}
|
|
@@ -60,10 +60,10 @@ require('../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCa
|
|
|
60
60
|
var CopyButton = require('../../../components/CopyButton/CopyButton.cjs');
|
|
61
61
|
require('../../../components/InlineWidget/InlineWidget.cjs');
|
|
62
62
|
require('../../../components/MenuList/Dropdown/Dropdown.cjs');
|
|
63
|
+
var TextButton = require('../../../components/TextButton/TextButton.cjs');
|
|
63
64
|
require('../../../components/Popper/Popper/Popper.cjs');
|
|
64
65
|
require('../../../components/Popper/PopperContext/PopperContext.cjs');
|
|
65
66
|
require('react-focus-lock');
|
|
66
|
-
var TextButton = require('../../../components/TextButton/TextButton.cjs');
|
|
67
67
|
|
|
68
68
|
const QrCodeContainer = ({ accentColor, walletKey, walletName, qrcodeValue, Icon: WalletIcon, showCopyToClipboardButton = false, desktopUri, showQrCodeMessage, }) => (jsxRuntime.jsxs("div", { className: classNames.classNames('qrcode-container__container', {
|
|
69
69
|
'qrcode-container__container--message': showQrCodeMessage,
|
|
@@ -56,10 +56,10 @@ import '../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCar
|
|
|
56
56
|
import { CopyButton } from '../../../components/CopyButton/CopyButton.js';
|
|
57
57
|
import '../../../components/InlineWidget/InlineWidget.js';
|
|
58
58
|
import '../../../components/MenuList/Dropdown/Dropdown.js';
|
|
59
|
+
import { TextButton } from '../../../components/TextButton/TextButton.js';
|
|
59
60
|
import '../../../components/Popper/Popper/Popper.js';
|
|
60
61
|
import '../../../components/Popper/PopperContext/PopperContext.js';
|
|
61
62
|
import 'react-focus-lock';
|
|
62
|
-
import { TextButton } from '../../../components/TextButton/TextButton.js';
|
|
63
63
|
|
|
64
64
|
const QrCodeContainer = ({ accentColor, walletKey, walletName, qrcodeValue, Icon: WalletIcon, showCopyToClipboardButton = false, desktopUri, showQrCodeMessage, }) => (jsxs("div", { className: classNames('qrcode-container__container', {
|
|
65
65
|
'qrcode-container__container--message': showQrCodeMessage,
|
|
@@ -155,6 +155,8 @@ const TransactionConfirmationView = ({ transaction, mutation, onError, onSuccess
|
|
|
155
155
|
return total > balance;
|
|
156
156
|
}, [balance, total]);
|
|
157
157
|
const alert = React.useMemo(() => {
|
|
158
|
+
if (isTransactionLoading || Boolean(errorMessage))
|
|
159
|
+
return null;
|
|
158
160
|
if (utils.TransactionGasCannotBeSponsoredError.isInstance(transactionError)) {
|
|
159
161
|
return (jsxRuntime.jsx(Alert.Alert, { icon: 'error', variant: 'error', children: t('dyn_send_transaction.error_message.gas_not_sponsored') }));
|
|
160
162
|
}
|
|
@@ -166,7 +168,15 @@ const TransactionConfirmationView = ({ transaction, mutation, onError, onSuccess
|
|
|
166
168
|
amountLeft,
|
|
167
169
|
currencySymbol,
|
|
168
170
|
}) }));
|
|
169
|
-
}, [
|
|
171
|
+
}, [
|
|
172
|
+
currencySymbol,
|
|
173
|
+
hasInsufficientFunds,
|
|
174
|
+
missingFunds,
|
|
175
|
+
t,
|
|
176
|
+
transactionError,
|
|
177
|
+
isTransactionLoading,
|
|
178
|
+
errorMessage,
|
|
179
|
+
]);
|
|
170
180
|
return (jsxRuntime.jsxs(TransactionConfirmationPageLayout.TransactionConfirmationPageLayout, { onClickBack: onClickBack, onClickClose: onClickClose, title: title, appOrigin: appOrigin, appName: appName, appLogoUrl: appLogoUrl, isLoading: isLoading, onClickSend: () => send(), displayPoweredByDynamicFooter: displayPoweredByDynamicFooter, disableSendButton: isTransactionLoading || hasInsufficientFunds, error: errorMessage, alert: alert, children: [jsxRuntime.jsx(TransactionRow.TransactionRow, { label: t('dyn_send_transaction.confirmation.data.from'), isLoading: isTransactionFromAddressLoading, title: transactionFromAddress, children: shortenWalletAddress.shortenWalletAddress(transactionFromAddress, 4, 4) }), jsxRuntime.jsx(TransactionRow.TransactionRow, { label: t('dyn_send_transaction.confirmation.data.to'), isLoading: isTransactionToAddressLoading, title: transactionToAddress, children: transactionToAddress &&
|
|
171
181
|
shortenWalletAddress.shortenWalletAddress(transactionToAddress, 4, 4) }), jsxRuntime.jsx(TransactionRow.TransactionRow, { label: t('dyn_send_transaction.confirmation.data.amount'), isLoading: isTransactionValueLoading, isEmpty: !transactionValue, title: transactionValue ? formatBigNumber.formatBigNumber(transactionValue) : undefined, suffix: currencySymbol, icon: chainIcon, dataTestId: 'transaction-amount', children: transactionValue ? formatBigNumber.formatBigNumber(transactionValue, 10) : 0 }), !isGasSponsored && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(TransactionRow.TransactionRow, { label: isGasEstimated
|
|
172
182
|
? t('dyn_send_transaction.confirmation.data.gas_estimate')
|
|
@@ -151,6 +151,8 @@ const TransactionConfirmationView = ({ transaction, mutation, onError, onSuccess
|
|
|
151
151
|
return total > balance;
|
|
152
152
|
}, [balance, total]);
|
|
153
153
|
const alert = useMemo(() => {
|
|
154
|
+
if (isTransactionLoading || Boolean(errorMessage))
|
|
155
|
+
return null;
|
|
154
156
|
if (TransactionGasCannotBeSponsoredError.isInstance(transactionError)) {
|
|
155
157
|
return (jsx(Alert, { icon: 'error', variant: 'error', children: t('dyn_send_transaction.error_message.gas_not_sponsored') }));
|
|
156
158
|
}
|
|
@@ -162,7 +164,15 @@ const TransactionConfirmationView = ({ transaction, mutation, onError, onSuccess
|
|
|
162
164
|
amountLeft,
|
|
163
165
|
currencySymbol,
|
|
164
166
|
}) }));
|
|
165
|
-
}, [
|
|
167
|
+
}, [
|
|
168
|
+
currencySymbol,
|
|
169
|
+
hasInsufficientFunds,
|
|
170
|
+
missingFunds,
|
|
171
|
+
t,
|
|
172
|
+
transactionError,
|
|
173
|
+
isTransactionLoading,
|
|
174
|
+
errorMessage,
|
|
175
|
+
]);
|
|
166
176
|
return (jsxs(TransactionConfirmationPageLayout, { onClickBack: onClickBack, onClickClose: onClickClose, title: title, appOrigin: appOrigin, appName: appName, appLogoUrl: appLogoUrl, isLoading: isLoading, onClickSend: () => send(), displayPoweredByDynamicFooter: displayPoweredByDynamicFooter, disableSendButton: isTransactionLoading || hasInsufficientFunds, error: errorMessage, alert: alert, children: [jsx(TransactionRow, { label: t('dyn_send_transaction.confirmation.data.from'), isLoading: isTransactionFromAddressLoading, title: transactionFromAddress, children: shortenWalletAddress(transactionFromAddress, 4, 4) }), jsx(TransactionRow, { label: t('dyn_send_transaction.confirmation.data.to'), isLoading: isTransactionToAddressLoading, title: transactionToAddress, children: transactionToAddress &&
|
|
167
177
|
shortenWalletAddress(transactionToAddress, 4, 4) }), jsx(TransactionRow, { label: t('dyn_send_transaction.confirmation.data.amount'), isLoading: isTransactionValueLoading, isEmpty: !transactionValue, title: transactionValue ? formatBigNumber(transactionValue) : undefined, suffix: currencySymbol, icon: chainIcon, dataTestId: 'transaction-amount', children: transactionValue ? formatBigNumber(transactionValue, 10) : 0 }), !isGasSponsored && (jsxs(Fragment, { children: [jsx(TransactionRow, { label: isGasEstimated
|
|
168
178
|
? t('dyn_send_transaction.confirmation.data.gas_estimate')
|
|
@@ -31,6 +31,9 @@ const transactionErrorMessage = (error) => {
|
|
|
31
31
|
if (utils.TransactionGasCannotBeSponsoredError.isInstance(error)) {
|
|
32
32
|
return;
|
|
33
33
|
}
|
|
34
|
+
if (utils.InsufficientFundsError.isInstance(error)) {
|
|
35
|
+
return errorCodesMapping.INSUFFICIENT_FUNDS;
|
|
36
|
+
}
|
|
34
37
|
const { code } = error;
|
|
35
38
|
const defaultMessage = 'Something went wrong.';
|
|
36
39
|
// turnkey request errors
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TransactionGasCannotBeSponsoredError } from '@dynamic-labs/utils';
|
|
1
|
+
import { TransactionGasCannotBeSponsoredError, InsufficientFundsError } from '@dynamic-labs/utils';
|
|
2
2
|
import '@dynamic-labs/sdk-api';
|
|
3
3
|
import { logger } from '../../../shared/logger.js';
|
|
4
4
|
import '@dynamic-labs/iconic';
|
|
@@ -27,6 +27,9 @@ const transactionErrorMessage = (error) => {
|
|
|
27
27
|
if (TransactionGasCannotBeSponsoredError.isInstance(error)) {
|
|
28
28
|
return;
|
|
29
29
|
}
|
|
30
|
+
if (InsufficientFundsError.isInstance(error)) {
|
|
31
|
+
return errorCodesMapping.INSUFFICIENT_FUNDS;
|
|
32
|
+
}
|
|
30
33
|
const { code } = error;
|
|
31
34
|
const defaultMessage = 'Something went wrong.';
|
|
32
35
|
// turnkey request errors
|
package/src/lib/widgets/DynamicWidget/components/ActiveWalletInformation/ActiveWalletInformation.cjs
CHANGED
|
@@ -93,8 +93,8 @@ const ActiveWalletInformation = () => {
|
|
|
93
93
|
{
|
|
94
94
|
Icon: null,
|
|
95
95
|
callback: () => setDynamicWidgetView('manage-passkeys'),
|
|
96
|
-
hide: !(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.name)
|
|
97
|
-
walletConnectorCore.normalizeWalletName(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.name)
|
|
96
|
+
hide: !((primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.name) &&
|
|
97
|
+
walletConnectorCore.normalizeWalletName(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.name).startsWith('turnkey')),
|
|
98
98
|
text: 'My passkeys',
|
|
99
99
|
},
|
|
100
100
|
{
|
|
@@ -115,7 +115,7 @@ const ActiveWalletInformation = () => {
|
|
|
115
115
|
[];
|
|
116
116
|
return (jsxRuntime.jsxs("div", { className: 'active-wallet-information-container', "data-testid": 'active-wallet-information', children: [jsxRuntime.jsxs("div", { className: 'active-wallet-information', children: [jsxRuntime.jsxs("div", { className: 'active-wallet-information__header', children: [jsxRuntime.jsx("div", { className: 'active-wallet-information__avatar--centered', children: (nameService === null || nameService === void 0 ? void 0 : nameService.avatar) ? (jsxRuntime.jsx("div", { className: 'active-wallet-information__avatar', children: jsxRuntime.jsx("img", { src: nameService === null || nameService === void 0 ? void 0 : nameService.avatar, alt: '' }) })) : (jsxRuntime.jsx("div", { className: 'active-wallet-information__wallet-img', children: jsxRuntime.jsx(AuthProviderIcon.AuthProviderIcon, { jwt: authToken, iconSize: ICON_SIZE, showStatus: true }) })) }), jsxRuntime.jsxs("div", { className: 'active-wallet-information__details', children: [jsxRuntime.jsxs("div", { className: classNames.classNames('active-wallet-information__actions-container', {
|
|
117
117
|
'active-wallet-information__actions-container--centered': !(nameService === null || nameService === void 0 ? void 0 : nameService.name),
|
|
118
|
-
}), children: [jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx(Typography.Typography, { className: 'active-wallet-information__handle', color: 'primary', variant: 'body_normal', children: nameService === null || nameService === void 0 ? void 0 : nameService.name }), jsxRuntime.jsx(Typography.Typography, { className: 'active-wallet-information__address', weight: (nameService === null || nameService === void 0 ? void 0 : nameService.name) ? 'regular' : 'medium', variant: (nameService === null || nameService === void 0 ? void 0 : nameService.name) ? 'body_small' : 'body_normal', color: (nameService === null || nameService === void 0 ? void 0 : nameService.name) ? 'secondary' : 'primary', children: shortenWalletAddress.shortenWalletAddress(address, 4, 4) })] }), jsxRuntime.jsx(DotsMenu.DotsMenu, { "data-testid": 'dots-menu', options: options, buttonClassName: 'active-wallet-information__dots-menu', buttonClassNameWithOpenMenu: 'active-wallet-information__dots-menu' })] }), jsxRuntime.jsx(NetworkPicker.NetworkPicker, { connector: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, mainClassName: 'active-wallet-information__network-picker', buttonClassName: 'active-wallet-information__network-picker-button', evmNetworks: evmNetworks, showNetworkName: true })] })] }), testnet && (jsxRuntime.jsx(Alert.Alert, { variant: 'warning', children: t('dyn_active_wallet_info.testnet_warning') }))] }), jsxRuntime.jsxs("div", { className: 'balance-container', children: [jsxRuntime.jsx(Typography.Typography, { color: 'secondary', variant: 'body_small', children: "Balance" }), primaryWallet && (jsxRuntime.jsx(Balance.Balance, { className: 'balance-container__balance', connector: primaryWallet.connector, address: primaryWallet.address, network: network }))] })] }));
|
|
118
|
+
}), children: [jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx(Typography.Typography, { className: 'active-wallet-information__handle', color: 'primary', variant: 'body_normal', children: nameService === null || nameService === void 0 ? void 0 : nameService.name }), jsxRuntime.jsx(Typography.Typography, { className: 'active-wallet-information__address', weight: (nameService === null || nameService === void 0 ? void 0 : nameService.name) ? 'regular' : 'medium', variant: (nameService === null || nameService === void 0 ? void 0 : nameService.name) ? 'body_small' : 'body_normal', color: (nameService === null || nameService === void 0 ? void 0 : nameService.name) ? 'secondary' : 'primary', children: shortenWalletAddress.shortenWalletAddress(address, 4, 4) })] }), jsxRuntime.jsx(DotsMenu.DotsMenu, { "data-testid": 'dots-menu', options: options, buttonClassName: 'active-wallet-information__dots-menu', buttonClassNameWithOpenMenu: 'active-wallet-information__dots-menu' })] }), jsxRuntime.jsx(NetworkPicker.NetworkPicker, { currentNetwork: network, connector: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, mainClassName: 'active-wallet-information__network-picker', buttonClassName: 'active-wallet-information__network-picker-button', evmNetworks: evmNetworks, showNetworkName: true })] })] }), testnet && (jsxRuntime.jsx(Alert.Alert, { variant: 'warning', children: t('dyn_active_wallet_info.testnet_warning') }))] }), jsxRuntime.jsxs("div", { className: 'balance-container', children: [jsxRuntime.jsx(Typography.Typography, { color: 'secondary', variant: 'body_small', children: "Balance" }), primaryWallet && (jsxRuntime.jsx(Balance.Balance, { className: 'balance-container__balance', connector: primaryWallet.connector, address: primaryWallet.address, network: network }))] })] }));
|
|
119
119
|
};
|
|
120
120
|
|
|
121
121
|
exports.ActiveWalletInformation = ActiveWalletInformation;
|
package/src/lib/widgets/DynamicWidget/components/ActiveWalletInformation/ActiveWalletInformation.js
CHANGED
|
@@ -89,8 +89,8 @@ const ActiveWalletInformation = () => {
|
|
|
89
89
|
{
|
|
90
90
|
Icon: null,
|
|
91
91
|
callback: () => setDynamicWidgetView('manage-passkeys'),
|
|
92
|
-
hide: !(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.name)
|
|
93
|
-
normalizeWalletName(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.name)
|
|
92
|
+
hide: !((primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.name) &&
|
|
93
|
+
normalizeWalletName(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.name).startsWith('turnkey')),
|
|
94
94
|
text: 'My passkeys',
|
|
95
95
|
},
|
|
96
96
|
{
|
|
@@ -111,7 +111,7 @@ const ActiveWalletInformation = () => {
|
|
|
111
111
|
[];
|
|
112
112
|
return (jsxs("div", { className: 'active-wallet-information-container', "data-testid": 'active-wallet-information', children: [jsxs("div", { className: 'active-wallet-information', children: [jsxs("div", { className: 'active-wallet-information__header', children: [jsx("div", { className: 'active-wallet-information__avatar--centered', children: (nameService === null || nameService === void 0 ? void 0 : nameService.avatar) ? (jsx("div", { className: 'active-wallet-information__avatar', children: jsx("img", { src: nameService === null || nameService === void 0 ? void 0 : nameService.avatar, alt: '' }) })) : (jsx("div", { className: 'active-wallet-information__wallet-img', children: jsx(AuthProviderIcon, { jwt: authToken, iconSize: ICON_SIZE, showStatus: true }) })) }), jsxs("div", { className: 'active-wallet-information__details', children: [jsxs("div", { className: classNames('active-wallet-information__actions-container', {
|
|
113
113
|
'active-wallet-information__actions-container--centered': !(nameService === null || nameService === void 0 ? void 0 : nameService.name),
|
|
114
|
-
}), children: [jsxs("div", { children: [jsx(Typography, { className: 'active-wallet-information__handle', color: 'primary', variant: 'body_normal', children: nameService === null || nameService === void 0 ? void 0 : nameService.name }), jsx(Typography, { className: 'active-wallet-information__address', weight: (nameService === null || nameService === void 0 ? void 0 : nameService.name) ? 'regular' : 'medium', variant: (nameService === null || nameService === void 0 ? void 0 : nameService.name) ? 'body_small' : 'body_normal', color: (nameService === null || nameService === void 0 ? void 0 : nameService.name) ? 'secondary' : 'primary', children: shortenWalletAddress(address, 4, 4) })] }), jsx(DotsMenu, { "data-testid": 'dots-menu', options: options, buttonClassName: 'active-wallet-information__dots-menu', buttonClassNameWithOpenMenu: 'active-wallet-information__dots-menu' })] }), jsx(NetworkPicker, { connector: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, mainClassName: 'active-wallet-information__network-picker', buttonClassName: 'active-wallet-information__network-picker-button', evmNetworks: evmNetworks, showNetworkName: true })] })] }), testnet && (jsx(Alert, { variant: 'warning', children: t('dyn_active_wallet_info.testnet_warning') }))] }), jsxs("div", { className: 'balance-container', children: [jsx(Typography, { color: 'secondary', variant: 'body_small', children: "Balance" }), primaryWallet && (jsx(Balance, { className: 'balance-container__balance', connector: primaryWallet.connector, address: primaryWallet.address, network: network }))] })] }));
|
|
114
|
+
}), children: [jsxs("div", { children: [jsx(Typography, { className: 'active-wallet-information__handle', color: 'primary', variant: 'body_normal', children: nameService === null || nameService === void 0 ? void 0 : nameService.name }), jsx(Typography, { className: 'active-wallet-information__address', weight: (nameService === null || nameService === void 0 ? void 0 : nameService.name) ? 'regular' : 'medium', variant: (nameService === null || nameService === void 0 ? void 0 : nameService.name) ? 'body_small' : 'body_normal', color: (nameService === null || nameService === void 0 ? void 0 : nameService.name) ? 'secondary' : 'primary', children: shortenWalletAddress(address, 4, 4) })] }), jsx(DotsMenu, { "data-testid": 'dots-menu', options: options, buttonClassName: 'active-wallet-information__dots-menu', buttonClassNameWithOpenMenu: 'active-wallet-information__dots-menu' })] }), jsx(NetworkPicker, { currentNetwork: network, connector: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, mainClassName: 'active-wallet-information__network-picker', buttonClassName: 'active-wallet-information__network-picker-button', evmNetworks: evmNetworks, showNetworkName: true })] })] }), testnet && (jsx(Alert, { variant: 'warning', children: t('dyn_active_wallet_info.testnet_warning') }))] }), jsxs("div", { className: 'balance-container', children: [jsx(Typography, { color: 'secondary', variant: 'body_small', children: "Balance" }), primaryWallet && (jsx(Balance, { className: 'balance-container__balance', connector: primaryWallet.connector, address: primaryWallet.address, network: network }))] })] }));
|
|
115
115
|
};
|
|
116
116
|
|
|
117
117
|
export { ActiveWalletInformation };
|
|
@@ -62,7 +62,7 @@ require('react-focus-lock');
|
|
|
62
62
|
|
|
63
63
|
const DynamicNav = () => {
|
|
64
64
|
const [isNetworkPickerOpen, setIsNetworkPickerOpen] = React.useState(false);
|
|
65
|
-
const { primaryWallet, projectSettings } = useInternalDynamicContext.useInternalDynamicContext();
|
|
65
|
+
const { primaryWallet, projectSettings, network } = useInternalDynamicContext.useInternalDynamicContext();
|
|
66
66
|
const { inlineControlsRef } = DynamicWidgetContext.useWidgetContext();
|
|
67
67
|
const evmNetworks = ((primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector) &&
|
|
68
68
|
primaryWallet.connector.evmNetworks) ||
|
|
@@ -70,7 +70,7 @@ const DynamicNav = () => {
|
|
|
70
70
|
if (!projectSettings)
|
|
71
71
|
return null;
|
|
72
72
|
const shouldHideNetwork = projectSettings.sdk.hideNetworkInDynamicWidget;
|
|
73
|
-
return (jsxRuntime.jsx(IsBrowser.IsBrowser, { children: jsxRuntime.jsxs("div", { ref: inlineControlsRef, "data-testid": 'DynamicNav', className: 'dynamic-widget-inline-controls', children: [!shouldHideNetwork && primaryWallet && (jsxRuntime.jsx(PopperContext.PopperProvider, { children: jsxRuntime.jsx(NetworkPicker.NetworkPicker, { connector: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, showNetworkName: true, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, mainClassName: 'dynamic-widget-inline-controls__network-picker-main', buttonClassName: 'dynamic-widget-inline-controls__network-picker', listClassName: 'dynamic-widget-inline-controls__network-picker-list', checkboxClassName: 'dynamic-widget-inline-controls__network-picker-checkbox', evmNetworks: evmNetworks }) })), jsxRuntime.jsx("div", { className: 'dynamic-widget-inline-controls__account-control-container', children: jsxRuntime.jsx(AccountControl.AccountControl, { className: 'dynamic-widget-inline-controls__account-control' }) })] }) }));
|
|
73
|
+
return (jsxRuntime.jsx(IsBrowser.IsBrowser, { children: jsxRuntime.jsxs("div", { ref: inlineControlsRef, "data-testid": 'DynamicNav', className: 'dynamic-widget-inline-controls', children: [!shouldHideNetwork && primaryWallet && (jsxRuntime.jsx(PopperContext.PopperProvider, { children: jsxRuntime.jsx(NetworkPicker.NetworkPicker, { currentNetwork: network, connector: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, showNetworkName: true, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, mainClassName: 'dynamic-widget-inline-controls__network-picker-main', buttonClassName: 'dynamic-widget-inline-controls__network-picker', listClassName: 'dynamic-widget-inline-controls__network-picker-list', checkboxClassName: 'dynamic-widget-inline-controls__network-picker-checkbox', evmNetworks: evmNetworks }) })), jsxRuntime.jsx("div", { className: 'dynamic-widget-inline-controls__account-control-container', children: jsxRuntime.jsx(AccountControl.AccountControl, { className: 'dynamic-widget-inline-controls__account-control' }) })] }) }));
|
|
74
74
|
};
|
|
75
75
|
const ShadowedDynamicNav = () => (jsxRuntime.jsx(ShadowDOM.ShadowDOM, { children: jsxRuntime.jsx(DynamicNav, {}) }));
|
|
76
76
|
|
|
@@ -58,7 +58,7 @@ import 'react-focus-lock';
|
|
|
58
58
|
|
|
59
59
|
const DynamicNav = () => {
|
|
60
60
|
const [isNetworkPickerOpen, setIsNetworkPickerOpen] = useState(false);
|
|
61
|
-
const { primaryWallet, projectSettings } = useInternalDynamicContext();
|
|
61
|
+
const { primaryWallet, projectSettings, network } = useInternalDynamicContext();
|
|
62
62
|
const { inlineControlsRef } = useWidgetContext();
|
|
63
63
|
const evmNetworks = ((primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector) &&
|
|
64
64
|
primaryWallet.connector.evmNetworks) ||
|
|
@@ -66,7 +66,7 @@ const DynamicNav = () => {
|
|
|
66
66
|
if (!projectSettings)
|
|
67
67
|
return null;
|
|
68
68
|
const shouldHideNetwork = projectSettings.sdk.hideNetworkInDynamicWidget;
|
|
69
|
-
return (jsx(IsBrowser, { children: jsxs("div", { ref: inlineControlsRef, "data-testid": 'DynamicNav', className: 'dynamic-widget-inline-controls', children: [!shouldHideNetwork && primaryWallet && (jsx(PopperProvider, { children: jsx(NetworkPicker, { connector: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, showNetworkName: true, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, mainClassName: 'dynamic-widget-inline-controls__network-picker-main', buttonClassName: 'dynamic-widget-inline-controls__network-picker', listClassName: 'dynamic-widget-inline-controls__network-picker-list', checkboxClassName: 'dynamic-widget-inline-controls__network-picker-checkbox', evmNetworks: evmNetworks }) })), jsx("div", { className: 'dynamic-widget-inline-controls__account-control-container', children: jsx(AccountControl, { className: 'dynamic-widget-inline-controls__account-control' }) })] }) }));
|
|
69
|
+
return (jsx(IsBrowser, { children: jsxs("div", { ref: inlineControlsRef, "data-testid": 'DynamicNav', className: 'dynamic-widget-inline-controls', children: [!shouldHideNetwork && primaryWallet && (jsx(PopperProvider, { children: jsx(NetworkPicker, { currentNetwork: network, connector: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, showNetworkName: true, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, mainClassName: 'dynamic-widget-inline-controls__network-picker-main', buttonClassName: 'dynamic-widget-inline-controls__network-picker', listClassName: 'dynamic-widget-inline-controls__network-picker-list', checkboxClassName: 'dynamic-widget-inline-controls__network-picker-checkbox', evmNetworks: evmNetworks }) })), jsx("div", { className: 'dynamic-widget-inline-controls__account-control-container', children: jsx(AccountControl, { className: 'dynamic-widget-inline-controls__account-control' }) })] }) }));
|
|
70
70
|
};
|
|
71
71
|
const ShadowedDynamicNav = () => (jsx(ShadowDOM, { children: jsx(DynamicNav, {}) }));
|
|
72
72
|
|
|
@@ -61,7 +61,7 @@ require('../../../../components/Popper/PopperContext/PopperContext.cjs');
|
|
|
61
61
|
require('react-focus-lock');
|
|
62
62
|
|
|
63
63
|
const EmailOTPConnectorPendingSignModalContent = ({ walletConnector }) => {
|
|
64
|
-
const { setSelectedWalletWithAction, selectedWalletWithAction, setPrimaryWalletId, setMultiWalletWidgetState,
|
|
64
|
+
const { setSelectedWalletWithAction, selectedWalletWithAction, setPrimaryWalletId, setMultiWalletWidgetState, } = useInternalDynamicContext.useInternalDynamicContext();
|
|
65
65
|
const [error, setError] = React.useState();
|
|
66
66
|
const { email } = walletConnector;
|
|
67
67
|
if (!email) {
|
|
@@ -73,7 +73,6 @@ const EmailOTPConnectorPendingSignModalContent = ({ walletConnector }) => {
|
|
|
73
73
|
if (!selectedWalletWithAction) {
|
|
74
74
|
return;
|
|
75
75
|
}
|
|
76
|
-
yield computeConnectedStateForWallets();
|
|
77
76
|
setMultiWalletWidgetState('idle');
|
|
78
77
|
setSelectedWalletWithAction(null);
|
|
79
78
|
setPrimaryWalletId(selectedWalletWithAction.wallet.id);
|
|
@@ -57,7 +57,7 @@ import '../../../../components/Popper/PopperContext/PopperContext.js';
|
|
|
57
57
|
import 'react-focus-lock';
|
|
58
58
|
|
|
59
59
|
const EmailOTPConnectorPendingSignModalContent = ({ walletConnector }) => {
|
|
60
|
-
const { setSelectedWalletWithAction, selectedWalletWithAction, setPrimaryWalletId, setMultiWalletWidgetState,
|
|
60
|
+
const { setSelectedWalletWithAction, selectedWalletWithAction, setPrimaryWalletId, setMultiWalletWidgetState, } = useInternalDynamicContext();
|
|
61
61
|
const [error, setError] = useState();
|
|
62
62
|
const { email } = walletConnector;
|
|
63
63
|
if (!email) {
|
|
@@ -69,7 +69,6 @@ const EmailOTPConnectorPendingSignModalContent = ({ walletConnector }) => {
|
|
|
69
69
|
if (!selectedWalletWithAction) {
|
|
70
70
|
return;
|
|
71
71
|
}
|
|
72
|
-
yield computeConnectedStateForWallets();
|
|
73
72
|
setMultiWalletWidgetState('idle');
|
|
74
73
|
setSelectedWalletWithAction(null);
|
|
75
74
|
setPrimaryWalletId(selectedWalletWithAction.wallet.id);
|
|
@@ -69,7 +69,7 @@ require('react-focus-lock');
|
|
|
69
69
|
const Wallet = ({ wallet, ens }) => {
|
|
70
70
|
var _a;
|
|
71
71
|
const { id: walletId, connector, address } = wallet;
|
|
72
|
-
const {
|
|
72
|
+
const { setPrimaryWallet, setSelectedWalletConnectorKey, setShowWidgetStatePopup, setSelectedWalletWithAction, authToken, primaryWallet, user, projectSettings, authMode, } = useInternalDynamicContext.useInternalDynamicContext();
|
|
73
73
|
const email = (_a = user === null || user === void 0 ? void 0 : user.verifiedCredentials.find((verifiedCredential) => verifiedCredential.format === 'email')) === null || _a === void 0 ? void 0 : _a.email;
|
|
74
74
|
const iconSize = 20;
|
|
75
75
|
const options = [
|
|
@@ -118,7 +118,6 @@ const Wallet = ({ wallet, ens }) => {
|
|
|
118
118
|
setShowWidgetStatePopup(true);
|
|
119
119
|
setSelectedWalletWithAction({ action: 'select', wallet });
|
|
120
120
|
setPrimaryWallet(walletId);
|
|
121
|
-
computeConnectedStateForWallets();
|
|
122
121
|
setSelectedWalletConnectorKey(connector.key);
|
|
123
122
|
});
|
|
124
123
|
return (jsxRuntime.jsxs("div", { className: 'wallet__container', "data-testid": 'wallet', children: [jsxRuntime.jsxs("div", { className: 'wallet__row', children: [jsxRuntime.jsx("div", { className: 'wallet__icon-container', children: jsxRuntime.jsx(AuthProviderIcon.AuthProviderIcon, { iconSize: iconSize, jwt: authToken, wallet: wallet, showStatus: true }) }), (ens === null || ens === void 0 ? void 0 : ens.name) ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Typography.Typography, { className: 'wallet__ens-name', variant: 'body_small', color: 'primary', truncate: true, children: ens === null || ens === void 0 ? void 0 : ens.name }), jsxRuntime.jsx("div", { className: 'wallet__row__seperator' }), jsxRuntime.jsx(Typography.Typography, { variant: 'body_mini', color: 'secondary', children: shortenWalletAddress.shortenWalletAddress(address, 3, 3) })] })) : (jsxRuntime.jsx(Typography.Typography, { variant: 'body_small', color: 'primary', children: shortenWalletAddress.shortenWalletAddress(address, 4, 4) }))] }), jsxRuntime.jsx(DotsMenu.DotsMenu, { "data-testid": 'dots-menu', options: options, buttonClassName: 'wallet__menu', direction: 'left' })] }));
|
|
@@ -65,7 +65,7 @@ import 'react-focus-lock';
|
|
|
65
65
|
const Wallet = ({ wallet, ens }) => {
|
|
66
66
|
var _a;
|
|
67
67
|
const { id: walletId, connector, address } = wallet;
|
|
68
|
-
const {
|
|
68
|
+
const { setPrimaryWallet, setSelectedWalletConnectorKey, setShowWidgetStatePopup, setSelectedWalletWithAction, authToken, primaryWallet, user, projectSettings, authMode, } = useInternalDynamicContext();
|
|
69
69
|
const email = (_a = user === null || user === void 0 ? void 0 : user.verifiedCredentials.find((verifiedCredential) => verifiedCredential.format === 'email')) === null || _a === void 0 ? void 0 : _a.email;
|
|
70
70
|
const iconSize = 20;
|
|
71
71
|
const options = [
|
|
@@ -114,7 +114,6 @@ const Wallet = ({ wallet, ens }) => {
|
|
|
114
114
|
setShowWidgetStatePopup(true);
|
|
115
115
|
setSelectedWalletWithAction({ action: 'select', wallet });
|
|
116
116
|
setPrimaryWallet(walletId);
|
|
117
|
-
computeConnectedStateForWallets();
|
|
118
117
|
setSelectedWalletConnectorKey(connector.key);
|
|
119
118
|
});
|
|
120
119
|
return (jsxs("div", { className: 'wallet__container', "data-testid": 'wallet', children: [jsxs("div", { className: 'wallet__row', children: [jsx("div", { className: 'wallet__icon-container', children: jsx(AuthProviderIcon, { iconSize: iconSize, jwt: authToken, wallet: wallet, showStatus: true }) }), (ens === null || ens === void 0 ? void 0 : ens.name) ? (jsxs(Fragment, { children: [jsx(Typography, { className: 'wallet__ens-name', variant: 'body_small', color: 'primary', truncate: true, children: ens === null || ens === void 0 ? void 0 : ens.name }), jsx("div", { className: 'wallet__row__seperator' }), jsx(Typography, { variant: 'body_mini', color: 'secondary', children: shortenWalletAddress(address, 3, 3) })] })) : (jsx(Typography, { variant: 'body_small', color: 'primary', children: shortenWalletAddress(address, 4, 4) }))] }), jsx(DotsMenu, { "data-testid": 'dots-menu', options: options, buttonClassName: 'wallet__menu', direction: 'left' })] }));
|
|
@@ -64,7 +64,7 @@ require('../../../../../components/Popper/PopperContext/PopperContext.cjs');
|
|
|
64
64
|
require('react-focus-lock');
|
|
65
65
|
|
|
66
66
|
const SwitchOrUseActiveAccountView = ({ connectedWallet, selectedWalletToSwitchTo, }) => {
|
|
67
|
-
const { setSelectedWalletWithAction, setSelectedWalletConnectorKey,
|
|
67
|
+
const { setSelectedWalletWithAction, setSelectedWalletConnectorKey, setPrimaryWallet, } = useInternalDynamicContext.useInternalDynamicContext();
|
|
68
68
|
const onUseActiveWalletClick = React.useCallback(() => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
69
69
|
var _a, _b;
|
|
70
70
|
if (!connectedWallet) {
|
|
@@ -75,13 +75,11 @@ const SwitchOrUseActiveAccountView = ({ connectedWallet, selectedWalletToSwitchT
|
|
|
75
75
|
}
|
|
76
76
|
setSelectedWalletWithAction({ action: 'select', wallet: connectedWallet });
|
|
77
77
|
setPrimaryWallet(connectedWallet === null || connectedWallet === void 0 ? void 0 : connectedWallet.id);
|
|
78
|
-
computeConnectedStateForWallets();
|
|
79
78
|
setSelectedWalletConnectorKey(connectedWallet === null || connectedWallet === void 0 ? void 0 : connectedWallet.connector.key);
|
|
80
79
|
}), [
|
|
81
80
|
connectedWallet,
|
|
82
81
|
setSelectedWalletWithAction,
|
|
83
82
|
setPrimaryWallet,
|
|
84
|
-
computeConnectedStateForWallets,
|
|
85
83
|
setSelectedWalletConnectorKey,
|
|
86
84
|
]);
|
|
87
85
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs(Typography.Typography, { variant: 'body_normal', color: 'secondary', weight: 'regular', "data-testid": 'content', children: ["Wallet", ' ', jsxRuntime.jsx(Typography.Typography, { as: 'span', weight: 'medium', color: 'primary', children: shortenWalletAddress.shortenWalletAddress(selectedWalletToSwitchTo === null || selectedWalletToSwitchTo === void 0 ? void 0 : selectedWalletToSwitchTo.address, 3, 3) }), ' ', "is not active in ", selectedWalletToSwitchTo === null || selectedWalletToSwitchTo === void 0 ? void 0 : selectedWalletToSwitchTo.connector.name, ". To make active, open your ", selectedWalletToSwitchTo === null || selectedWalletToSwitchTo === void 0 ? void 0 : selectedWalletToSwitchTo.connector.name, " wallet and switch to this account."] }), jsxRuntime.jsx(Divider.Divider, { fullWidth: true, text: 'Or' }), jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', color: 'primary', children: "Use your active wallet" }), jsxRuntime.jsxs(Button.Button, { buttonClassName: 'default-prompt-modal__button', expanded: true, type: 'button', buttonPadding: 'medium', typographyProps: { variant: 'button_secondary' }, onClick: onUseActiveWalletClick, dataTestId: 'use-active-wallet-button', children: ["Select", ' ', jsxRuntime.jsx(Icon.Icon, { size: 'xsmall', children: jsxRuntime.jsx(walletBook.WalletIcon, { walletKey: selectedWalletToSwitchTo === null || selectedWalletToSwitchTo === void 0 ? void 0 : selectedWalletToSwitchTo.connector.key }) }), ' ', shortenWalletAddress.shortenWalletAddress(connectedWallet === null || connectedWallet === void 0 ? void 0 : connectedWallet.address, 3, 3)] })] }));
|
|
@@ -60,7 +60,7 @@ import '../../../../../components/Popper/PopperContext/PopperContext.js';
|
|
|
60
60
|
import 'react-focus-lock';
|
|
61
61
|
|
|
62
62
|
const SwitchOrUseActiveAccountView = ({ connectedWallet, selectedWalletToSwitchTo, }) => {
|
|
63
|
-
const { setSelectedWalletWithAction, setSelectedWalletConnectorKey,
|
|
63
|
+
const { setSelectedWalletWithAction, setSelectedWalletConnectorKey, setPrimaryWallet, } = useInternalDynamicContext();
|
|
64
64
|
const onUseActiveWalletClick = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
65
65
|
var _a, _b;
|
|
66
66
|
if (!connectedWallet) {
|
|
@@ -71,13 +71,11 @@ const SwitchOrUseActiveAccountView = ({ connectedWallet, selectedWalletToSwitchT
|
|
|
71
71
|
}
|
|
72
72
|
setSelectedWalletWithAction({ action: 'select', wallet: connectedWallet });
|
|
73
73
|
setPrimaryWallet(connectedWallet === null || connectedWallet === void 0 ? void 0 : connectedWallet.id);
|
|
74
|
-
computeConnectedStateForWallets();
|
|
75
74
|
setSelectedWalletConnectorKey(connectedWallet === null || connectedWallet === void 0 ? void 0 : connectedWallet.connector.key);
|
|
76
75
|
}), [
|
|
77
76
|
connectedWallet,
|
|
78
77
|
setSelectedWalletWithAction,
|
|
79
78
|
setPrimaryWallet,
|
|
80
|
-
computeConnectedStateForWallets,
|
|
81
79
|
setSelectedWalletConnectorKey,
|
|
82
80
|
]);
|
|
83
81
|
return (jsxs(Fragment, { children: [jsxs(Typography, { variant: 'body_normal', color: 'secondary', weight: 'regular', "data-testid": 'content', children: ["Wallet", ' ', jsx(Typography, { as: 'span', weight: 'medium', color: 'primary', children: shortenWalletAddress(selectedWalletToSwitchTo === null || selectedWalletToSwitchTo === void 0 ? void 0 : selectedWalletToSwitchTo.address, 3, 3) }), ' ', "is not active in ", selectedWalletToSwitchTo === null || selectedWalletToSwitchTo === void 0 ? void 0 : selectedWalletToSwitchTo.connector.name, ". To make active, open your ", selectedWalletToSwitchTo === null || selectedWalletToSwitchTo === void 0 ? void 0 : selectedWalletToSwitchTo.connector.name, " wallet and switch to this account."] }), jsx(Divider, { fullWidth: true, text: 'Or' }), jsx(Typography, { variant: 'body_normal', color: 'primary', children: "Use your active wallet" }), jsxs(Button, { buttonClassName: 'default-prompt-modal__button', expanded: true, type: 'button', buttonPadding: 'medium', typographyProps: { variant: 'button_secondary' }, onClick: onUseActiveWalletClick, dataTestId: 'use-active-wallet-button', children: ["Select", ' ', jsx(Icon, { size: 'xsmall', children: jsx(WalletIcon, { walletKey: selectedWalletToSwitchTo === null || selectedWalletToSwitchTo === void 0 ? void 0 : selectedWalletToSwitchTo.connector.key }) }), ' ', shortenWalletAddress(connectedWallet === null || connectedWallet === void 0 ? void 0 : connectedWallet.address, 3, 3)] })] }));
|
|
@@ -60,10 +60,10 @@ require('../../views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
|
|
|
60
60
|
var CopyButton = require('../../../../components/CopyButton/CopyButton.cjs');
|
|
61
61
|
require('../../../../components/InlineWidget/InlineWidget.cjs');
|
|
62
62
|
require('../../../../components/MenuList/Dropdown/Dropdown.cjs');
|
|
63
|
+
var TextButton = require('../../../../components/TextButton/TextButton.cjs');
|
|
63
64
|
require('../../../../components/Popper/Popper/Popper.cjs');
|
|
64
65
|
require('../../../../components/Popper/PopperContext/PopperContext.cjs');
|
|
65
66
|
require('react-focus-lock');
|
|
66
|
-
var TextButton = require('../../../../components/TextButton/TextButton.cjs');
|
|
67
67
|
|
|
68
68
|
const QrCodeModalView = ({ walletId }) => {
|
|
69
69
|
var _a, _b;
|
|
@@ -56,10 +56,10 @@ import '../../views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.js';
|
|
|
56
56
|
import { CopyButton } from '../../../../components/CopyButton/CopyButton.js';
|
|
57
57
|
import '../../../../components/InlineWidget/InlineWidget.js';
|
|
58
58
|
import '../../../../components/MenuList/Dropdown/Dropdown.js';
|
|
59
|
+
import { TextButton } from '../../../../components/TextButton/TextButton.js';
|
|
59
60
|
import '../../../../components/Popper/Popper/Popper.js';
|
|
60
61
|
import '../../../../components/Popper/PopperContext/PopperContext.js';
|
|
61
62
|
import 'react-focus-lock';
|
|
62
|
-
import { TextButton } from '../../../../components/TextButton/TextButton.js';
|
|
63
63
|
|
|
64
64
|
const QrCodeModalView = ({ walletId }) => {
|
|
65
65
|
var _a, _b;
|
package/src/lib/widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs
CHANGED
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var React = require('react');
|
|
6
7
|
var reactI18next = require('react-i18next');
|
|
7
8
|
var iconic = require('@dynamic-labs/iconic');
|
|
8
|
-
require('
|
|
9
|
+
var classNames = require('../../../../../utils/functions/classNames/classNames.cjs');
|
|
9
10
|
require('@dynamic-labs/utils');
|
|
10
11
|
require('@dynamic-labs/sdk-api');
|
|
11
12
|
require('../../../../../config/ApiEndpoint.cjs');
|
|
@@ -71,6 +72,7 @@ const mapPasskeyProviderToIcon = {
|
|
|
71
72
|
};
|
|
72
73
|
const PasskeyCard = ({ passkey }) => {
|
|
73
74
|
const { t } = reactI18next.useTranslation();
|
|
75
|
+
const [showTooltip, setShowTooltip] = React.useState(false);
|
|
74
76
|
const { value: timeSinceValue, unit: timeSinceUnit } = getTimeSince.getTimeSince(passkey.createdAt);
|
|
75
77
|
const PasskeyProviderIcon = () => {
|
|
76
78
|
if (!passkey.userAgent)
|
|
@@ -88,11 +90,19 @@ const PasskeyCard = ({ passkey }) => {
|
|
|
88
90
|
return null;
|
|
89
91
|
return t(`dyn_manage_passkeys.passkey_providers.${provider}`);
|
|
90
92
|
};
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
93
|
+
const handleShowTooltip = () => {
|
|
94
|
+
setShowTooltip(true);
|
|
95
|
+
setTimeout(() => {
|
|
96
|
+
setShowTooltip(false);
|
|
97
|
+
}, 2000);
|
|
98
|
+
};
|
|
99
|
+
return (jsxRuntime.jsxs("div", { className: 'passkey-card', children: [jsxRuntime.jsxs("div", { className: 'passkey-card__info', children: [jsxRuntime.jsx("div", { className: 'passkey-card__info__icon', "data-testId": 'provider-icon', children: jsxRuntime.jsx(PasskeyProviderIcon, {}) }), jsxRuntime.jsxs("div", { className: 'passkey-card__info__text', children: [jsxRuntime.jsxs(Typography.Typography, { "data-testid": 'passkey-alias', variant: 'body_normal', color: 'primary', title: passkey.alias, onClick: handleShowTooltip, children: [shortenEmail.shortenEmail(passkey.alias, {
|
|
100
|
+
breakpoint: 12,
|
|
101
|
+
cutEnd: 4,
|
|
102
|
+
cutStart: 4,
|
|
103
|
+
}), jsxRuntime.jsx("p", { className: classNames.classNames('passkey-card__info__tooltip', {
|
|
104
|
+
'passkey-card__info__tooltip--visible': showTooltip,
|
|
105
|
+
}), children: passkey.alias })] }), getPasskeyProviderName() && (jsxRuntime.jsxs(Typography.Typography, { variant: 'body_small', color: 'secondary', children: [t('dyn_manage_passkeys.passkey_from'), " ", getPasskeyProviderName()] }))] })] }), jsxRuntime.jsx("div", { className: 'passkey-card__date', children: jsxRuntime.jsxs(Typography.Typography, { variant: 'body_small', color: 'secondary', children: [t('dyn_time_since.created'), ' ', `${timeSinceValue} ${timeSinceUnit} ${t('dyn_time_since.ago')}`] }) })] }));
|
|
96
106
|
};
|
|
97
107
|
|
|
98
108
|
exports.PasskeyCard = PasskeyCard;
|
package/src/lib/widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { useState } from 'react';
|
|
2
3
|
import { useTranslation } from 'react-i18next';
|
|
3
4
|
import { AndroidIcon, BraveIcon, ChromeIcon, EdgeIcon, FirefoxIcon, AppleIcon, OperaIcon, SafariIcon } from '@dynamic-labs/iconic';
|
|
4
|
-
import '
|
|
5
|
+
import { classNames } from '../../../../../utils/functions/classNames/classNames.js';
|
|
5
6
|
import '@dynamic-labs/utils';
|
|
6
7
|
import '@dynamic-labs/sdk-api';
|
|
7
8
|
import '../../../../../config/ApiEndpoint.js';
|
|
@@ -67,6 +68,7 @@ const mapPasskeyProviderToIcon = {
|
|
|
67
68
|
};
|
|
68
69
|
const PasskeyCard = ({ passkey }) => {
|
|
69
70
|
const { t } = useTranslation();
|
|
71
|
+
const [showTooltip, setShowTooltip] = useState(false);
|
|
70
72
|
const { value: timeSinceValue, unit: timeSinceUnit } = getTimeSince(passkey.createdAt);
|
|
71
73
|
const PasskeyProviderIcon = () => {
|
|
72
74
|
if (!passkey.userAgent)
|
|
@@ -84,11 +86,19 @@ const PasskeyCard = ({ passkey }) => {
|
|
|
84
86
|
return null;
|
|
85
87
|
return t(`dyn_manage_passkeys.passkey_providers.${provider}`);
|
|
86
88
|
};
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
const handleShowTooltip = () => {
|
|
90
|
+
setShowTooltip(true);
|
|
91
|
+
setTimeout(() => {
|
|
92
|
+
setShowTooltip(false);
|
|
93
|
+
}, 2000);
|
|
94
|
+
};
|
|
95
|
+
return (jsxs("div", { className: 'passkey-card', children: [jsxs("div", { className: 'passkey-card__info', children: [jsx("div", { className: 'passkey-card__info__icon', "data-testId": 'provider-icon', children: jsx(PasskeyProviderIcon, {}) }), jsxs("div", { className: 'passkey-card__info__text', children: [jsxs(Typography, { "data-testid": 'passkey-alias', variant: 'body_normal', color: 'primary', title: passkey.alias, onClick: handleShowTooltip, children: [shortenEmail(passkey.alias, {
|
|
96
|
+
breakpoint: 12,
|
|
97
|
+
cutEnd: 4,
|
|
98
|
+
cutStart: 4,
|
|
99
|
+
}), jsx("p", { className: classNames('passkey-card__info__tooltip', {
|
|
100
|
+
'passkey-card__info__tooltip--visible': showTooltip,
|
|
101
|
+
}), children: passkey.alias })] }), getPasskeyProviderName() && (jsxs(Typography, { variant: 'body_small', color: 'secondary', children: [t('dyn_manage_passkeys.passkey_from'), " ", getPasskeyProviderName()] }))] })] }), jsx("div", { className: 'passkey-card__date', children: jsxs(Typography, { variant: 'body_small', color: 'secondary', children: [t('dyn_time_since.created'), ' ', `${timeSinceValue} ${timeSinceUnit} ${t('dyn_time_since.ago')}`] }) })] }));
|
|
92
102
|
};
|
|
93
103
|
|
|
94
104
|
export { PasskeyCard };
|