@dynamic-labs/sdk-react-core 4.50.5 → 4.51.2

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.
Files changed (55) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/package.cjs +3 -3
  3. package/package.js +3 -3
  4. package/package.json +14 -14
  5. package/src/index.cjs +2 -0
  6. package/src/index.d.ts +1 -1
  7. package/src/index.js +1 -0
  8. package/src/lib/context/CaptchaContext/CaptchaContext.cjs +88 -1
  9. package/src/lib/context/CaptchaContext/CaptchaContext.js +88 -1
  10. package/src/lib/context/PhantomRedirectContext/useResponseHandlers.cjs +19 -0
  11. package/src/lib/context/PhantomRedirectContext/useResponseHandlers.js +20 -1
  12. package/src/lib/data/api/constants.cjs +12 -0
  13. package/src/lib/data/api/constants.d.ts +3 -0
  14. package/src/lib/data/api/constants.js +6 -0
  15. package/src/lib/data/api/embeddedWallets/embeddedWallets.cjs +12 -1
  16. package/src/lib/data/api/embeddedWallets/embeddedWallets.js +12 -1
  17. package/src/lib/data/api/user/user.cjs +19 -0
  18. package/src/lib/data/api/user/user.d.ts +5 -0
  19. package/src/lib/data/api/user/user.js +19 -1
  20. package/src/lib/store/stateConfig.cjs +39 -35
  21. package/src/lib/store/stateConfig.js +39 -35
  22. package/src/lib/utils/functions/clientSessionKeys/getClientSessionKeys.cjs +33 -1
  23. package/src/lib/utils/functions/clientSessionKeys/getClientSessionKeys.d.ts +11 -0
  24. package/src/lib/utils/functions/clientSessionKeys/getClientSessionKeys.js +32 -2
  25. package/src/lib/utils/hooks/authenticationHooks/helpers/isConnectOnly.cjs +1 -32
  26. package/src/lib/utils/hooks/authenticationHooks/helpers/isConnectOnly.js +1 -32
  27. package/src/lib/utils/hooks/authenticationHooks/useConnectAndSign/useConnectAndSign.cjs +2 -1
  28. package/src/lib/utils/hooks/authenticationHooks/useConnectAndSign/useConnectAndSign.js +2 -1
  29. package/src/lib/utils/hooks/useAuthenticatePasskeyMFA/useAuthenticatePasskeyMFA.cjs +1 -1
  30. package/src/lib/utils/hooks/useAuthenticatePasskeyMFA/useAuthenticatePasskeyMFA.js +1 -1
  31. package/src/lib/utils/hooks/useIsMfaRequiredForAction/useIsMfaRequiredForAction.cjs +1 -4
  32. package/src/lib/utils/hooks/useIsMfaRequiredForAction/useIsMfaRequiredForAction.js +1 -4
  33. package/src/lib/utils/hooks/useRegisterPasskey/useRegisterPasskey.cjs +8 -1
  34. package/src/lib/utils/hooks/useRegisterPasskey/useRegisterPasskey.js +8 -1
  35. package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.cjs +2 -1
  36. package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.d.ts +4 -1
  37. package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.js +2 -1
  38. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.cjs +1 -1
  39. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.d.ts +1 -1
  40. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.js +1 -1
  41. package/src/lib/utils/hooks/useUserUpdateRequest/unlinkUserEmail/unlinkUserEmail.cjs +131 -0
  42. package/src/lib/utils/hooks/useUserUpdateRequest/unlinkUserEmail/unlinkUserEmail.d.ts +6 -0
  43. package/src/lib/utils/hooks/useUserUpdateRequest/unlinkUserEmail/unlinkUserEmail.js +127 -0
  44. package/src/lib/utils/hooks/useUserUpdateRequest/useUserUpdateRequest.cjs +3 -1
  45. package/src/lib/utils/hooks/useUserUpdateRequest/useUserUpdateRequest.d.ts +2 -0
  46. package/src/lib/utils/hooks/useUserUpdateRequest/useUserUpdateRequest.js +3 -1
  47. package/src/lib/utils/hooks/useWalletDelegation/useWalletDelegation.cjs +38 -15
  48. package/src/lib/utils/hooks/useWalletDelegation/useWalletDelegation.d.ts +8 -2
  49. package/src/lib/utils/hooks/useWalletDelegation/useWalletDelegation.js +38 -15
  50. package/src/lib/views/SendBalanceView/SendBalanceView.cjs +14 -2
  51. package/src/lib/views/SendBalanceView/SendBalanceView.js +15 -3
  52. package/src/lib/views/WalletDelegation/WalletDelegationView/WalletDelegationView.cjs +10 -2
  53. package/src/lib/views/WalletDelegation/WalletDelegationView/WalletDelegationView.js +10 -2
  54. package/src/lib/widgets/DynamicWidget/views/WalletsDelegatedSettingsView/WalletsDelegatedSettingsView.cjs +18 -18
  55. package/src/lib/widgets/DynamicWidget/views/WalletsDelegatedSettingsView/WalletsDelegatedSettingsView.js +18 -18
