@dynamic-labs/sdk-react-core 3.0.0-alpha.6 → 3.0.0-alpha.8

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 (86) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +10 -10
  5. package/src/index.cjs +9 -1
  6. package/src/index.d.ts +4 -1
  7. package/src/index.js +5 -1
  8. package/src/lib/Main.cjs +2 -0
  9. package/src/lib/Main.js +2 -0
  10. package/src/lib/context/DynamicContext/DynamicContext.cjs +15 -8
  11. package/src/lib/context/DynamicContext/DynamicContext.js +16 -9
  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/ReinitializeContext/ReinitializeContextProvider.cjs +113 -0
  19. package/src/lib/context/ReinitializeContext/ReinitializeContextProvider.d.ts +22 -0
  20. package/src/lib/context/ReinitializeContext/ReinitializeContextProvider.js +107 -0
  21. package/src/lib/context/ReinitializeContext/index.d.ts +1 -0
  22. package/src/lib/context/WalletContext/WalletContext.cjs +1 -1
  23. package/src/lib/context/WalletContext/WalletContext.js +1 -1
  24. package/src/lib/context/WidgetRegistry/WidgetRegistryContextProvider.cjs +128 -0
  25. package/src/lib/context/WidgetRegistry/WidgetRegistryContextProvider.d.ts +6 -0
  26. package/src/lib/context/WidgetRegistry/WidgetRegistryContextProvider.js +122 -0
  27. package/src/lib/context/WidgetRegistry/index.d.ts +1 -0
  28. package/src/lib/data/api/wallets/wallets.cjs +2 -1
  29. package/src/lib/data/api/wallets/wallets.d.ts +2 -1
  30. package/src/lib/data/api/wallets/wallets.js +2 -1
  31. package/src/lib/events/dynamicEvents.d.ts +2 -1
  32. package/src/lib/events/multiWallet.d.ts +6 -0
  33. package/src/lib/store/index.d.ts +1 -1
  34. package/src/lib/store/store.cjs +6 -0
  35. package/src/lib/store/store.d.ts +1 -0
  36. package/src/lib/store/store.js +6 -1
  37. package/src/lib/styles/index.shadow.cjs +1 -1
  38. package/src/lib/styles/index.shadow.js +1 -1
  39. package/src/lib/utils/functions/index.d.ts +1 -0
  40. package/src/lib/utils/functions/logVerboseTroubleshootingMessage/index.d.ts +1 -0
  41. package/src/lib/utils/functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.cjs +28 -0
  42. package/src/lib/utils/functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.d.ts +1 -0
  43. package/src/lib/utils/functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.js +24 -0
  44. package/src/lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.cjs +20 -0
  45. package/src/lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.d.ts +2 -2
  46. package/src/lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.js +20 -1
  47. package/src/lib/utils/hooks/index.d.ts +1 -0
  48. package/src/lib/utils/hooks/multiWallet/useVerifyOnAwaitingSignature/useVerifyOnAwaitingSignature.cjs +39 -13
  49. package/src/lib/utils/hooks/multiWallet/useVerifyOnAwaitingSignature/useVerifyOnAwaitingSignature.js +40 -14
  50. package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.cjs +3 -1
  51. package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.js +3 -1
  52. package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.cjs +6 -2
  53. package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.js +6 -2
  54. package/src/lib/utils/hooks/useRefreshUser/index.d.ts +1 -0
  55. package/src/lib/utils/hooks/useRefreshUser/useRefreshUser.cjs +90 -0
  56. package/src/lib/utils/hooks/useRefreshUser/useRefreshUser.d.ts +8 -0
  57. package/src/lib/utils/hooks/useRefreshUser/useRefreshUser.js +86 -0
  58. package/src/lib/utils/hooks/useSwitchNetwork/index.d.ts +1 -0
  59. package/src/lib/utils/hooks/useSwitchNetwork/useSwitchNetwork.cjs +26 -0
  60. package/src/lib/utils/hooks/useSwitchNetwork/useSwitchNetwork.d.ts +5 -0
  61. package/src/lib/utils/hooks/useSwitchNetwork/useSwitchNetwork.js +22 -0
  62. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.cjs +7 -6
  63. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.js +7 -6
  64. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.cjs +118 -25
  65. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.js +119 -26
  66. package/src/lib/utils/hooks/useWalletItemActions/useWalletItemActions.cjs +20 -1
  67. package/src/lib/utils/hooks/useWalletItemActions/useWalletItemActions.js +20 -1
  68. package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.cjs +4 -14
  69. package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.js +5 -15
  70. package/src/lib/views/TransactionConfirmationView/TransactionConfirmationView.cjs +3 -1
  71. package/src/lib/views/TransactionConfirmationView/TransactionConfirmationView.js +3 -1
  72. package/src/lib/views/WalletList/WalletList.cjs +1 -3
  73. package/src/lib/views/WalletList/WalletList.js +1 -3
  74. package/src/lib/views/WalletList/hooks/useTabState.cjs +6 -81
  75. package/src/lib/views/WalletList/hooks/useTabState.d.ts +6 -3
  76. package/src/lib/views/WalletList/hooks/useTabState.js +6 -81
  77. package/src/lib/widgets/DynamicMultiWalletPromptsWidget/DynamicMultiWalletPromptsWidget.cjs +5 -5
  78. package/src/lib/widgets/DynamicMultiWalletPromptsWidget/DynamicMultiWalletPromptsWidget.js +5 -5
  79. package/src/lib/widgets/DynamicWidget/components/DynamicUserProfile/DynamicUserProfile.cjs +4 -1
  80. package/src/lib/widgets/DynamicWidget/components/DynamicUserProfile/DynamicUserProfile.js +4 -1
  81. package/src/lib/widgets/DynamicWidget/prompts/PrimaryNotConnectedModal/PrimaryNotConnectedModal.cjs +1 -1
  82. package/src/lib/widgets/DynamicWidget/prompts/PrimaryNotConnectedModal/PrimaryNotConnectedModal.js +1 -1
  83. package/src/lib/views/WalletList/utils/getInitialTabIndex/getInitialTabIndex.cjs +0 -22
  84. package/src/lib/views/WalletList/utils/getInitialTabIndex/getInitialTabIndex.d.ts +0 -2
  85. package/src/lib/views/WalletList/utils/getInitialTabIndex/getInitialTabIndex.js +0 -18
  86. package/src/lib/views/WalletList/utils/getInitialTabIndex/index.d.ts +0 -1
