@dynamic-labs/sdk-react-core 2.2.7 → 2.2.9

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 (65) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +13 -13
  5. package/src/lib/components/NetworkPicker/components/EvmNetworkControl/EvmNetworkControl.cjs +4 -5
  6. package/src/lib/components/NetworkPicker/components/EvmNetworkControl/EvmNetworkControl.js +4 -5
  7. package/src/lib/components/QrCodeWrapper/QrCodeContainer/QrCodeContainer.cjs +1 -1
  8. package/src/lib/components/QrCodeWrapper/QrCodeContainer/QrCodeContainer.js +1 -1
  9. package/src/lib/components/UserProfile/parts/UserProfileSocialAccount/UserProfileSocialAccount.cjs +1 -1
  10. package/src/lib/components/UserProfile/parts/UserProfileSocialAccount/UserProfileSocialAccount.js +1 -1
  11. package/src/lib/context/DynamicContext/types/index.d.ts +1 -0
  12. package/src/lib/styles/index.shadow.cjs +1 -1
  13. package/src/lib/styles/index.shadow.js +1 -1
  14. package/src/lib/utils/functions/isMultiAssetSupportedNetwork/isMultiAssetSupportedNetwork.cjs +4 -3
  15. package/src/lib/utils/functions/isMultiAssetSupportedNetwork/isMultiAssetSupportedNetwork.js +4 -3
  16. package/src/lib/utils/functions/validatePhoneLength/validatePhoneLength.cjs +2 -7
  17. package/src/lib/utils/functions/validatePhoneLength/validatePhoneLength.d.ts +1 -1
  18. package/src/lib/utils/functions/validatePhoneLength/validatePhoneLength.js +3 -8
  19. package/src/lib/utils/hooks/multiWallet/useSyncPrimaryWallet/useSyncPrimaryWallet.cjs +45 -45
  20. package/src/lib/utils/hooks/multiWallet/useSyncPrimaryWallet/useSyncPrimaryWallet.js +45 -45
  21. package/src/lib/utils/hooks/useNetworkNotSupported/useNetworkNotSupported.cjs +43 -42
  22. package/src/lib/utils/hooks/useNetworkNotSupported/useNetworkNotSupported.js +43 -42
  23. package/src/lib/utils/hooks/useTokenBalances/useTokenBalances.cjs +6 -4
  24. package/src/lib/utils/hooks/useTokenBalances/useTokenBalances.js +6 -4
  25. package/src/lib/utils/hooks/useWalletConnectorNetwork/useWalletConnectorNetwork.cjs +14 -7
  26. package/src/lib/utils/hooks/useWalletConnectorNetwork/useWalletConnectorNetwork.d.ts +6 -1
  27. package/src/lib/utils/hooks/useWalletConnectorNetwork/useWalletConnectorNetwork.js +14 -7
  28. package/src/lib/views/CaptchaVerifyUser/CaptchaVerifyUser.cjs +1 -1
  29. package/src/lib/views/CaptchaVerifyUser/CaptchaVerifyUser.js +1 -1
  30. package/src/lib/views/CollectUserDataView/CollectUserDataView.cjs +1 -1
  31. package/src/lib/views/CollectUserDataView/CollectUserDataView.js +1 -1
  32. package/src/lib/views/EmailConfirmationWaitingView/EmailConfirmationWaitingView.cjs +1 -1
  33. package/src/lib/views/EmailConfirmationWaitingView/EmailConfirmationWaitingView.js +1 -1
  34. package/src/lib/views/EmailVerification/EmailVerification.cjs +1 -1
  35. package/src/lib/views/EmailVerification/EmailVerification.js +1 -1
  36. package/src/lib/views/LoginView/sections/WalletSignInSection/ListItemButton/ListItemButton.cjs +1 -1
  37. package/src/lib/views/LoginView/sections/WalletSignInSection/ListItemButton/ListItemButton.js +1 -1
  38. package/src/lib/views/Passkey/PasskeyRecovery/BundleValidation/PasskeyBundleRecovery.cjs +1 -1
  39. package/src/lib/views/Passkey/PasskeyRecovery/BundleValidation/PasskeyBundleRecovery.js +1 -1
  40. package/src/lib/views/SelectHardwareWalletView/SelectHardwareWalletView.cjs +1 -1
  41. package/src/lib/views/SelectHardwareWalletView/SelectHardwareWalletView.js +1 -1
  42. package/src/lib/views/SelectWalletInWalletGroupView/components/WalletGroupItem/WalletGroupItem.cjs +1 -1
  43. package/src/lib/views/SelectWalletInWalletGroupView/components/WalletGroupItem/WalletGroupItem.js +1 -1
  44. package/src/lib/views/SocialRedirectView/SocialRedirectView.cjs +1 -1
  45. package/src/lib/views/SocialRedirectView/SocialRedirectView.js +1 -1
  46. package/src/lib/views/UserFieldEditorView/UserFieldEditorView.cjs +1 -1
  47. package/src/lib/views/UserFieldEditorView/UserFieldEditorView.js +1 -1
  48. package/src/lib/views/WalletGroupView/components/WalletGroupItem/WalletGroupItem.cjs +1 -1
  49. package/src/lib/views/WalletGroupView/components/WalletGroupItem/WalletGroupItem.js +1 -1
  50. package/src/lib/views/WalletList/WalletListItem/WalletListItem.cjs +1 -1
  51. package/src/lib/views/WalletList/WalletListItem/WalletListItem.js +1 -1
  52. package/src/lib/views/WalletRedirectView/WalletRedirectView.cjs +1 -1
  53. package/src/lib/views/WalletRedirectView/WalletRedirectView.js +1 -1
  54. package/src/lib/widgets/DynamicWidget/components/AccountControl/AccountControl.cjs +1 -1
  55. package/src/lib/widgets/DynamicWidget/components/AccountControl/AccountControl.js +1 -1
  56. package/src/lib/widgets/DynamicWidget/components/ActiveWalletInformation/ActiveWalletInformation.cjs +5 -1
  57. package/src/lib/widgets/DynamicWidget/components/ActiveWalletInformation/ActiveWalletInformation.js +5 -1
  58. package/src/lib/widgets/DynamicWidget/prompts/DetectedNewWalletModal/DetectedNewWalletModal.cjs +10 -7
  59. package/src/lib/widgets/DynamicWidget/prompts/DetectedNewWalletModal/DetectedNewWalletModal.js +10 -7
  60. package/src/lib/widgets/DynamicWidget/prompts/PendingAccountSwitchModal/PendingAccountSwitchModal.cjs +3 -2
  61. package/src/lib/widgets/DynamicWidget/prompts/PendingAccountSwitchModal/PendingAccountSwitchModal.js +3 -2
  62. package/src/lib/widgets/DynamicWidget/prompts/PendingAccountSwitchModal/SwitchOrUseActiveAccountView/SwitchOrUseActiveAccountView.cjs +1 -1
  63. package/src/lib/widgets/DynamicWidget/prompts/PendingAccountSwitchModal/SwitchOrUseActiveAccountView/SwitchOrUseActiveAccountView.js +1 -1
  64. package/src/lib/utils/functions/isWalletLinked/isWalletLinked.cjs +0 -16
  65. package/src/lib/utils/functions/isWalletLinked/isWalletLinked.js +0 -12