@@ -44,7 +44,15 @@ const WalletDelegationView = ({ wallets, }) => {
44
44
  const [agreementChecked, setAgreementChecked] = useState(false);
45
45
  const [selectionInitialized, setSelectionInitialized] = useState(false);
46
46
  // Get waas wallets that are not yet delegated or use provided wallets override
47
- const waasWallets = useMemo(() => getWalletsToDelegate(wallets, getWalletsDelegatedStatus), [wallets, getWalletsDelegatedStatus]);
47
+ const waasWallets = useMemo(() => {
48
+ const walletsToDelegate = wallets
49
+ ? wallets.map((wallet) => ({
50
+ accountAddress: wallet.address,
51
+ chainName: wallet.chain,
52
+ }))
53
+ : undefined;
54
+ return getWalletsToDelegate(walletsToDelegate, getWalletsDelegatedStatus);
55
+ }, [wallets, getWalletsDelegatedStatus, getWalletsToDelegate]);
48
56
  // Auto-select wallets only on initial load
49
57
  useEffect(() => {
50
58
  if (selectionInitialized)
@@ -171,7 +179,7 @@ const WalletDelegationView = ({ wallets, }) => {
171
179
  // Single wallet view
172
180
  const displaySingleWallet = () => {
173
181
  const [wallet] = waasWallets;
174
- if (!wallet)
182
+ if (!wallet || !wallet.address)
175
183
  return null;
176
184
  return (jsxs("div", { className: 'embedded-delegated-view__wallet-card-container', children: [jsxs("div", { className: 'embedded-delegated-view__wallet-card', children: [jsx(Typography, { variant: 'body_normal', weight: 'medium', color: 'primary', children: t('dyn_wallet_delegation.my_wallet') }), jsxs("div", { className: 'embedded-delegated-view__wallet-address', children: [jsx("div", { className: 'embedded-delegated-view__wallet-address-dot' }), jsxs(Typography, { variant: 'body_small', color: 'secondary', children: [wallet.address.slice(0, 6), "...", wallet.address.slice(-4)] })] })] }), jsx(AgreementSection, { checked: agreementChecked, onToggle: () => setAgreementChecked(!agreementChecked), text: t('dyn_wallet_delegation.agreement_text') })] }));
177
185
  };
@@ -173,27 +173,27 @@ const WalletsDelegatedSettingsView = ({ name }) => {
173
173
  const handleDelegate = createHandleDelegate(delegateKeyShares);
174
174
  const handleWalletStatusChange = createHandleWalletStatusChange(handleRevoke, handleDelegate);
175
175
  const handleRevokeAll = createHandleRevokeAll(handleRevoke, walletsWithStatus);
176
- return (jsxRuntime.jsxs("div", { className: 'wallets-delegated-settings-view', children: [jsxRuntime.jsxs("div", { className: 'header', children: [jsxRuntime.jsx(IconButton.IconButton, { onClick: () => setDynamicWidgetView('settings'), "data-testid": 'back-button', className: 'back-button', type: 'button', children: jsxRuntime.jsx(arrowLeft.ReactComponent, {}) }), jsxRuntime.jsx(Typography.Typography, { variant: 'title', color: 'primary', className: 'title', copykey: 'wallets_delegated.title', children: t('wallets_delegated.title') })] }), walletsWithStatus.length > 0 && (jsxRuntime.jsx("ul", { className: 'delegated-wallets-list', children: walletsWithStatus.map((wallet) => {
177
- var _a, _b;
178
- return (jsxRuntime.jsxs("li", { className: 'delegated-wallets-item', children: [jsxRuntime.jsx("div", { className: 'wallet-icon', children: jsxRuntime.jsx(WalletIconWithNetwork.WalletIconWithNetwork, { walletKey: wallet.key, Icon: null, iconUrl: (_b = (_a = wallet.connector) === null || _a === void 0 ? void 0 : _a.metadata) === null || _b === void 0 ? void 0 : _b.icon, chainName: wallet.chain, iconSize: 24, showNetwork: true }) }), jsxRuntime.jsxs("div", { className: 'wallet-info', children: [jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', color: 'primary', weight: 'medium', children: shortenWalletAddress.shortenWalletAddress(wallet.address) }), jsxRuntime.jsx("div", { className: wallet.status === 'delegated'
179
- ? 'status-badge'
180
- : 'status-badge status-badge--disconnected', children: jsxRuntime.jsx(Typography.Typography, { variant: 'body_small', color: wallet.status === 'delegated' ? 'primary' : 'secondary', children: wallet.status === 'delegated'
181
- ? t('connected', 'Connected')
182
- : t('disconnected', 'Disconnected') }) })] }), jsxRuntime.jsx(TypographyButton.TypographyButton, { onClick: () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
183
- yield handleWalletStatusChange(wallet);
184
- }), buttonPadding: 'small', className: 'revoke-button', typographyProps: {
185
- color: 'primary',
186
- variant: 'body_small',
187
- weight: 'medium',
188
- }, children: wallet.status === 'delegated'
189
- ? t('revoke', 'Revoke')
190
- : t('delegate', 'Delegate') })] }, wallet.id));
191
- }) })), walletsWithStatus.filter((w) => w.status === 'delegated').length > 0 && (jsxRuntime.jsx("div", { className: 'revoke-all-section', children: jsxRuntime.jsx(TypographyButton.TypographyButton, { onClick: () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
176
+ return (jsxRuntime.jsxs("div", { className: 'wallets-delegated-settings-view', "data-testid": 'wallets-delegated-settings-view', children: [' ', jsxRuntime.jsxs("div", { className: 'header', "data-testid": 'delegated-header', children: [jsxRuntime.jsx(IconButton.IconButton, { onClick: () => setDynamicWidgetView('settings'), "data-testid": 'back-button', className: 'back-button', type: 'button', children: jsxRuntime.jsx(arrowLeft.ReactComponent, {}) }), jsxRuntime.jsx(Typography.Typography, { variant: 'title', color: 'primary', className: 'title', copykey: 'wallets_delegated.title', "data-testid": 'delegated-title', children: t('wallets_delegated.title') })] }), walletsWithStatus.length > 0 && (jsxRuntime.jsxs("ul", { className: 'delegated-wallets-list', "data-testid": 'delegated-wallets-list', children: [' ', walletsWithStatus.map((wallet, index) => {
177
+ var _a, _b;
178
+ return (jsxRuntime.jsxs("li", { className: 'delegated-wallets-item', "data-testid": `delegated-wallet-item-${index}`, children: [' ', jsxRuntime.jsx("div", { className: 'wallet-icon', children: jsxRuntime.jsx(WalletIconWithNetwork.WalletIconWithNetwork, { walletKey: wallet.key, Icon: null, iconUrl: (_b = (_a = wallet.connector) === null || _a === void 0 ? void 0 : _a.metadata) === null || _b === void 0 ? void 0 : _b.icon, chainName: wallet.chain, iconSize: 24, showNetwork: true }) }), jsxRuntime.jsxs("div", { className: 'wallet-info', "data-testid": `wallet-info-${index}`, children: [jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', color: 'primary', weight: 'medium', children: shortenWalletAddress.shortenWalletAddress(wallet.address) }), jsxRuntime.jsx("div", { className: wallet.status === 'delegated'
179
+ ? 'status-badge'
180
+ : 'status-badge status-badge--disconnected', children: jsxRuntime.jsx(Typography.Typography, { variant: 'body_small', color: wallet.status === 'delegated' ? 'primary' : 'secondary', children: wallet.status === 'delegated'
181
+ ? t('connected', 'Connected')
182
+ : t('disconnected', 'Disconnected') }) })] }), jsxRuntime.jsx(TypographyButton.TypographyButton, { onClick: () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
183
+ yield handleWalletStatusChange(wallet);
184
+ }), buttonPadding: 'small', className: 'revoke-button', typographyProps: {
185
+ color: 'primary',
186
+ variant: 'body_small',
187
+ weight: 'medium',
188
+ }, children: wallet.status === 'delegated'
189
+ ? t('revoke', 'Revoke')
190
+ : t('delegate', 'Delegate') })] }, wallet.id));
191
+ })] })), walletsWithStatus.filter((w) => w.status === 'delegated').length > 0 && (jsxRuntime.jsx("div", { className: 'revoke-all-section', "data-testid": 'revoke-all-section', children: jsxRuntime.jsx(TypographyButton.TypographyButton, { onClick: () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
192
192
  yield handleRevokeAll();
193
- }), buttonVariant: 'tertiary', buttonPadding: 'none', className: 'revoke-all-button', typographyProps: {
193
+ }), buttonVariant: 'tertiary', buttonPadding: 'none', className: 'revoke-all-button', "data-testid": 'revoke-all-button', typographyProps: {
194
194
  variant: 'body_normal',
195
195
  weight: 'medium',
196
- }, children: t('revoke_all_wallet_access', 'Revoke all wallet access') }) })), showSuccessMessage && (jsxRuntime.jsxs("div", { className: 'success-message', children: [jsxRuntime.jsx(check.ReactComponent, {}), jsxRuntime.jsx(Typography.Typography, { variant: 'body_small', color: 'primary', copykey: 'global_wallet.wallets_delegated.success', children: t('global_wallet.wallets_delegated.success', { name }) })] }))] }));
196
+ }, children: t('revoke_all_wallet_access', 'Revoke all wallet access') }) })), showSuccessMessage && (jsxRuntime.jsxs("div", { className: 'success-message', "data-testid": 'success-message', children: [jsxRuntime.jsx(check.ReactComponent, { "data-testid": 'success-icon' }), jsxRuntime.jsx(Typography.Typography, { variant: 'body_small', color: 'primary', copykey: 'global_wallet.wallets_delegated.success', "data-testid": 'success-text', children: t('global_wallet.wallets_delegated.success', { name }) })] }))] }));
197
197
  };