@@ -0,0 +1,26 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var _tslib = require('../../../../../_virtual/_tslib.cjs');
7
+ var React = require('react');
8
+ var useDynamicContext = require('../../../context/DynamicContext/useDynamicContext/useDynamicContext.cjs');
9
+ require('../../../context/DynamicContext/DynamicContext.cjs');
10
+ var ViewContext = require('../../../context/ViewContext/ViewContext.cjs');
11
+
12
+ const useSwitchNetwork = () => {
13
+ const { setShowAuthFlow } = useDynamicContext.useDynamicContext();
14
+ const { setView } = ViewContext.useViewContext();
15
+ const switchNetwork = React.useCallback((_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ wallet, network, }) {
16
+ if (wallet.connector.switchNetworkOnlyFromWallet) {
17
+ setShowAuthFlow(true);
18
+ setView('network-not-supported-manual');
19
+ return;
20
+ }
21
+ yield wallet.connector.switchNetwork({ networkChainId: network });
22
+ }), [setShowAuthFlow, setView]);
23
+ return switchNetwork;
24
+ };
25
+
26
+ exports.useSwitchNetwork = useSwitchNetwork;
@@ -0,0 +1,5 @@
1
+ import { Wallet } from '../../../shared';
2
+ export declare const useSwitchNetwork: () => ({ wallet, network, }: {
3
+ wallet: Wallet;
4
+ network: number | string;
5
+ }) => Promise<void>;
@@ -0,0 +1,22 @@
1
+ 'use client'
2
+ import { __awaiter } from '../../../../../_virtual/_tslib.js';
3
+ import { useCallback } from 'react';
4
+ import { useDynamicContext } from '../../../context/DynamicContext/useDynamicContext/useDynamicContext.js';
5
+ import '../../../context/DynamicContext/DynamicContext.js';
6
+ import { useViewContext } from '../../../context/ViewContext/ViewContext.js';
7
+
8
+ const useSwitchNetwork = () => {
9
+ const { setShowAuthFlow } = useDynamicContext();
10
+ const { setView } = useViewContext();
11
+ const switchNetwork = useCallback((_a) => __awaiter(void 0, [_a], void 0, function* ({ wallet, network, }) {
12
+ if (wallet.connector.switchNetworkOnlyFromWallet) {
13
+ setShowAuthFlow(true);
14
+ setView('network-not-supported-manual');
15
+ return;
16
+ }
17
+ yield wallet.connector.switchNetwork({ networkChainId: network });
18
+ }), [setShowAuthFlow, setView]);
19
+ return switchNetwork;
20
+ };
21
+
22
+ export { useSwitchNetwork };
@@ -80,6 +80,7 @@ require('../../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWi
80
80
  require('../../../widgets/DynamicWidget/context/DynamicWidgetContext.cjs');
81
81
  require('../../../views/TransactionConfirmationView/helpers/transactionErrorMessage.cjs');
82
82
  require('../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
83
+ var logVerboseTroubleshootingMessage = require('../../functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.cjs');
83
84
 
84
85
  const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOptions, multiWalletWidgetState, setDesktopUri, setMultiWalletWidgetState, setQrcodeUri, primaryWalletId, setPrimaryWalletId, user, canHaveMultipleWalletsConnected, }) => {
85
86
  const [showQrcodeModal, setShowQrcodeModal] = React.useState(false);
@@ -93,6 +94,7 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
93
94
  walletConnectorOptions,
94
95
  });
95
96
  }, [user, primaryWalletId, walletConnectorOptions]);
97
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('linkedWallets', linkedWallets);
96
98
  const walletsBasedOnAuthMode = React.useMemo(() => {
97
99
  // Before signing the first message we are using connected wallets list
98
100
  // This is because we want the first connected wallet to have events applied by useWalletEventListeners
@@ -112,6 +114,7 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
112
114
  }
113
115
  return connectedWallets !== null && connectedWallets !== void 0 ? connectedWallets : [];
114
116
  }, [authMode, connectedWallets, linkedWallets, user]);