@@ -7,9 +7,10 @@ var sdkApiCore = require('@dynamic-labs/sdk-api-core');
7
7
  var constants = require('./constants.cjs');
8
8
 
9
9
  const isMultiAssetSupportedNetwork = (walletConnector, network) => {
10
- const isNetworkMultiAssetSupported = (walletConnector === null || walletConnector === void 0 ? void 0 : walletConnector.connectedChain) === sdkApiCore.ChainEnum.Evm &&
11
- typeof network === 'number' &&
12
- constants.MULTI_ASSET_SUPPORTED_NETWORKS.includes(network);
10
+ const isNetworkMultiAssetSupported = (walletConnector === null || walletConnector === void 0 ? void 0 : walletConnector.connectedChain) === sdkApiCore.ChainEnum.Sol ||
11
+ ((walletConnector === null || walletConnector === void 0 ? void 0 : walletConnector.connectedChain) === sdkApiCore.ChainEnum.Evm &&
12
+ typeof network === 'number' &&
13
+ constants.MULTI_ASSET_SUPPORTED_NETWORKS.includes(network));
13
14
  return Boolean(isNetworkMultiAssetSupported);
14
15
  };
15
16
 
@@ -3,9 +3,10 @@ import { ChainEnum } from '@dynamic-labs/sdk-api-core';
3
3
  import { MULTI_ASSET_SUPPORTED_NETWORKS } from './constants.js';
4
4
 
