@dynamic-labs/sdk-react-core 3.0.0-alpha.6 → 3.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.
Files changed (72) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +10 -10
  5. package/src/index.cjs +7 -1
  6. package/src/index.d.ts +3 -1
  7. package/src/index.js +4 -1
  8. package/src/lib/Main.cjs +1 -0
  9. package/src/lib/Main.js +1 -0
  10. package/src/lib/context/DynamicContext/DynamicContext.cjs +14 -8
  11. package/src/lib/context/DynamicContext/DynamicContext.js +14 -8
  12. package/src/lib/context/DynamicContext/hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.cjs +15 -6
  13. package/src/lib/context/DynamicContext/hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.js +15 -6
  14. package/src/lib/context/DynamicContext/types/index.d.ts +4 -2
  15. package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.cjs +3 -2
  16. package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.d.ts +1 -1
  17. package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.js +3 -2
  18. package/src/lib/context/WidgetRegistry/WidgetRegistryContextProvider.cjs +128 -0
  19. package/src/lib/context/WidgetRegistry/WidgetRegistryContextProvider.d.ts +6 -0
  20. package/src/lib/context/WidgetRegistry/WidgetRegistryContextProvider.js +122 -0
  21. package/src/lib/context/WidgetRegistry/index.d.ts +1 -0
  22. package/src/lib/data/api/wallets/wallets.cjs +2 -1
  23. package/src/lib/data/api/wallets/wallets.d.ts +2 -1
  24. package/src/lib/data/api/wallets/wallets.js +2 -1
  25. package/src/lib/events/dynamicEvents.d.ts +2 -1
  26. package/src/lib/events/multiWallet.d.ts +5 -0
  27. package/src/lib/styles/index.shadow.cjs +1 -1
  28. package/src/lib/styles/index.shadow.js +1 -1
  29. package/src/lib/utils/functions/index.d.ts +1 -0
  30. package/src/lib/utils/functions/logVerboseTroubleshootingMessage/index.d.ts +1 -0
  31. package/src/lib/utils/functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.cjs +28 -0
  32. package/src/lib/utils/functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.d.ts +1 -0
  33. package/src/lib/utils/functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.js +24 -0
  34. package/src/lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.cjs +20 -0
  35. package/src/lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.d.ts +2 -2
  36. package/src/lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.js +20 -1
  37. package/src/lib/utils/hooks/index.d.ts +1 -0
  38. package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.cjs +3 -1
  39. package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.js +3 -1
  40. package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.cjs +6 -2
  41. package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.js +6 -2
  42. package/src/lib/utils/hooks/useRefreshUser/index.d.ts +1 -0
  43. package/src/lib/utils/hooks/useRefreshUser/useRefreshUser.cjs +90 -0
  44. package/src/lib/utils/hooks/useRefreshUser/useRefreshUser.d.ts +8 -0
  45. package/src/lib/utils/hooks/useRefreshUser/useRefreshUser.js +86 -0
  46. package/src/lib/utils/hooks/useSwitchNetwork/index.d.ts +1 -0
  47. package/src/lib/utils/hooks/useSwitchNetwork/useSwitchNetwork.cjs +26 -0
  48. package/src/lib/utils/hooks/useSwitchNetwork/useSwitchNetwork.d.ts +5 -0
  49. package/src/lib/utils/hooks/useSwitchNetwork/useSwitchNetwork.js +22 -0
  50. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.cjs +7 -6
  51. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.js +7 -6
  52. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.cjs +44 -27
  53. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.js +45 -28
  54. package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.cjs +4 -14
  55. package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.js +5 -15
  56. package/src/lib/views/TransactionConfirmationView/TransactionConfirmationView.cjs +3 -1
  57. package/src/lib/views/TransactionConfirmationView/TransactionConfirmationView.js +3 -1
  58. package/src/lib/views/WalletList/WalletList.cjs +1 -3
  59. package/src/lib/views/WalletList/WalletList.js +1 -3
  60. package/src/lib/views/WalletList/hooks/useTabState.cjs +6 -81
  61. package/src/lib/views/WalletList/hooks/useTabState.d.ts +6 -3
  62. package/src/lib/views/WalletList/hooks/useTabState.js +6 -81
  63. package/src/lib/widgets/DynamicMultiWalletPromptsWidget/DynamicMultiWalletPromptsWidget.cjs +5 -5
  64. package/src/lib/widgets/DynamicMultiWalletPromptsWidget/DynamicMultiWalletPromptsWidget.js +5 -5
  65. package/src/lib/widgets/DynamicWidget/components/DynamicUserProfile/DynamicUserProfile.cjs +4 -1
  66. package/src/lib/widgets/DynamicWidget/components/DynamicUserProfile/DynamicUserProfile.js +4 -1
  67. package/src/lib/widgets/DynamicWidget/prompts/PrimaryNotConnectedModal/PrimaryNotConnectedModal.cjs +1 -1
  68. package/src/lib/widgets/DynamicWidget/prompts/PrimaryNotConnectedModal/PrimaryNotConnectedModal.js +1 -1
  69. package/src/lib/views/WalletList/utils/getInitialTabIndex/getInitialTabIndex.cjs +0 -22
  70. package/src/lib/views/WalletList/utils/getInitialTabIndex/getInitialTabIndex.d.ts +0 -2
  71. package/src/lib/views/WalletList/utils/getInitialTabIndex/getInitialTabIndex.js +0 -18
  72. package/src/lib/views/WalletList/utils/getInitialTabIndex/index.d.ts +0 -1