117
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('walletsBasedOnAuthMode', walletsBasedOnAuthMode);
115
118
  /**
116
119
  * This useEffect is temporary.
117
120
  * While the wallet connectors don't use the event emitter, we need to manually
@@ -124,16 +127,14 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
124
127
  }), [walletsBasedOnAuthMode]);
125
128
  const { connectedWalletsMap, didConnectedStateLoad } = useWalletsConnectionState.useWalletsConnectionState(walletsBasedOnAuthMode);
126
129
  const wallets = React.useMemo(() => walletsBasedOnAuthMode.map((wallet) => (Object.assign(Object.assign({}, wallet), { connected: Boolean(connectedWalletsMap[getWalletIdentifier.getWalletIdentifier(wallet)]) }))), [connectedWalletsMap, walletsBasedOnAuthMode]);
130
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('wallets', wallets);
131
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('didConnectedStateLoad', didConnectedStateLoad);
127
132
  const { setUserWallets } = UserWalletsContext.useInternalUserWallets();
128
133
  // Keep userWallets in sync whenever linkedWallets changes
129
134
  React.useEffect(() => {
130
- // we don't want to set the user wallets until their connected states have been computed
131
- // but that doesn't matter if the wallets list is empty, and if we return early when
132
- // the wallets list is empty, we'll never set the user wallets correctly after logout
133
- if (!didConnectedStateLoad.current && wallets.length)
134
- return;
135
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('[useWalletConnectors] will call setUserWallets', wallets);
135
136
  setUserWallets((userWallets) => updateUserWalletsFromLinkedWallets.updateUserWalletsFromLinkedWallets(userWallets, wallets));
136
- }, [didConnectedStateLoad, setUserWallets, wallets]);
137
+ }, [setUserWallets, wallets]);
137
138
  const primaryWallet = React.useMemo(() => { var _a; return (_a = wallets.find((wallet) => wallet.id === primaryWalletId)) !== null && _a !== void 0 ? _a : null; }, [primaryWalletId, wallets]);
138
139
  const secondaryWallets = React.useMemo(() => canHaveMultipleWalletsConnected
139
140
  ? wallets.filter((wallet) => wallet.id !== primaryWalletId)
@@ -76,6 +76,7 @@ import '../../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWid
76
76
  import '../../../widgets/DynamicWidget/context/DynamicWidgetContext.js';
77
77
  import '../../../views/TransactionConfirmationView/helpers/transactionErrorMessage.js';
78
78
  import '../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.js';
79
+ import { logVerboseTroubleshootingMessage } from '../../functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.js';
79
80
 
80
81
  const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOptions, multiWalletWidgetState, setDesktopUri, setMultiWalletWidgetState, setQrcodeUri, primaryWalletId, setPrimaryWalletId, user, canHaveMultipleWalletsConnected, }) => {
81
82
  const [showQrcodeModal, setShowQrcodeModal] = useState(false);
@@ -89,6 +90,7 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
89
90
  walletConnectorOptions,
90
91
  });
91
92
  }, [user, primaryWalletId, walletConnectorOptions]);
93
+ logVerboseTroubleshootingMessage('linkedWallets', linkedWallets);
92
94
  const walletsBasedOnAuthMode = useMemo(() => {
93
95
  // Before signing the first message we are using connected wallets list
94
96
  // This is because we want the first connected wallet to have events applied by useWalletEventListeners
@@ -108,6 +110,7 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
108
110
  }
109
111
  return connectedWallets !== null && connectedWallets !== void 0 ? connectedWallets : [];
110
112
  }, [authMode, connectedWallets, linkedWallets, user]);
113
+ logVerboseTroubleshootingMessage('walletsBasedOnAuthMode', walletsBasedOnAuthMode);
111
114
  /**
112
115
  * This useEffect is temporary.
113
116
  * While the wallet connectors don't use the event emitter, we need to manually
@@ -120,16 +123,14 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
120
123
  }), [walletsBasedOnAuthMode]);
121
124
  const { connectedWalletsMap, didConnectedStateLoad } = useWalletsConnectionState(walletsBasedOnAuthMode);
122
125
  const wallets = useMemo(() => walletsBasedOnAuthMode.map((wallet) => (Object.assign(Object.assign({}, wallet), { connected: Boolean(connectedWalletsMap[getWalletIdentifier(wallet)]) }))), [connectedWalletsMap, walletsBasedOnAuthMode]);
126
+ logVerboseTroubleshootingMessage('wallets', wallets);
127
+ logVerboseTroubleshootingMessage('didConnectedStateLoad', didConnectedStateLoad);
123
128
  const { setUserWallets } = useInternalUserWallets();
124
129
  // Keep userWallets in sync whenever linkedWallets changes
125
130
  useEffect(() => {
126
- // we don't want to set the user wallets until their connected states have been computed
127
- // but that doesn't matter if the wallets list is empty, and if we return early when
128
- // the wallets list is empty, we'll never set the user wallets correctly after logout
129
- if (!didConnectedStateLoad.current && wallets.length)
130
- return;
131
+ logVerboseTroubleshootingMessage('[useWalletConnectors] will call setUserWallets', wallets);
131
132
  setUserWallets((userWallets) => updateUserWalletsFromLinkedWallets(userWallets, wallets));
132
- }, [didConnectedStateLoad, setUserWallets, wallets]);
133
+ }, [setUserWallets, wallets]);
133
134
  const primaryWallet = useMemo(() => { var _a; return (_a = wallets.find((wallet) => wallet.id === primaryWalletId)) !== null && _a !== void 0 ? _a : null; }, [primaryWalletId, wallets]);
134
135
  const secondaryWallets = useMemo(() => canHaveMultipleWalletsConnected
135
136
  ? wallets.filter((wallet) => wallet.id !== primaryWalletId)
@@ -18,8 +18,66 @@ require('../../../shared/utils/classes/storage/localStorage.cjs');
18
18
  require('../../../shared/utils/classes/storage/sessionStorage.cjs');
19
19
  require('@dynamic-labs/utils');
20
20
  require('../../../shared/consts/index.cjs');
21
- require('../../../events/dynamicEvents.cjs');
21
+ var useDynamicEvents = require('../events/useDynamicEvents/useDynamicEvents.cjs');
22
22
  var useWalletConnectorEvent = require('../events/useWalletConnectorEvent/useWalletConnectorEvent.cjs');
23
+ require('@dynamic-labs/multi-wallet');
24
+ require('react-international-phone');
25
+ require('../../../config/ApiEndpoint.cjs');
26
+ require('@dynamic-labs/store');
27
+ require('../../../locale/locale.cjs');
28
+ require('../../../context/DynamicContext/DynamicContext.cjs');
29
+ require('../../../context/CaptchaContext/CaptchaContext.cjs');
30
+ require('../../../context/ErrorContext/ErrorContext.cjs');
31
+ require('../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
32
+ require('../../../context/AccountExistsContext/AccountExistsContext.cjs');
33
+ require('../../../context/UserWalletsContext/UserWalletsContext.cjs');
34
+ var dynamicEvents = require('../../../events/dynamicEvents.cjs');
35
+ require('../../../context/VerificationContext/VerificationContext.cjs');
36
+ require('react-dom');
37
+ require('../../../context/WalletContext/WalletContext.cjs');
38
+ require('../../../context/ThemeContext/ThemeContext.cjs');
39
+ require('../useUserUpdateRequest/useUpdateUser/userFieldsSchema.cjs');
40
+ require('@dynamic-labs/types');
41
+ require('../../../context/LoadingContext/LoadingContext.cjs');
42
+ require('yup');
43
+ require('../../../context/MockContext/MockContext.cjs');
44
+ require('../../../views/CollectUserDataView/useFields.cjs');
45
+ require('../../../context/FieldsStateContext/FieldsStateContext.cjs');
46
+ require('../../../context/UserFieldEditorContext/UserFieldEditorContext.cjs');
47
+ require('@dynamic-labs/rpc-providers');
48
+ require('react-i18next');
49
+ require('../../../components/Accordion/components/AccordionItem/AccordionItem.cjs');
50
+ require('../../../components/Alert/Alert.cjs');
51
+ require('../../../components/ShadowDOM/ShadowDOM.cjs');
52
+ require('../../../components/IconButton/IconButton.cjs');
53
+ require('../../../components/InlineWidget/InlineWidget.cjs');
54
+ require('../../../components/Input/Input.cjs');
55
+ require('../../../components/IsBrowser/IsBrowser.cjs');
56
+ require('../../../components/MenuList/Dropdown/Dropdown.cjs');
57
+ require('../../../components/Transition/ZoomTransition/ZoomTransition.cjs');
58
+ require('../../../components/Transition/SlideInUpTransition/SlideInUpTransition.cjs');
59
+ require('../../../components/Transition/OpacityTransition/OpacityTransition.cjs');
60
+ require('../../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.cjs');
61
+ require('../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.cjs');
62
+ require('../../../components/Popper/Popper/Popper.cjs');
63
+ require('../../../components/Popper/PopperContext/PopperContext.cjs');
64
+ require('react-focus-lock');
65
+ require('qrcode');
66
+ require('formik');
67
+ require('../../../views/WalletList/WalletList.cjs');
68
+ require('../../../context/SocialRedirectContext/SocialRedirectContext.cjs');
69
+ require('../../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.cjs');
70
+ require('@hcaptcha/react-hcaptcha');
71
+ require('../../../context/FooterAnimationContext/index.cjs');
72
+ require('../../../context/WalletGroupContext/WalletGroupContext.cjs');
73
+ require('../../../context/MfaSettingsContext/MfaSettingsContext.cjs');
74
+ require('../../../context/IpConfigurationContext/IpConfigurationContext.cjs');
75
+ require('../../../context/PasskeyContext/PasskeyContext.cjs');
76
+ require('../../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.cjs');
77
+ require('../../../widgets/DynamicWidget/context/DynamicWidgetContext.cjs');
78
+ require('../../../views/TransactionConfirmationView/helpers/transactionErrorMessage.cjs');
79
+ require('../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
80
+ var logVerboseTroubleshootingMessage = require('../../functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.cjs');
23
81
 
24
82
  const useWalletEventListeners = ({ disconnectWallet, handleLogOut, multiWallet, multiWalletWidgetState, primaryWallet, secondaryWallets, selectedWalletConnector, selectedWalletWithAction, setSelectedWalletConnectorKey, setSelectedWalletWithAction, setMultiWalletWidgetState, user, setPrimaryWalletId, authMode, refreshConnectedWallet, }) => {
25
83
  useWalletConnectorEvent.useWalletConnectorEvent(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, 'disconnect', () => {
@@ -33,9 +91,46 @@ const useWalletEventListeners = ({ disconnectWallet, handleLogOut, multiWallet,
33
91
  }
34
92
  refreshConnectedWallet(primaryWallet.id, primaryWallet.connector);
35
93
  });
36
- useWalletConnectorEvent.useWalletConnectorEvent(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, 'accountChange', ({ accounts }) => {
37
- logger.logger.debug('primary wallet account change', {
94
+ const handleAccountChangeWhenAwaitingAccountSwitch = React.useCallback((isPrimaryWallet, newAddress) => {
95
+ logger.logger.debug('handleAccountChangeWhenAwaitingAccountSwitch', {
96
+ isPrimaryWallet,
97
+ newAddress,
98
+ });
99
+ const linkedSecondaryWallet = secondaryWallets.find((wallet) => walletConnectorCore.isSameAddress(wallet.address, newAddress, wallet.chain));
100
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('[handleAccountChangeWhenAwaitingAccountSwitch]', { linkedSecondaryWallet });
101
+ // this means the user is linking a new account, so we need proof of ownership...
102
+ if (!linkedSecondaryWallet) {
103
+ setMultiWalletWidgetState('awaiting_signature', undefined, 'linking_new_wallet');
104
+ if (isPrimaryWallet && primaryWallet) {
105
+ setSelectedWalletConnectorKey(primaryWallet.connector.key);
106
+ }
107
+ return;
108
+ }
109
+ const isTryingToUpdateUnkownWallet = linkedSecondaryWallet.connector.key === 'unknown';
110
+ if (isTryingToUpdateUnkownWallet) {
111
+ //prompt the user to connect and sign with the wallet
112
+ dynamicEvents.dynamicEvents.emit('triggerConnectAndSign');
113
+ return;
114
+ }
115
+ // ...otherwise, the user is switching primary accounts betweeen the same wallet
116
+ setSelectedWalletWithAction(null);
117
+ setPrimaryWalletId(linkedSecondaryWallet.id);
118
+ setMultiWalletWidgetState('idle');
119
+ }, [
120
+ setMultiWalletWidgetState,
121
+ primaryWallet,
122
+ secondaryWallets,
123
+ setSelectedWalletConnectorKey,
124
+ setSelectedWalletWithAction,
125
+ setPrimaryWalletId,
126
+ ]);
127
+ const calculatePrimaryWalletMultiWalletStateFromAccounts = React.useCallback(({ accounts }) => {
128
+ logger.logger.debug('calculatePrimaryWalletMultiWalletStateFromAccounts', {
38
129
  accounts,
130
+ authMode,
131
+ multiWallet,
132
+ multiWalletWidgetState,
133
+ primaryWallet,
39
134
  });
40
135
  // change the api here
41
136
  if (!primaryWallet)
@@ -75,6 +170,26 @@ const useWalletEventListeners = ({ disconnectWallet, handleLogOut, multiWallet,
75
170
  logger.logger.error(`Unexpected multiWalletWidgetState (${multiWalletWidgetState}) and onAccountChange combination. Resetting state to idle.`);
76
171
  setMultiWalletWidgetState('idle');
77
172
  }
173
+ }, [
174
+ authMode,
175
+ handleAccountChangeWhenAwaitingAccountSwitch,
176
+ multiWallet,
177
+ multiWalletWidgetState,
178
+ primaryWallet,
179
+ refreshConnectedWallet,
180
+ secondaryWallets,
181
+ setMultiWalletWidgetState,
182
+ setPrimaryWalletId,
183
+ setSelectedWalletConnectorKey,
184
+ setSelectedWalletWithAction,
185
+ user,
186
+ ]);
187
+ useDynamicEvents.useInternalDynamicEvents('triggerComputePrimaryWalletMultiWalletStateFromAccounts', calculatePrimaryWalletMultiWalletStateFromAccounts);
188
+ useWalletConnectorEvent.useWalletConnectorEvent(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, 'accountChange', ({ accounts }) => {
189
+ logger.logger.debug('primary wallet account change', {
190
+ accounts,
191
+ });
192
+ calculatePrimaryWalletMultiWalletStateFromAccounts({ accounts });
78
193
  });
79
194
  const uniqueNonPrimaryWallets = React.useMemo(() => {
80
195
  const primaryConnector = primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector;
@@ -118,28 +233,6 @@ const useWalletEventListeners = ({ disconnectWallet, handleLogOut, multiWallet,
118
233
  }
119
234
  }
120
235
  });
121
- const handleAccountChangeWhenAwaitingAccountSwitch = React.useCallback((isPrimaryWallet, newAddress) => {
122
- const linkedSecondaryWallet = secondaryWallets.find((wallet) => walletConnectorCore.isSameAddress(wallet.address, newAddress, wallet.chain));
123
- // this means the user is linking a new account, so we need proof of ownership...
124
- if (!linkedSecondaryWallet) {
125
- setMultiWalletWidgetState('awaiting_signature', undefined, 'linking_new_wallet');
126
- if (isPrimaryWallet && primaryWallet) {
127
- setSelectedWalletConnectorKey(primaryWallet.connector.key);
128
- }
129
- return;
130
- }
131
- // ...otherwise, the user is switching primary accounts betweeen the same wallet
132
- setSelectedWalletWithAction(null);
133
- setPrimaryWalletId(linkedSecondaryWallet.id);
134
- setMultiWalletWidgetState('idle');
135
- }, [
136
- setMultiWalletWidgetState,
137
- primaryWallet,
138
- secondaryWallets,
139
- setSelectedWalletConnectorKey,
140
- setSelectedWalletWithAction,
141
- setPrimaryWalletId,
142
- ]);
143
236
  };
144
237
 
145
238
  exports.useWalletEventListeners = useWalletEventListeners;
@@ -1,6 +1,6 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../../../../_virtual/_tslib.js';
3
- import { useMemo, useCallback } from 'react';
3
+ import { useCallback, useMemo } from 'react';
4
4
  import { isSameAddress } from '@dynamic-labs/wallet-connector-core';
5
5
  import '@dynamic-labs/sdk-api-core';
6
6
  import { logger } from '../../../shared/logger.js';
@@ -14,8 +14,66 @@ import '../../../shared/utils/classes/storage/localStorage.js';
14
14
  import '../../../shared/utils/classes/storage/sessionStorage.js';
15
15
  import '@dynamic-labs/utils';
16
16
  import '../../../shared/consts/index.js';
17
- import '../../../events/dynamicEvents.js';
17
+ import { useInternalDynamicEvents } from '../events/useDynamicEvents/useDynamicEvents.js';
18
18
  import { useWalletConnectorEvent } from '../events/useWalletConnectorEvent/useWalletConnectorEvent.js';
19
+ import '@dynamic-labs/multi-wallet';
20
+ import 'react-international-phone';
21
+ import '../../../config/ApiEndpoint.js';
22
+ import '@dynamic-labs/store';
23
+ import '../../../locale/locale.js';
24
+ import '../../../context/DynamicContext/DynamicContext.js';
25
+ import '../../../context/CaptchaContext/CaptchaContext.js';
26
+ import '../../../context/ErrorContext/ErrorContext.js';
27
+ import '../../../context/AccessDeniedContext/AccessDeniedContext.js';
28
+ import '../../../context/AccountExistsContext/AccountExistsContext.js';
29
+ import '../../../context/UserWalletsContext/UserWalletsContext.js';
30
+ import { dynamicEvents } from '../../../events/dynamicEvents.js';
31
+ import '../../../context/VerificationContext/VerificationContext.js';
32
+ import 'react-dom';
33
+ import '../../../context/WalletContext/WalletContext.js';
34
+ import '../../../context/ThemeContext/ThemeContext.js';
35
+ import '../useUserUpdateRequest/useUpdateUser/userFieldsSchema.js';
36
+ import '@dynamic-labs/types';
37
+ import '../../../context/LoadingContext/LoadingContext.js';
38
+ import 'yup';
39
+ import '../../../context/MockContext/MockContext.js';
40
+ import '../../../views/CollectUserDataView/useFields.js';
41
+ import '../../../context/FieldsStateContext/FieldsStateContext.js';
42
+ import '../../../context/UserFieldEditorContext/UserFieldEditorContext.js';
43
+ import '@dynamic-labs/rpc-providers';
44
+ import 'react-i18next';
45
+ import '../../../components/Accordion/components/AccordionItem/AccordionItem.js';
46
+ import '../../../components/Alert/Alert.js';
47
+ import '../../../components/ShadowDOM/ShadowDOM.js';
48
+ import '../../../components/IconButton/IconButton.js';
49
+ import '../../../components/InlineWidget/InlineWidget.js';
50
+ import '../../../components/Input/Input.js';
51
+ import '../../../components/IsBrowser/IsBrowser.js';
52
+ import '../../../components/MenuList/Dropdown/Dropdown.js';
53
+ import '../../../components/Transition/ZoomTransition/ZoomTransition.js';
54
+ import '../../../components/Transition/SlideInUpTransition/SlideInUpTransition.js';
55
+ import '../../../components/Transition/OpacityTransition/OpacityTransition.js';
56
+ import '../../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.js';
57
+ import '../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.js';
58
+ import '../../../components/Popper/Popper/Popper.js';
59
+ import '../../../components/Popper/PopperContext/PopperContext.js';
60
+ import 'react-focus-lock';
61
+ import 'qrcode';
62
+ import 'formik';
63
+ import '../../../views/WalletList/WalletList.js';
64
+ import '../../../context/SocialRedirectContext/SocialRedirectContext.js';
65
+ import '../../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.js';
66
+ import '@hcaptcha/react-hcaptcha';
67
+ import '../../../context/FooterAnimationContext/index.js';
68
+ import '../../../context/WalletGroupContext/WalletGroupContext.js';
69
+ import '../../../context/MfaSettingsContext/MfaSettingsContext.js';
70
+ import '../../../context/IpConfigurationContext/IpConfigurationContext.js';
71
+ import '../../../context/PasskeyContext/PasskeyContext.js';
72
+ import '../../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.js';
73
+ import '../../../widgets/DynamicWidget/context/DynamicWidgetContext.js';
74
+ import '../../../views/TransactionConfirmationView/helpers/transactionErrorMessage.js';
75
+ import '../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.js';
76
+ import { logVerboseTroubleshootingMessage } from '../../functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.js';
19
77
 
20
78
  const useWalletEventListeners = ({ disconnectWallet, handleLogOut, multiWallet, multiWalletWidgetState, primaryWallet, secondaryWallets, selectedWalletConnector, selectedWalletWithAction, setSelectedWalletConnectorKey, setSelectedWalletWithAction, setMultiWalletWidgetState, user, setPrimaryWalletId, authMode, refreshConnectedWallet, }) => {
21
79
  useWalletConnectorEvent(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, 'disconnect', () => {
@@ -29,9 +87,46 @@ const useWalletEventListeners = ({ disconnectWallet, handleLogOut, multiWallet,
29
87
  }
30
88
  refreshConnectedWallet(primaryWallet.id, primaryWallet.connector);
31
89
  });
32
- useWalletConnectorEvent(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, 'accountChange', ({ accounts }) => {
33
- logger.debug('primary wallet account change', {
90
+ const handleAccountChangeWhenAwaitingAccountSwitch = useCallback((isPrimaryWallet, newAddress) => {
91
+ logger.debug('handleAccountChangeWhenAwaitingAccountSwitch', {
92
+ isPrimaryWallet,
93
+ newAddress,
94
+ });
95
+ const linkedSecondaryWallet = secondaryWallets.find((wallet) => isSameAddress(wallet.address, newAddress, wallet.chain));
96
+ logVerboseTroubleshootingMessage('[handleAccountChangeWhenAwaitingAccountSwitch]', { linkedSecondaryWallet });
97
+ // this means the user is linking a new account, so we need proof of ownership...
98
+ if (!linkedSecondaryWallet) {
99
+ setMultiWalletWidgetState('awaiting_signature', undefined, 'linking_new_wallet');
100
+ if (isPrimaryWallet && primaryWallet) {
101
+ setSelectedWalletConnectorKey(primaryWallet.connector.key);
102
+ }
103
+ return;
104
+ }
105
+ const isTryingToUpdateUnkownWallet = linkedSecondaryWallet.connector.key === 'unknown';
106
+ if (isTryingToUpdateUnkownWallet) {
107
+ //prompt the user to connect and sign with the wallet
108
+ dynamicEvents.emit('triggerConnectAndSign');
109
+ return;
110
+ }
111
+ // ...otherwise, the user is switching primary accounts betweeen the same wallet
112
+ setSelectedWalletWithAction(null);
113
+ setPrimaryWalletId(linkedSecondaryWallet.id);
114
+ setMultiWalletWidgetState('idle');
115
+ }, [
116
+ setMultiWalletWidgetState,
117
+ primaryWallet,
118
+ secondaryWallets,
119
+ setSelectedWalletConnectorKey,
120
+ setSelectedWalletWithAction,
121
+ setPrimaryWalletId,
122
+ ]);
123
+ const calculatePrimaryWalletMultiWalletStateFromAccounts = useCallback(({ accounts }) => {
124
+ logger.debug('calculatePrimaryWalletMultiWalletStateFromAccounts', {
34
125
  accounts,
126
+ authMode,
127
+ multiWallet,
128
+ multiWalletWidgetState,
129
+ primaryWallet,
35
130
  });
36
131
  // change the api here
37
132
  if (!primaryWallet)
@@ -71,6 +166,26 @@ const useWalletEventListeners = ({ disconnectWallet, handleLogOut, multiWallet,
71
166
  logger.error(`Unexpected multiWalletWidgetState (${multiWalletWidgetState}) and onAccountChange combination. Resetting state to idle.`);
72
167
  setMultiWalletWidgetState('idle');
73
168
  }
169
+ }, [
170
+ authMode,
171
+ handleAccountChangeWhenAwaitingAccountSwitch,
172
+ multiWallet,
173
+ multiWalletWidgetState,
174
+ primaryWallet,
175
+ refreshConnectedWallet,
176
+ secondaryWallets,
177
+ setMultiWalletWidgetState,
178
+ setPrimaryWalletId,
179
+ setSelectedWalletConnectorKey,
180
+ setSelectedWalletWithAction,
181
+ user,
182
+ ]);
183
+ useInternalDynamicEvents('triggerComputePrimaryWalletMultiWalletStateFromAccounts', calculatePrimaryWalletMultiWalletStateFromAccounts);
184
+ useWalletConnectorEvent(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, 'accountChange', ({ accounts }) => {
185
+ logger.debug('primary wallet account change', {
186
+ accounts,
187
+ });
188
+ calculatePrimaryWalletMultiWalletStateFromAccounts({ accounts });
74
189
  });
75
190
  const uniqueNonPrimaryWallets = useMemo(() => {
76
191
  const primaryConnector = primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector;
@@ -114,28 +229,6 @@ const useWalletEventListeners = ({ disconnectWallet, handleLogOut, multiWallet,
114
229
  }
115
230
  }
116
231
  });
117
- const handleAccountChangeWhenAwaitingAccountSwitch = useCallback((isPrimaryWallet, newAddress) => {
118
- const linkedSecondaryWallet = secondaryWallets.find((wallet) => isSameAddress(wallet.address, newAddress, wallet.chain));
119
- // this means the user is linking a new account, so we need proof of ownership...
120
- if (!linkedSecondaryWallet) {
121
- setMultiWalletWidgetState('awaiting_signature', undefined, 'linking_new_wallet');
122
- if (isPrimaryWallet && primaryWallet) {
123
- setSelectedWalletConnectorKey(primaryWallet.connector.key);
124
- }
125
- return;
126
- }
127
- // ...otherwise, the user is switching primary accounts betweeen the same wallet
128
- setSelectedWalletWithAction(null);
129
- setPrimaryWalletId(linkedSecondaryWallet.id);
130
- setMultiWalletWidgetState('idle');
131
- }, [
132
- setMultiWalletWidgetState,
133
- primaryWallet,
134
- secondaryWallets,
135
- setSelectedWalletConnectorKey,
136
- setSelectedWalletWithAction,
137
- setPrimaryWalletId,
138
- ]);
139
232
  };
140
233
 
141
234
  export { useWalletEventListeners };
@@ -9,7 +9,7 @@ var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
9
9
  require('react');
10
10
  require('../../../context/DynamicContext/DynamicContext.cjs');
11
11
  require('@dynamic-labs/sdk-api-core');
12
- require('../../../shared/logger.cjs');
12
+ var logger = require('../../../shared/logger.cjs');
13
13
  require('@dynamic-labs/iconic');
14
14
  require('react/jsx-runtime');
15
15
  var ViewContext = require('../../../context/ViewContext/ViewContext.cjs');
@@ -31,6 +31,7 @@ require('@dynamic-labs/multi-wallet');
31
31
  require('react-international-phone');
32
32
  var requiresTwoStepAuthentication = require('../../functions/requiresTwoStepAuthentication/requiresTwoStepAuthentication.cjs');
33
33
  require('@dynamic-labs/store');
34
+ var logVerboseTroubleshootingMessage = require('../../functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.cjs');
34
35
  require('../../../locale/locale.cjs');
35
36
  require('../../../context/CaptchaContext/CaptchaContext.cjs');
36
37
  var useConnectAndSignSplitSteps = require('../authenticationHooks/useConnectAndSignSplitSteps/useConnectAndSignSplitSteps.cjs');
@@ -90,7 +91,11 @@ const useWalletItemActions = () => {
90
91
  const { onlyConnectUser } = useConnectAndSignSplitSteps.useConnectAndSignSplitSteps();
91
92
  const connectAndSignWallet = useConnectAndSign.useConnectAndSign();
92
93
  const handleCustodialWalletClick = (walletConnector) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
94
+ logger.logger.debug('handleCustodialWalletClick', walletConnector);
93
95
  const twoStepAuthentication = requiresTwoStepAuthentication.requiresTwoStepAuthentication(walletConnector);
96
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('[handleCustodialWalletClick]', {
97
+ twoStepAuthentication,
98
+ });
94
99
  if (twoStepAuthentication) {
95
100
  setSelectedWalletConnectorKey(walletConnector.key);
96
101
  yield onlyConnectUser({
@@ -105,6 +110,7 @@ const useWalletItemActions = () => {
105
110
  });
106
111
  const handleMobileWalletClick = (walletConnector) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
107
112
  var _a;
113
+ logger.logger.debug('handleMobileWalletClick', walletConnector);
108
114
  setSelectedWalletConnectorKey(walletConnector.key);
109
115
  // We need to set to LS when about to verify phantom wallet on mobile
110
116
  // because the deeplink interrupts this code execution and then redirects back on a new tab.
@@ -124,10 +130,12 @@ const useWalletItemActions = () => {
124
130
  onlyConnectUser({ walletConnector });
125
131
  });
126
132
  const handleInstalledExtensionClick = (walletConnector) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
133
+ logger.logger.debug('handleInstalledExtensionClick', walletConnector);
127
134
  setSelectedWalletConnectorKey(walletConnector.key);
128
135
  setMultiWalletWidgetState('awaiting_signature', undefined, 'linking_new_wallet');
129
136
  });
130
137
  const handleUninstalledClick = (walletConnector) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
138
+ logger.logger.debug('handleUninstalledClick', walletConnector);
131
139
  setSelectedWalletConnectorKey(walletConnector.key);
132
140
  if (!walletConnector.canConnectViaQrCode) {
133
141
  setView('no-qr-not-installed');
@@ -149,8 +157,14 @@ const useWalletItemActions = () => {
149
157
  setError(undefined);
150
158
  });
151
159
  const handleAlreadyConnectedWallet = (walletConnector) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
160
+ logger.logger.debug('handleAlreadyConnectedWallet', walletConnector);
152
161
  const connectedAccounts = yield walletConnector.getConnectedAccounts();
153
162
  const activeAccountAlreadyLinked = linkedWallets.find((wallet) => { var _a; return wallet.address.toLowerCase() === ((_a = connectedAccounts[0]) === null || _a === void 0 ? void 0 : _a.toLowerCase()); });
163
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('[handleAlreadyConnectedWallet]', {
164
+ activeAccountAlreadyLinked,
165
+ connectedAccounts,
166
+ linkedWallets,
167
+ });
154
168
  if (activeAccountAlreadyLinked) {
155
169
  setMultiWalletWidgetState('awaiting_account_switch', 'linking_new_wallet');
156
170
  }
@@ -180,6 +194,11 @@ const useWalletItemActions = () => {
180
194
  const { walletConnector, isInstalledOnBrowser } = wallet;
181
195
  const shouldEndWalletConnectorSession = walletConnector.connectedChain === 'FLOW' ||
182
196
  walletConnectorCore.isPhantomRedirectConnector(walletConnector);
197
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('[handleWalletItemClick]', {
198
+ mockedSDK,
199
+ shouldEndWalletConnectorSession,
200
+ wallet,
201
+ });
183
202
  if (mockedSDK)
184
203
  return;
185
204
  if (shouldEndWalletConnectorSession) {