5
5
  const isMultiAssetSupportedNetwork = (walletConnector, network) => {
6
- const isNetworkMultiAssetSupported = (walletConnector === null || walletConnector === void 0 ? void 0 : walletConnector.connectedChain) === ChainEnum.Evm &&
7
- typeof network === 'number' &&
8
- MULTI_ASSET_SUPPORTED_NETWORKS.includes(network);
6
+ const isNetworkMultiAssetSupported = (walletConnector === null || walletConnector === void 0 ? void 0 : walletConnector.connectedChain) === ChainEnum.Sol ||
7
+ ((walletConnector === null || walletConnector === void 0 ? void 0 : walletConnector.connectedChain) === ChainEnum.Evm &&
8
+ typeof network === 'number' &&
9
+ MULTI_ASSET_SUPPORTED_NETWORKS.includes(network));
9
10
  return Boolean(isNetworkMultiAssetSupported);
10
11
  };
11
12
 
@@ -5,12 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var reactInternationalPhone = require('react-international-phone');
7
7
 
8
- /** Whether phone number length matches the expectation for this country */
9
- const validatePhoneLength = (phone, country) => reactInternationalPhone.removeDialCode({ dialCode: country.dialCode, phone }).length ===
10
- reactInternationalPhone.getActiveFormattingMask({
11
- country,
12
- disableFormatting: true,
13
- phone,
14
- }).length;
8
+ /** Whether phone number is not empty */
9
+ const validatePhoneLength = (phone, country) => reactInternationalPhone.removeDialCode({ dialCode: country.dialCode, phone }).length > 0;
15
10
 
16
11
  exports.validatePhoneLength = validatePhoneLength;
@@ -1,3 +1,3 @@
1
1
  import { ParsedCountry } from 'react-international-phone';
2
- /** Whether phone number length matches the expectation for this country */
2
+ /** Whether phone number is not empty */
3
3
  export declare const validatePhoneLength: (phone: string, country: ParsedCountry) => boolean;
@@ -1,12 +1,7 @@
1
1
  'use client'
2
- import { removeDialCode, getActiveFormattingMask } from 'react-international-phone';
2
+ import { removeDialCode } from 'react-international-phone';
3
3
 
4
- /** Whether phone number length matches the expectation for this country */
5
- const validatePhoneLength = (phone, country) => removeDialCode({ dialCode: country.dialCode, phone }).length ===
6
- getActiveFormattingMask({
7
- country,
8
- disableFormatting: true,
9
- phone,
10
- }).length;
4
+ /** Whether phone number is not empty */
5
+ const validatePhoneLength = (phone, country) => removeDialCode({ dialCode: country.dialCode, phone }).length > 0;
11
6
 
12
7
  export { validatePhoneLength };
@@ -29,6 +29,7 @@ require('viem/chains');
29
29
  require('../../../../config/ApiEndpoint.cjs');
30
30
  require('@dynamic-labs/store');
31
31
  require('../../../../locale/locale.cjs');