@@ -22,7 +22,7 @@ require('@dynamic-labs/sdk-api-core');
22
22
  require('../../shared/logger.cjs');
23
23
  require('@dynamic-labs/iconic');
24
24
  require('@dynamic-labs/wallet-connector-core');
25
- var ViewContext = require('../../context/ViewContext/ViewContext.cjs');
25
+ require('../../context/ViewContext/ViewContext.cjs');
26
26
  require('@dynamic-labs/wallet-book');
27
27
  require('../../utils/constants/colors.cjs');
28
28
  require('../../utils/constants/values.cjs');
@@ -86,13 +86,13 @@ require('../DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.cjs
86
86
  require('../DynamicWidget/context/DynamicWidgetContext.cjs');
87
87
  require('../../views/TransactionConfirmationView/helpers/transactionErrorMessage.cjs');
88
88
  require('../DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
89
+ var WidgetRegistryContextProvider = require('../../context/WidgetRegistry/WidgetRegistryContextProvider.cjs');
89
90
 
90
- const pendingSignModalView = ['pending-signature', 'wallet-sign'];
91
91
  const DynamicMultiWalletPromptsWidget = () => {
92
92
  const isLoggedIn = useIsLoggedIn.useIsLoggedIn();
93
- const { showAuthFlow } = useInternalDynamicContext.useInternalDynamicContext();
94
- const { view } = ViewContext.useViewContext();
95
- const isRenderingSignMessageInLinkWalletModal = showAuthFlow && pendingSignModalView.includes(view.type);
93
+ const isUserProfilePresent = WidgetRegistryContextProvider.useWidgetRegistryCheck('user-profile');
94
+ const { showAuthFlow, showDynamicUserProfile } = useInternalDynamicContext.useInternalDynamicContext();
95
+ const isRenderingSignMessageInLinkWalletModal = showAuthFlow || (showDynamicUserProfile && isUserProfilePresent);
96
96
  const multiWalletPromptState = useMultiWalletPromptState.useMultiWalletPromptState();
97
97
  const mapMultiWalletPromptStateToModalComponent = {
98
98
  awaiting_connection: AwaitingConnectionModal.AwaitingConnectionModal,
@@ -18,7 +18,7 @@ import '@dynamic-labs/sdk-api-core';
18
18
  import '../../shared/logger.js';
19
19
  import '@dynamic-labs/iconic';
20
20
  import '@dynamic-labs/wallet-connector-core';
21
- import { useViewContext } from '../../context/ViewContext/ViewContext.js';
21
+ import '../../context/ViewContext/ViewContext.js';
22
22
  import '@dynamic-labs/wallet-book';
23
23
  import '../../utils/constants/colors.js';
24
24
  import '../../utils/constants/values.js';
@@ -82,13 +82,13 @@ import '../DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.js';
82
82
  import '../DynamicWidget/context/DynamicWidgetContext.js';
83
83
  import '../../views/TransactionConfirmationView/helpers/transactionErrorMessage.js';
84
84
  import '../DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.js';
85
+ import { useWidgetRegistryCheck } from '../../context/WidgetRegistry/WidgetRegistryContextProvider.js';
85
86
 
86
- const pendingSignModalView = ['pending-signature', 'wallet-sign'];
87
87
  const DynamicMultiWalletPromptsWidget = () => {
88
88
  const isLoggedIn = useIsLoggedIn();
89
- const { showAuthFlow } = useInternalDynamicContext();
90
- const { view } = useViewContext();
91
- const isRenderingSignMessageInLinkWalletModal = showAuthFlow && pendingSignModalView.includes(view.type);
89
+ const isUserProfilePresent = useWidgetRegistryCheck('user-profile');
90
+ const { showAuthFlow, showDynamicUserProfile } = useInternalDynamicContext();
91
+ const isRenderingSignMessageInLinkWalletModal = showAuthFlow || (showDynamicUserProfile && isUserProfilePresent);
92
92
  const multiWalletPromptState = useMultiWalletPromptState();
93
93
  const mapMultiWalletPromptStateToModalComponent = {
94
94
  awaiting_connection: AwaitingConnectionModal,
@@ -79,6 +79,7 @@ var SandboxIndicatorWrapper = require('../../../../components/SandboxIndicatorWr
79
79
  var DynamicWidgetContext = require('../../context/DynamicWidgetContext.cjs');
80
80
  var DynamicWidgetCard = require('../DynamicWidgetCard/DynamicWidgetCard.cjs');
81
81
  var DynamicWidgetVariants = require('../DynamicWidgetVariants/DynamicWidgetVariants.cjs');
82
+ var WidgetRegistryContextProvider = require('../../../../context/WidgetRegistry/WidgetRegistryContextProvider.cjs');
82
83
 
83
84
  const DynamicUserProfile = ({ variant, }) => {
84
85
  const { projectSettings, setShowDynamicUserProfile, showAuthFlow } = useInternalDynamicContext.useInternalDynamicContext();
@@ -100,7 +101,9 @@ const DynamicUserProfile = ({ variant, }) => {
100
101
  }
101
102
  }, [inlineControlsRef, variant, showAuthFlow, setShowDynamicUserProfile]);
102
103
  index$1.useOnClickOutside(widgetRef, closeOnOutsideClick);
103
- if (!projectSettings)
104
+ const shouldRenderUserProfile = Boolean(projectSettings);
105
+ WidgetRegistryContextProvider.useRegisterWidget('user-profile', shouldRenderUserProfile);
106
+ if (!shouldRenderUserProfile)
104
107
  return null;
105
108
  return (jsxRuntime.jsx(IsBrowser.IsBrowser, { children: jsxRuntime.jsx(PopperContext.PopperProvider, { children: jsxRuntime.jsx(DynamicWidgetVariants.DynamicWidgetVariants, { isOpen: isOpen, setIsOpen: setIsOpen, variant: _variant, zIndex: index.widgetModalZIndex, children: jsxRuntime.jsx(SandboxIndicatorWrapper.SandboxIndicatorWrapper, { children: jsxRuntime.jsx(DynamicWidgetCard.DynamicWidgetCard, { ref: widgetRef, children: jsxRuntime.jsx(DynamicUserProfileLayout.DynamicUserProfileLayout, { variant: variant }) }) }) }) }) }));
106
109
  };
@@ -75,6 +75,7 @@ import { SandboxIndicatorWrapper } from '../../../../components/SandboxIndicator
75
75
  import { useWidgetContext } from '../../context/DynamicWidgetContext.js';
76
76
  import { DynamicWidgetCard } from '../DynamicWidgetCard/DynamicWidgetCard.js';
77
77
  import { DynamicWidgetVariants } from '../DynamicWidgetVariants/DynamicWidgetVariants.js';
78
+ import { useRegisterWidget } from '../../../../context/WidgetRegistry/WidgetRegistryContextProvider.js';
78
79
 
79
80
  const DynamicUserProfile = ({ variant, }) => {
80
81
  const { projectSettings, setShowDynamicUserProfile, showAuthFlow } = useInternalDynamicContext();
@@ -96,7 +97,9 @@ const DynamicUserProfile = ({ variant, }) => {
96
97
  }
97
98
  }, [inlineControlsRef, variant, showAuthFlow, setShowDynamicUserProfile]);
98
99
  useOnClickOutside(widgetRef, closeOnOutsideClick);
99
- if (!projectSettings)
100
+ const shouldRenderUserProfile = Boolean(projectSettings);
101
+ useRegisterWidget('user-profile', shouldRenderUserProfile);
102
+ if (!shouldRenderUserProfile)
100
103
  return null;
101
104
  return (jsx(IsBrowser, { children: jsx(PopperProvider, { children: jsx(DynamicWidgetVariants, { isOpen: isOpen, setIsOpen: setIsOpen, variant: _variant, zIndex: widgetModalZIndex, children: jsx(SandboxIndicatorWrapper, { children: jsx(DynamicWidgetCard, { ref: widgetRef, children: jsx(DynamicUserProfileLayout, { variant: variant }) }) }) }) }) }));
102
105
  };
@@ -87,7 +87,7 @@ require('../../../../context/IpConfigurationContext/IpConfigurationContext.cjs')
87
87
  const PrimaryNotConnectedContent = () => {
88
88
  var _a;
89
89
  const { primaryWallet } = useInternalDynamicContext.useInternalDynamicContext();
90
- return (jsxRuntime.jsxs(DefaultPromptModal.DefaultPromptLayout, { dataTestId: 'wallet-not-connected', icon: jsxRuntime.jsx(walletBook.WalletIcon, { walletKey: (_a = primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector) === null || _a === void 0 ? void 0 : _a.key }), title: `Switch wallet in ${primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.name}`, children: [jsxRuntime.jsxs(Typography.Typography, { variant: 'body_normal', color: 'secondary', weight: 'regular', "data-testid": 'content', children: ["Your active wallet in", ' ', jsxRuntime.jsx(Typography.Typography, { as: 'span', weight: 'medium', color: 'primary', children: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.name }), ' ', "is not linked. Please switch to wallet", ' ', jsxRuntime.jsx(Typography.Typography, { as: 'span', weight: 'medium', color: 'primary', children: shortenWalletAddress.shortenWalletAddress(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.address, 3, 3) }), ' ', "to log in."] }), jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', color: 'secondary', weight: 'regular', "data-testid": 'content', children: "You can link this wallet to this account after you log in." }), jsxRuntime.jsx(Divider.Divider, { fullWidth: true, text: 'Or' }), jsxRuntime.jsx(LogoutButton.LogoutButton, { isTextButton: false, buttonClassName: 'primary-not-connected__log-out-button' })] }));
90
+ return (jsxRuntime.jsxs(DefaultPromptModal.DefaultPromptLayout, { dataTestId: 'wallet-not-connected', icon: jsxRuntime.jsx(walletBook.WalletIcon, { walletKey: (_a = primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector) === null || _a === void 0 ? void 0 : _a.key }), title: `Switch wallet in ${primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.name}`, children: [jsxRuntime.jsxs(Typography.Typography, { variant: 'body_normal', color: 'secondary', weight: 'regular', "data-testid": 'content', children: ["Your active wallet in", ' ', jsxRuntime.jsx(Typography.Typography, { as: 'span', weight: 'medium', color: 'primary', children: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.name }), ' ', "is not linked. Please switch to wallet", ' ', jsxRuntime.jsx(Typography.Typography, { as: 'span', weight: 'medium', color: 'primary', children: shortenWalletAddress.shortenWalletAddress(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.address, 3, 3) }), "."] }), jsxRuntime.jsx(Divider.Divider, { fullWidth: true, text: 'Or' }), jsxRuntime.jsx(LogoutButton.LogoutButton, { isTextButton: false, buttonClassName: 'primary-not-connected__log-out-button' })] }));
91
91
  };
92
92
  const PrimaryNotConnectedWidgetPortal = () => (jsxRuntime.jsx(WidgetPortal.WidgetPortal, { children: jsxRuntime.jsx(PrimaryNotConnectedContent, {}) }));
93
93
  const PrimaryNotConnectedModal = () => {
@@ -83,7 +83,7 @@ import '../../../../context/IpConfigurationContext/IpConfigurationContext.js';
83
83
  const PrimaryNotConnectedContent = () => {
84
84
  var _a;
85
85
  const { primaryWallet } = useInternalDynamicContext();
86
- return (jsxs(DefaultPromptLayout, { dataTestId: 'wallet-not-connected', icon: jsx(WalletIcon, { walletKey: (_a = primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector) === null || _a === void 0 ? void 0 : _a.key }), title: `Switch wallet in ${primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.name}`, children: [jsxs(Typography, { variant: 'body_normal', color: 'secondary', weight: 'regular', "data-testid": 'content', children: ["Your active wallet in", ' ', jsx(Typography, { as: 'span', weight: 'medium', color: 'primary', children: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.name }), ' ', "is not linked. Please switch to wallet", ' ', jsx(Typography, { as: 'span', weight: 'medium', color: 'primary', children: shortenWalletAddress(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.address, 3, 3) }), ' ', "to log in."] }), jsx(Typography, { variant: 'body_normal', color: 'secondary', weight: 'regular', "data-testid": 'content', children: "You can link this wallet to this account after you log in." }), jsx(Divider, { fullWidth: true, text: 'Or' }), jsx(LogoutButton, { isTextButton: false, buttonClassName: 'primary-not-connected__log-out-button' })] }));
86
+ return (jsxs(DefaultPromptLayout, { dataTestId: 'wallet-not-connected', icon: jsx(WalletIcon, { walletKey: (_a = primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector) === null || _a === void 0 ? void 0 : _a.key }), title: `Switch wallet in ${primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.name}`, children: [jsxs(Typography, { variant: 'body_normal', color: 'secondary', weight: 'regular', "data-testid": 'content', children: ["Your active wallet in", ' ', jsx(Typography, { as: 'span', weight: 'medium', color: 'primary', children: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.name }), ' ', "is not linked. Please switch to wallet", ' ', jsx(Typography, { as: 'span', weight: 'medium', color: 'primary', children: shortenWalletAddress(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.address, 3, 3) }), "."] }), jsx(Divider, { fullWidth: true, text: 'Or' }), jsx(LogoutButton, { isTextButton: false, buttonClassName: 'primary-not-connected__log-out-button' })] }));
87
87
  };
88
88
  const PrimaryNotConnectedWidgetPortal = () => (jsx(WidgetPortal, { children: jsx(PrimaryNotConnectedContent, {}) }));
89
89
  const PrimaryNotConnectedModal = () => {
@@ -1,22 +0,0 @@
1
- 'use client'
2
- 'use strict';
3
-
4
- Object.defineProperty(exports, '__esModule', { value: true });
5
-
6
- const getInitialTabIndex = (walletListViewSettings, defaultTabIndex) => {
7
- var _a, _b, _c, _d;
8
- if (!walletListViewSettings) {
9
- return null;
10
- }
11
- if (!((_b = (_a = walletListViewSettings.tabs) === null || _a === void 0 ? void 0 : _a.items) === null || _b === void 0 ? void 0 : _b.length)) {
12
- return null;
13
- }
14
- if (defaultTabIndex < 0) {
15
- return 0;
16
- }
17
- const lastIndex = ((_d = (_c = walletListViewSettings.tabs) === null || _c === void 0 ? void 0 : _c.items.length) !== null && _d !== void 0 ? _d : 1) - 1;
18
- const initialTabIndex = Math.min(lastIndex, defaultTabIndex);
19
- return initialTabIndex;
20
- };
21
-
22
- exports.getInitialTabIndex = getInitialTabIndex;
@@ -1,2 +0,0 @@
1
- import { WalletListViewSettings } from '../../../../context/DynamicContext/types';
2
- export declare const getInitialTabIndex: (walletListViewSettings: WalletListViewSettings | undefined, defaultTabIndex: number) => number | null;
@@ -1,18 +0,0 @@
1
- 'use client'
2
- const getInitialTabIndex = (walletListViewSettings, defaultTabIndex) => {
3
- var _a, _b, _c, _d;
4
- if (!walletListViewSettings) {
5
- return null;
6
- }
7
- if (!((_b = (_a = walletListViewSettings.tabs) === null || _a === void 0 ? void 0 : _a.items) === null || _b === void 0 ? void 0 : _b.length)) {
8
- return null;
9
- }
10
- if (defaultTabIndex < 0) {
11
- return 0;
12
- }
13
- const lastIndex = ((_d = (_c = walletListViewSettings.tabs) === null || _c === void 0 ? void 0 : _c.items.length) !== null && _d !== void 0 ? _d : 1) - 1;
14
- const initialTabIndex = Math.min(lastIndex, defaultTabIndex);
15
- return initialTabIndex;
16
- };
17
-
18
- export { getInitialTabIndex };
@@ -1 +0,0 @@
1
- export { getInitialTabIndex } from './getInitialTabIndex';