198
198
 
199
199
  exports.WalletsDelegatedSettingsView = WalletsDelegatedSettingsView;
@@ -169,27 +169,27 @@ const WalletsDelegatedSettingsView = ({ name }) => {
169
169
  const handleDelegate = createHandleDelegate(delegateKeyShares);
170
170
  const handleWalletStatusChange = createHandleWalletStatusChange(handleRevoke, handleDelegate);
171
171
  const handleRevokeAll = createHandleRevokeAll(handleRevoke, walletsWithStatus);
172
- return (jsxs("div", { className: 'wallets-delegated-settings-view', children: [jsxs("div", { className: 'header', children: [jsx(IconButton, { onClick: () => setDynamicWidgetView('settings'), "data-testid": 'back-button', className: 'back-button', type: 'button', children: jsx(SvgArrowLeft, {}) }), jsx(Typography, { variant: 'title', color: 'primary', className: 'title', copykey: 'wallets_delegated.title', children: t('wallets_delegated.title') })] }), walletsWithStatus.length > 0 && (jsx("ul", { className: 'delegated-wallets-list', children: walletsWithStatus.map((wallet) => {
173
- var _a, _b;
174
- return (jsxs("li", { className: 'delegated-wallets-item', children: [jsx("div", { className: 'wallet-icon', children: jsx(WalletIconWithNetwork, { walletKey: wallet.key, Icon: null, iconUrl: (_b = (_a = wallet.connector) === null || _a === void 0 ? void 0 : _a.metadata) === null || _b === void 0 ? void 0 : _b.icon, chainName: wallet.chain, iconSize: 24, showNetwork: true }) }), jsxs("div", { className: 'wallet-info', children: [jsx(Typography, { variant: 'body_normal', color: 'primary', weight: 'medium', children: shortenWalletAddress(wallet.address) }), jsx("div", { className: wallet.status === 'delegated'
175
- ? 'status-badge'
176
- : 'status-badge status-badge--disconnected', children: jsx(Typography, { variant: 'body_small', color: wallet.status === 'delegated' ? 'primary' : 'secondary', children: wallet.status === 'delegated'
177
- ? t('connected', 'Connected')
178
- : t('disconnected', 'Disconnected') }) })] }), jsx(TypographyButton, { onClick: () => __awaiter(void 0, void 0, void 0, function* () {
179
- yield handleWalletStatusChange(wallet);
180
- }), buttonPadding: 'small', className: 'revoke-button', typographyProps: {
181
- color: 'primary',
182
- variant: 'body_small',
183
- weight: 'medium',
184
- }, children: wallet.status === 'delegated'
185
- ? t('revoke', 'Revoke')
186
- : t('delegate', 'Delegate') })] }, wallet.id));
187
- }) })), walletsWithStatus.filter((w) => w.status === 'delegated').length > 0 && (jsx("div", { className: 'revoke-all-section', children: jsx(TypographyButton, { onClick: () => __awaiter(void 0, void 0, void 0, function* () {
172
+ return (jsxs("div", { className: 'wallets-delegated-settings-view', "data-testid": 'wallets-delegated-settings-view', children: [' ', jsxs("div", { className: 'header', "data-testid": 'delegated-header', children: [jsx(IconButton, { onClick: () => setDynamicWidgetView('settings'), "data-testid": 'back-button', className: 'back-button', type: 'button', children: jsx(SvgArrowLeft, {}) }), jsx(Typography, { variant: 'title', color: 'primary', className: 'title', copykey: 'wallets_delegated.title', "data-testid": 'delegated-title', children: t('wallets_delegated.title') })] }), walletsWithStatus.length > 0 && (jsxs("ul", { className: 'delegated-wallets-list', "data-testid": 'delegated-wallets-list', children: [' ', walletsWithStatus.map((wallet, index) => {
173
+ var _a, _b;
174
+ return (jsxs("li", { className: 'delegated-wallets-item', "data-testid": `delegated-wallet-item-${index}`, children: [' ', jsx("div", { className: 'wallet-icon', children: jsx(WalletIconWithNetwork, { walletKey: wallet.key, Icon: null, iconUrl: (_b = (_a = wallet.connector) === null || _a === void 0 ? void 0 : _a.metadata) === null || _b === void 0 ? void 0 : _b.icon, chainName: wallet.chain, iconSize: 24, showNetwork: true }) }), jsxs("div", { className: 'wallet-info', "data-testid": `wallet-info-${index}`, children: [jsx(Typography, { variant: 'body_normal', color: 'primary', weight: 'medium', children: shortenWalletAddress(wallet.address) }), jsx("div", { className: wallet.status === 'delegated'
175
+ ? 'status-badge'
176
+ : 'status-badge status-badge--disconnected', children: jsx(Typography, { variant: 'body_small', color: wallet.status === 'delegated' ? 'primary' : 'secondary', children: wallet.status === 'delegated'
177
+ ? t('connected', 'Connected')
178
+ : t('disconnected', 'Disconnected') }) })] }), jsx(TypographyButton, { onClick: () => __awaiter(void 0, void 0, void 0, function* () {
179
+ yield handleWalletStatusChange(wallet);
180
+ }), buttonPadding: 'small', className: 'revoke-button', typographyProps: {
181
+ color: 'primary',
182
+ variant: 'body_small',
183
+ weight: 'medium',
184
+ }, children: wallet.status === 'delegated'
185
+ ? t('revoke', 'Revoke')
186
+ : t('delegate', 'Delegate') })] }, wallet.id));
187
+ })] })), walletsWithStatus.filter((w) => w.status === 'delegated').length > 0 && (jsx("div", { className: 'revoke-all-section', "data-testid": 'revoke-all-section', children: jsx(TypographyButton, { onClick: () => __awaiter(void 0, void 0, void 0, function* () {
188
188
  yield handleRevokeAll();
189
- }), buttonVariant: 'tertiary', buttonPadding: 'none', className: 'revoke-all-button', typographyProps: {
189
+ }), buttonVariant: 'tertiary', buttonPadding: 'none', className: 'revoke-all-button', "data-testid": 'revoke-all-button', typographyProps: {
190
190
  variant: 'body_normal',
191
191
  weight: 'medium',
192
- }, children: t('revoke_all_wallet_access', 'Revoke all wallet access') }) })), showSuccessMessage && (jsxs("div", { className: 'success-message', children: [jsx(SvgCheck, {}), jsx(Typography, { variant: 'body_small', color: 'primary', copykey: 'global_wallet.wallets_delegated.success', children: t('global_wallet.wallets_delegated.success', { name }) })] }))] }));
192
+ }, children: t('revoke_all_wallet_access', 'Revoke all wallet access') }) })), showSuccessMessage && (jsxs("div", { className: 'success-message', "data-testid": 'success-message', children: [jsx(SvgCheck, { "data-testid": 'success-icon' }), jsx(Typography, { variant: 'body_small', color: 'primary', copykey: 'global_wallet.wallets_delegated.success', "data-testid": 'success-text', children: t('global_wallet.wallets_delegated.success', { name }) })] }))] }));
193
193
  };
194
194
 
195
195
  export { WalletsDelegatedSettingsView, createHandleDelegate, createHandleRevoke, createHandleRevokeAll, createHandleWalletStatusChange, WalletsDelegatedSettingsView as default, mapWalletsForDelegate, mapWalletsForRevoke };