32
+ var logVerboseTroubleshootingMessage = require('../../../functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.cjs');
32
33
  require('../../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
33
34
  require('../../../../context/AccountExistsContext/AccountExistsContext.cjs');
34
35
  require('../../../../context/UserWalletsContext/UserWalletsContext.cjs');
@@ -78,63 +79,57 @@ require('../../../../widgets/DynamicWidget/context/DynamicWidgetContext.cjs');
78
79
  require('../../../../views/TransactionConfirmationView/helpers/transactionErrorMessage.cjs');
79
80
  require('../../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
80
81
  var useInternalDynamicContext = require('../../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.cjs');
81
- var isWalletLinked = require('../../../functions/isWalletLinked/isWalletLinked.cjs');
82
82
 
83
83
  const useSyncPrimaryWallet = (canSync = true) => {
84
- const { setShowAuthFlow, isAuthenticated, authMode, connectWallet, handleLogOut, multiWalletWidgetState, primaryWallet, secondaryWallets, setMultiWalletWidgetState, setPrimaryWallet, setShowWidgetStatePopup, showLockedWalletView, showWidgetStatePopup, setSelectedWalletWithAction, } = useInternalDynamicContext.useInternalDynamicContext();
84
+ const { setShowAuthFlow, isAuthenticated, authMode, connectWallet, handleLogOut, multiWalletWidgetState, primaryWallet, setMultiWalletWidgetState, showLockedWalletView, secondaryWallets, setPrimaryWallet, setSelectedWalletWithAction, multiWallet, } = useInternalDynamicContext.useInternalDynamicContext();
85
85
  const { setView } = ViewContext.useViewContext();
86
86
  const handlePrimaryWalletNotActive = React.useCallback((connectedAddress) => {
87
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('[useSyncPrimaryWallet] handlePrimaryWalletNotActive', {
88
+ authMode,
89
+ connectedAddress,
90
+ primaryWallet: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.address,
91
+ });
87
92
  if (!primaryWallet)
88
93
  return;
89
94
  if (authMode === 'connect-only') {
90
95
  connectWallet(primaryWallet.connector);
91
96
  return;
92
97
  }
93
- const connectedWalletIsLinked = isWalletLinked.isWalletLinked(connectedAddress, [
94
- primaryWallet,
95
- ...secondaryWallets,
96
- ]);
97
- if (!connectedWalletIsLinked) {
98
- // MM returns all connected wallets now, so we need to check if the active account
99
- // is not in the same wallet as the primary wallet before automatically switching
100
- // to a connected secondary wallet as it was causing an infinite loop
101
- const connectedSecondaryWallet = secondaryWallets.find((wallet) => wallet.connected && primaryWallet.connector !== wallet.connector);
102
- if (!connectedSecondaryWallet) {
103
- setSelectedWalletWithAction({
104
- action: 'select',
105
- wallet: primaryWallet,
106
- });
107
- setMultiWalletWidgetState('awaiting_account_switch', 'primary_not_connected');
108
- return;
109
- }
110
- setPrimaryWallet(connectedSecondaryWallet.id);
111
- return;
112
- }
113
- if (showWidgetStatePopup) {
114
- // user updates wallet address in the widget
115
- setShowWidgetStatePopup(false);
116
- setMultiWalletWidgetState('awaiting_account_switch', 'switching_primary');
117
- return;
118
- }
119
- // !showWidgetStatePopup - user comes back to site with different wallet address
120
- const connectedWallet = secondaryWallets.find((wallet) => wallet.connected &&
121
- walletConnectorCore.isSameAddress(wallet.address, connectedAddress, wallet.chain));
122
- if (connectedWallet) {
123
- setPrimaryWallet(connectedWallet.id);
98
+ const connectedWalletWithSameProvider = connectedAddress &&
99
+ secondaryWallets.find((wallet) => wallet.connected &&
100
+ wallet.connector.key === primaryWallet.connector.key &&
101
+ walletConnectorCore.isSameAddress(wallet.address, connectedAddress, wallet.chain));
102
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('[useSyncPrimaryWallet] handlePrimaryWalletNotActive', {
103
+ connectedWalletWithSameProvider,
104
+ multiWallet,
105
+ });
106
+ if (multiWallet && connectedWalletWithSameProvider) {
107
+ setPrimaryWallet(connectedWalletWithSameProvider.id);
124
108
  return;
125
109
  }
126
- setMultiWalletWidgetState('awaiting_account_switch', 'primary_not_connected');
110
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('[useSyncPrimaryWallet] handlePrimaryWalletNotActive - setSelectedWalletWithAction(primaryWallet)');
111
+ setSelectedWalletWithAction({
112
+ action: 'select',
113
+ wallet: primaryWallet,
114
+ });
115
+ setMultiWalletWidgetState('awaiting_account_switch', 'switching_primary');
127
116
  }, [
128
- primaryWallet,
129
117
  authMode,
118
+ primaryWallet,
130
119
  secondaryWallets,
131
- showWidgetStatePopup,
120
+ multiWallet,
121
+ setSelectedWalletWithAction,
132
122
  setMultiWalletWidgetState,
133
- setPrimaryWallet,
134
- setShowWidgetStatePopup,
135
123
  connectWallet,
124
+ setPrimaryWallet,
136
125
  ]);
137
126
  React.useEffect(() => {
127
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('[useSyncPrimaryWallet]', {
128
+ canSync,
129
+ connectedChain: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.connectedChain,
130
+ multiWalletWidgetState,
131
+ primaryWallet: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.address,
132
+ });
138
133
  if (!canSync)
139
134
  return;
140
135
  if (!primaryWallet || multiWalletWidgetState !== 'idle')
@@ -147,6 +142,10 @@ const useSyncPrimaryWallet = (canSync = true) => {
147
142
  .getConnectedAccounts()
148
143
  .then((accounts) => {
149
144
  const [connectedAddress] = accounts;
145
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('[useSyncPrimaryWallet] getConnectedAccounts', {
146
+ accounts,
147
+ connectedAddress,
148
+ });
150
149
  if (!connectedAddress) {
151
150
  throw new utils.DynamicError('Missing wallet address', errors.MISSING_ADDRESS_ERROR);
152
151
  }
@@ -156,31 +155,32 @@ const useSyncPrimaryWallet = (canSync = true) => {
156
155
  handlePrimaryWalletNotActive(connectedAddress);
157
156
  })
158
157
  .catch((e) => {
159
- const connectedSecondaryWallet = secondaryWallets.find((wallet) => wallet.connected);
160
- if (connectedSecondaryWallet) {
161
- setPrimaryWallet(connectedSecondaryWallet.id);
162
- return;
163
- }
158
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('[useSyncPrimaryWallet] getConnectedAccounts error', {
159
+ error: e,
160
+ isAuthenticated,
161
+ });
164
162
  // user is logged in (has valid jwt), but no wallet is connected
165
163
  if (isAuthenticated && e.code === errors.MISSING_ADDRESS_ERROR) {
166
164
  if (!primaryWallet.connector.isInstalledOnBrowser()) {
165
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('[useSyncPrimaryWallet] getConnectedAccounts error - not installed in browser - will log out');
167
166
  handleLogOut();
168
167
  return;
169
168
  }
170
169
  if (showLockedWalletView) {
170
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('[useSyncPrimaryWallet] getConnectedAccounts error - will show locked wallet view');
171
171
  setShowAuthFlow(true);
172
172
  setView('wallet-locked-view');
173
+ return;
173
174
  }
175
+ handlePrimaryWalletNotActive();
174
176
  }
175
177
  });
176
178
  }, [
177
179
  primaryWallet,
178
- secondaryWallets,
179
180
  multiWalletWidgetState,
180
181
  setMultiWalletWidgetState,
181
182
  handlePrimaryWalletNotActive,
182
183
  handleLogOut,
183
- setPrimaryWallet,
184
184
  canSync,
185
185
  setView,
186
186
  setShowAuthFlow,
@@ -25,6 +25,7 @@ import 'viem/chains';
25
25
  import '../../../../config/ApiEndpoint.js';
26
26
  import '@dynamic-labs/store';
27
27
  import '../../../../locale/locale.js';
28
+ import { logVerboseTroubleshootingMessage } from '../../../functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.js';
28
29
  import '../../../../context/AccessDeniedContext/AccessDeniedContext.js';
29
30
  import '../../../../context/AccountExistsContext/AccountExistsContext.js';
30
31
  import '../../../../context/UserWalletsContext/UserWalletsContext.js';
@@ -74,63 +75,57 @@ import '../../../../widgets/DynamicWidget/context/DynamicWidgetContext.js';
74
75
  import '../../../../views/TransactionConfirmationView/helpers/transactionErrorMessage.js';
75
76
  import '../../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.js';
76
77
  import { useInternalDynamicContext } from '../../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.js';
77
- import { isWalletLinked } from '../../../functions/isWalletLinked/isWalletLinked.js';
78
78
 
79
79
  const useSyncPrimaryWallet = (canSync = true) => {
80
- const { setShowAuthFlow, isAuthenticated, authMode, connectWallet, handleLogOut, multiWalletWidgetState, primaryWallet, secondaryWallets, setMultiWalletWidgetState, setPrimaryWallet, setShowWidgetStatePopup, showLockedWalletView, showWidgetStatePopup, setSelectedWalletWithAction, } = useInternalDynamicContext();
80
+ const { setShowAuthFlow, isAuthenticated, authMode, connectWallet, handleLogOut, multiWalletWidgetState, primaryWallet, setMultiWalletWidgetState, showLockedWalletView, secondaryWallets, setPrimaryWallet, setSelectedWalletWithAction, multiWallet, } = useInternalDynamicContext();
81
81
  const { setView } = useViewContext();
82
82
  const handlePrimaryWalletNotActive = useCallback((connectedAddress) => {
83
+ logVerboseTroubleshootingMessage('[useSyncPrimaryWallet] handlePrimaryWalletNotActive', {
84
+ authMode,
85
+ connectedAddress,
86
+ primaryWallet: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.address,
87
+ });
83
88
  if (!primaryWallet)
84
89
  return;
85
90
  if (authMode === 'connect-only') {
86
91
  connectWallet(primaryWallet.connector);
87
92
  return;
88
93
  }
89
- const connectedWalletIsLinked = isWalletLinked(connectedAddress, [
90
- primaryWallet,
91
- ...secondaryWallets,
92
- ]);
93
- if (!connectedWalletIsLinked) {
94
- // MM returns all connected wallets now, so we need to check if the active account
95
- // is not in the same wallet as the primary wallet before automatically switching
96
- // to a connected secondary wallet as it was causing an infinite loop
97
- const connectedSecondaryWallet = secondaryWallets.find((wallet) => wallet.connected && primaryWallet.connector !== wallet.connector);
98
- if (!connectedSecondaryWallet) {
99
- setSelectedWalletWithAction({
100
- action: 'select',
101
- wallet: primaryWallet,
102
- });
103
- setMultiWalletWidgetState('awaiting_account_switch', 'primary_not_connected');
104
- return;
105
- }
106
- setPrimaryWallet(connectedSecondaryWallet.id);
107
- return;
108
- }
109
- if (showWidgetStatePopup) {
110
- // user updates wallet address in the widget
111
- setShowWidgetStatePopup(false);
112
- setMultiWalletWidgetState('awaiting_account_switch', 'switching_primary');
113
- return;
114
- }
115
- // !showWidgetStatePopup - user comes back to site with different wallet address
116
- const connectedWallet = secondaryWallets.find((wallet) => wallet.connected &&
117
- isSameAddress(wallet.address, connectedAddress, wallet.chain));
118
- if (connectedWallet) {
119
- setPrimaryWallet(connectedWallet.id);
94
+ const connectedWalletWithSameProvider = connectedAddress &&
95
+ secondaryWallets.find((wallet) => wallet.connected &&
96
+ wallet.connector.key === primaryWallet.connector.key &&
97
+ isSameAddress(wallet.address, connectedAddress, wallet.chain));
98
+ logVerboseTroubleshootingMessage('[useSyncPrimaryWallet] handlePrimaryWalletNotActive', {
99
+ connectedWalletWithSameProvider,
100
+ multiWallet,
101
+ });
102
+ if (multiWallet && connectedWalletWithSameProvider) {
103
+ setPrimaryWallet(connectedWalletWithSameProvider.id);
120
104
  return;
121
105
  }
122
- setMultiWalletWidgetState('awaiting_account_switch', 'primary_not_connected');
106
+ logVerboseTroubleshootingMessage('[useSyncPrimaryWallet] handlePrimaryWalletNotActive - setSelectedWalletWithAction(primaryWallet)');
107
+ setSelectedWalletWithAction({
108
+ action: 'select',
109
+ wallet: primaryWallet,
110
+ });
111
+ setMultiWalletWidgetState('awaiting_account_switch', 'switching_primary');
123
112
  }, [
124
- primaryWallet,
125
113
  authMode,
114
+ primaryWallet,
126
115
  secondaryWallets,
127
- showWidgetStatePopup,
116
+ multiWallet,
117
+ setSelectedWalletWithAction,
128
118
  setMultiWalletWidgetState,
129
- setPrimaryWallet,
130
- setShowWidgetStatePopup,
131
119
  connectWallet,
120
+ setPrimaryWallet,
132
121
  ]);
133
122
  useEffect(() => {
123
+ logVerboseTroubleshootingMessage('[useSyncPrimaryWallet]', {
124
+ canSync,
125
+ connectedChain: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.connectedChain,
126
+ multiWalletWidgetState,
127
+ primaryWallet: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.address,
128
+ });
134
129
  if (!canSync)
135
130
  return;
136
131
  if (!primaryWallet || multiWalletWidgetState !== 'idle')
@@ -143,6 +138,10 @@ const useSyncPrimaryWallet = (canSync = true) => {
143
138
  .getConnectedAccounts()
144
139
  .then((accounts) => {
145
140
  const [connectedAddress] = accounts;
141
+ logVerboseTroubleshootingMessage('[useSyncPrimaryWallet] getConnectedAccounts', {
142
+ accounts,
143
+ connectedAddress,
144
+ });
146
145
  if (!connectedAddress) {
147
146
  throw new DynamicError('Missing wallet address', MISSING_ADDRESS_ERROR);
148
147
  }
@@ -152,31 +151,32 @@ const useSyncPrimaryWallet = (canSync = true) => {
152
151
  handlePrimaryWalletNotActive(connectedAddress);
153
152
  })
154
153
  .catch((e) => {
155
- const connectedSecondaryWallet = secondaryWallets.find((wallet) => wallet.connected);
156
- if (connectedSecondaryWallet) {
157
- setPrimaryWallet(connectedSecondaryWallet.id);
158
- return;
159
- }
154
+ logVerboseTroubleshootingMessage('[useSyncPrimaryWallet] getConnectedAccounts error', {
155
+ error: e,
156
+ isAuthenticated,
157
+ });
160
158
  // user is logged in (has valid jwt), but no wallet is connected
161
159
  if (isAuthenticated && e.code === MISSING_ADDRESS_ERROR) {
162
160
  if (!primaryWallet.connector.isInstalledOnBrowser()) {
161
+ logVerboseTroubleshootingMessage('[useSyncPrimaryWallet] getConnectedAccounts error - not installed in browser - will log out');
163
162
  handleLogOut();
164
163
  return;
165
164
  }
166
165
  if (showLockedWalletView) {
166
+ logVerboseTroubleshootingMessage('[useSyncPrimaryWallet] getConnectedAccounts error - will show locked wallet view');
167
167
  setShowAuthFlow(true);
168
168
  setView('wallet-locked-view');
169
+ return;
169
170
  }
171
+ handlePrimaryWalletNotActive();
170
172
  }
171
173
  });
172
174
  }, [
173
175
  primaryWallet,
174
- secondaryWallets,
175
176
  multiWalletWidgetState,
176
177
  setMultiWalletWidgetState,
177
178
  handlePrimaryWalletNotActive,
178
179
  handleLogOut,
179
- setPrimaryWallet,
180
180
  canSync,
181
181
  setView,
182
182
  setShowAuthFlow,
@@ -3,48 +3,48 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var React = require('react');
7
- var useWalletConnectorNetwork = require('../useWalletConnectorNetwork/useWalletConnectorNetwork.cjs');
8
- require('@dynamic-labs/wallet-connector-core');
6
+ require('react');
7
+ require('../../../context/DynamicContext/DynamicContext.cjs');
9
8
  require('@dynamic-labs/sdk-api-core');
10
- require('../../constants/values.cjs');
11
- require('@dynamic-labs/utils');
12
- require('../../../../../_virtual/_tslib.cjs');
13
- require('@dynamic-labs/multi-wallet');
14
9
  require('../../../shared/logger.cjs');
15
10
  require('@dynamic-labs/iconic');
11
+ require('@dynamic-labs/wallet-connector-core');
16
12
  require('react/jsx-runtime');
17
13
  require('../../../context/ViewContext/ViewContext.cjs');
18
14
  require('@dynamic-labs/wallet-book');
19
15
  require('../../constants/colors.cjs');
16
+ require('../../constants/values.cjs');
20
17
  require('../../../shared/utils/classes/storage/localStorage.cjs');
18
+ require('@dynamic-labs/utils');
21
19
  require('../../../shared/consts/index.cjs');
20
+ require('../../../events/dynamicEvents.cjs');
21
+ require('../../../../../_virtual/_tslib.cjs');
22
+ var useConnectAndSign = require('../authenticationHooks/useConnectAndSign/useConnectAndSign.cjs');
23
+ require('../../../context/ErrorContext/ErrorContext.cjs');
24
+ require('../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
25
+ require('../../../context/AccountExistsContext/AccountExistsContext.cjs');
26
+ require('../../../context/UserWalletsContext/UserWalletsContext.cjs');
27
+ require('../../../config/ApiEndpoint.cjs');
28
+ require('@dynamic-labs/multi-wallet');
22
29
  require('react-international-phone');
23
30
  var isSupportedNetwork = require('../../functions/isSupportedNetwork/isSupportedNetwork.cjs');
24
31
  require('viem');
25
32
  require('viem/chains');
26
- require('../../../config/ApiEndpoint.cjs');
27
33
  require('@dynamic-labs/store');
28
34
  require('../../../locale/locale.cjs');
29
- var useConnectAndSign = require('../authenticationHooks/useConnectAndSign/useConnectAndSign.cjs');
30
- require('../../../context/DynamicContext/DynamicContext.cjs');
31
- require('../../../events/dynamicEvents.cjs');
35
+ require('../../../context/CaptchaContext/CaptchaContext.cjs');
36
+ require('../../../context/VerificationContext/VerificationContext.cjs');
32
37
  require('react-dom');
33
38
  require('../../../context/WalletContext/WalletContext.cjs');
34
- require('../../../context/ErrorContext/ErrorContext.cjs');
35
39
  require('../../../context/ThemeContext/ThemeContext.cjs');
36
- require('../../../context/VerificationContext/VerificationContext.cjs');
37
40
  require('../useUserUpdateRequest/useUpdateUser/userFieldsSchema.cjs');
38
41
  require('@dynamic-labs/types');
39
- require('../../../context/AccountExistsContext/AccountExistsContext.cjs');
40
42
  require('../../../context/LoadingContext/LoadingContext.cjs');
41
43
  require('yup');
42
44
  require('../../../context/MockContext/MockContext.cjs');
43
45
  require('../../../views/CollectUserDataView/useFields.cjs');
44
46
  require('../../../context/FieldsStateContext/FieldsStateContext.cjs');
45
47
  require('../../../context/UserFieldEditorContext/UserFieldEditorContext.cjs');
46
- require('../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
47
- require('../../../context/UserWalletsContext/UserWalletsContext.cjs');
48
48
  require('@dynamic-labs/rpc-providers');
49
49
  require('react-i18next');
50
50
  require('../../../components/Accordion/components/AccordionItem/AccordionItem.cjs');
@@ -67,7 +67,6 @@ require('qrcode');
67
67
  require('formik');
68
68
  require('../../../views/WalletList/WalletList.cjs');
69
69
  require('../../../context/SocialRedirectContext/SocialRedirectContext.cjs');
70
- require('../../../context/CaptchaContext/CaptchaContext.cjs');
71
70
  require('../../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.cjs');
72
71
  require('@hcaptcha/react-hcaptcha');
73
72
  require('../../../context/FooterAnimationContext/index.cjs');
@@ -79,38 +78,40 @@ require('../../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWi
79
78
  require('../../../widgets/DynamicWidget/context/DynamicWidgetContext.cjs');
80
79
  require('../../../views/TransactionConfirmationView/helpers/transactionErrorMessage.cjs');
81
80
  require('../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
81
+ var useWalletConnectorNetwork = require('../useWalletConnectorNetwork/useWalletConnectorNetwork.cjs');
82
82
  var useInternalDynamicContext = require('../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.cjs');
83
83
 
84
84
  const useNetworkNotSupported = () => {
85
- const { selectedWalletConnector: walletConnector, setShowAuthFlow, bridgeChainsToConnect, bridgeOnboardingCompleted, isBridgeFlow, } = useInternalDynamicContext.useInternalDynamicContext();
86
- const { network: walletConnectorNetwork } = useWalletConnectorNetwork.useWalletConnectorNetwork(walletConnector);
85
+ const { selectedWalletConnector: walletConnector, setShowAuthFlow, bridgeChainsToConnect, bridgeOnboardingCompleted, isBridgeFlow, user, authMode, } = useInternalDynamicContext.useInternalDynamicContext();
87
86
  const finishConnectAndSign = useConnectAndSign.useConnectAndSign({
88
87
  shouldCallCallback: false,
89
88
  shouldUpdateWallets: Boolean(bridgeChainsToConnect === null || bridgeChainsToConnect === void 0 ? void 0 : bridgeChainsToConnect.length),
90
89
  });
91
- // Finishes auth flow when wallet switches to proper network
92
- React.useEffect(() => {
93
- if (!isSupportedNetwork.isSupportedNetwork({ network: walletConnectorNetwork, walletConnector })) {
94
- return;
95
- }
96
- finishConnectAndSign({
97
- walletConnector: walletConnector,
98
- });
99
- // we're checking for bridgeChainsToConnect because in some scenarios,
100
- // bridgeOnboardingCompleted might have not been set yet
101
- if (!isBridgeFlow ||
102
- bridgeOnboardingCompleted ||
103
- !(bridgeChainsToConnect === null || bridgeChainsToConnect === void 0 ? void 0 : bridgeChainsToConnect.length)) {
104
- setShowAuthFlow(false);
105
- }
106
- }, [
107
- isBridgeFlow,
108
- walletConnectorNetwork,
109
- setShowAuthFlow,
110
- bridgeOnboardingCompleted,
111
- finishConnectAndSign,
112
- bridgeChainsToConnect,
113
- ]);
90
+ const { network: walletConnectorNetwork } = useWalletConnectorNetwork.useWalletConnectorNetwork(walletConnector, {
91
+ onChange: (walletConnectorNetwork) => {
92
+ if (!isSupportedNetwork.isSupportedNetwork({
93
+ network: walletConnectorNetwork,
94
+ walletConnector,
95
+ })) {
96
+ return;
97
+ }
98
+ finishConnectAndSign({
99
+ walletConnector: walletConnector,
100
+ }).then(() => {
101
+ // if user still has to do onboarding, we should not hide the auth flow
102
+ if (!user && authMode === 'connect-and-sign') {
103
+ return;
104
+ }
105
+ // we're checking for bridgeChainsToConnect because in some scenarios,
106
+ // bridgeOnboardingCompleted might have not been set yet
107
+ if (!isBridgeFlow ||
108
+ bridgeOnboardingCompleted ||
109
+ !(bridgeChainsToConnect === null || bridgeChainsToConnect === void 0 ? void 0 : bridgeChainsToConnect.length)) {
110
+ setShowAuthFlow(false);
111
+ }
112
+ });
113
+ },
114
+ });
114
115
  return { currentNetwork: walletConnectorNetwork };
115
116
  };
116
117