@dynamic-labs/sdk-react-core 2.2.2 → 2.2.3

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 (36) hide show
  1. package/CHANGELOG.md +12 -2
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +13 -13
  5. package/src/lib/Main.cjs +1 -0
  6. package/src/lib/Main.js +1 -0
  7. package/src/lib/context/DynamicContext/DynamicContext.cjs +2 -1
  8. package/src/lib/context/DynamicContext/DynamicContext.js +2 -1
  9. package/src/lib/context/WidgetRegistry/WidgetRegistryContextProvider.cjs +77 -0
  10. package/src/lib/context/WidgetRegistry/WidgetRegistryContextProvider.d.ts +6 -0
  11. package/src/lib/context/WidgetRegistry/WidgetRegistryContextProvider.js +71 -0
  12. package/src/lib/context/WidgetRegistry/index.d.ts +1 -0
  13. package/src/lib/data/api/wallets/wallets.cjs +2 -1
  14. package/src/lib/data/api/wallets/wallets.d.ts +2 -1
  15. package/src/lib/data/api/wallets/wallets.js +2 -1
  16. package/src/lib/events/dynamicEvents.d.ts +2 -1
  17. package/src/lib/events/multiWallet.d.ts +5 -0
  18. package/src/lib/styles/index.shadow.cjs +1 -1
  19. package/src/lib/styles/index.shadow.js +1 -1
  20. package/src/lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.d.ts +1 -1
  21. package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.cjs +3 -1
  22. package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.js +3 -1
  23. package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.cjs +6 -2
  24. package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.js +6 -2
  25. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.cjs +1 -6
  26. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.js +1 -6
  27. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.cjs +44 -27
  28. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.js +45 -28
  29. package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.cjs +4 -14
  30. package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.js +5 -15
  31. package/src/lib/widgets/DynamicMultiWalletPromptsWidget/DynamicMultiWalletPromptsWidget.cjs +5 -5
  32. package/src/lib/widgets/DynamicMultiWalletPromptsWidget/DynamicMultiWalletPromptsWidget.js +5 -5
  33. package/src/lib/widgets/DynamicWidget/components/DynamicUserProfile/DynamicUserProfile.cjs +4 -1
  34. package/src/lib/widgets/DynamicWidget/components/DynamicUserProfile/DynamicUserProfile.js +4 -1
  35. package/src/lib/widgets/DynamicWidget/prompts/PrimaryNotConnectedModal/PrimaryNotConnectedModal.cjs +1 -1
  36. package/src/lib/widgets/DynamicWidget/prompts/PrimaryNotConnectedModal/PrimaryNotConnectedModal.js +1 -1
@@ -2,7 +2,7 @@ import { DynamicEvents } from '../../../../events';
2
2
  import { EventArgs } from '../types';
3
3
  type DynamicEventListener<E extends keyof DynamicEvents> = (...args: EventArgs<DynamicEvents, E>) => void;
4
4
  /** Allows us to subscribe to all dynamicEvents with a hook, even the internal ones */
5
- export declare const useInternalDynamicEvents: <E extends keyof import("../../../../events/auth").AuthEvents | keyof import("../../../../events/ui").UIEvents | keyof import("../../../../events/otp").OTPEvents | keyof import("../../../../events/wallets").WalletEvents | keyof import("../../../../events/passkey").PasskeyEvents | "farcasterConnectCancelled" | keyof import("../../../../events/embeddedWallet").EmbeddedWalletEvents>(event: E, listener: DynamicEventListener<E>) => void;
5
+ export declare const useInternalDynamicEvents: <E extends keyof import("../../../../events/auth").AuthEvents | keyof import("../../../../events/ui").UIEvents | keyof import("../../../../events/otp").OTPEvents | keyof import("../../../../events/wallets").WalletEvents | keyof import("../../../../events/passkey").PasskeyEvents | "farcasterConnectCancelled" | keyof import("../../../../events/embeddedWallet").EmbeddedWalletEvents | "triggerComputePrimaryWalletMultiWalletStateFromAccounts">(event: E, listener: DynamicEventListener<E>) => void;
6
6
  /** Allows subscribing to dynamic events directly inside components with a hook */
7
7
  export declare const useDynamicEvents: <E extends "logout" | "emailVerificationResult" | "walletAdded" | "embeddedWalletCreated">(event: E, listener: DynamicEventListener<E>) => void;
8
8
  export {};
@@ -46,6 +46,9 @@ const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWall
46
46
  return;
47
47
  yield wallets.unlinkWallet({
48
48
  environmentId,
49
+ onSuccess: () => {
50
+ removedWalletsIds.current.push(walletId);
51
+ },
49
52
  primaryWalletId: currentPrimaryWalletId,
50
53
  walletId,
51
54
  });
@@ -55,7 +58,6 @@ const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWall
55
58
  if (numberOfLinkedWallets === 1) {
56
59
  yield (wallet === null || wallet === void 0 ? void 0 : wallet.connector.endSession());
57
60
  }
58
- removedWalletsIds.current.push(walletId);
59
61
  }), [
60
62
  primaryWalletId,
61
63
  environmentId,
@@ -42,6 +42,9 @@ const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWall
42
42
  return;
43
43
  yield unlinkWallet({
44
44
  environmentId,
45
+ onSuccess: () => {
46
+ removedWalletsIds.current.push(walletId);
47
+ },
45
48
  primaryWalletId: currentPrimaryWalletId,
46
49
  walletId,
47
50
  });
@@ -51,7 +54,6 @@ const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWall
51
54
  if (numberOfLinkedWallets === 1) {
52
55
  yield (wallet === null || wallet === void 0 ? void 0 : wallet.connector.endSession());
53
56
  }
54
- removedWalletsIds.current.push(walletId);
55
57
  }), [
56
58
  primaryWalletId,
57
59
  environmentId,
@@ -26,7 +26,7 @@ require('@dynamic-labs/store');
26
26
  require('../../../locale/locale.cjs');
27
27
  var user = require('../../../data/api/user/user.cjs');
28
28
  require('../../../context/DynamicContext/DynamicContext.cjs');
29
- require('../../../events/dynamicEvents.cjs');
29
+ var dynamicEvents = require('../../../events/dynamicEvents.cjs');
30
30
  require('../../../context/CaptchaContext/CaptchaContext.cjs');
31
31
  require('../../../context/ErrorContext/ErrorContext.cjs');
32
32
  require('../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
@@ -79,7 +79,7 @@ require('../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCa
79
79
  var useInternalDynamicContext = require('../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.cjs');
80
80
 
81
81
  const useMergeUserAccounts = () => {
82
- const { environmentId, setShowAuthFlow } = useInternalDynamicContext.useInternalDynamicContext();
82
+ const { environmentId, setShowAuthFlow, selectedWalletConnector } = useInternalDynamicContext.useInternalDynamicContext();
83
83
  const { addedWalletsIds } = UserWalletsContext.useInternalUserWallets();
84
84
  const mergeUserAccounts = (mergeConflictResolutions) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
85
85
  const user$1 = yield user.verifyMergeUsers(environmentId, mergeConflictResolutions);
@@ -87,6 +87,10 @@ const useMergeUserAccounts = () => {
87
87
  if (walletId) {
88
88
  addedWalletsIds.current.push(walletId);
89
89
  }
90
+ const accounts = yield (selectedWalletConnector === null || selectedWalletConnector === void 0 ? void 0 : selectedWalletConnector.getConnectedAccounts());
91
+ if (accounts === null || accounts === void 0 ? void 0 : accounts.length) {
92
+ dynamicEvents.dynamicEvents.emit('triggerComputePrimaryWalletMultiWalletStateFromAccounts', { accounts });
93
+ }
90
94
  setShowAuthFlow(false);
91
95
  });
92
96
  return {
@@ -22,7 +22,7 @@ import '@dynamic-labs/store';
22
22
  import '../../../locale/locale.js';
23
23
  import { verifyMergeUsers } from '../../../data/api/user/user.js';
24
24
  import '../../../context/DynamicContext/DynamicContext.js';
25
- import '../../../events/dynamicEvents.js';
25
+ import { dynamicEvents } from '../../../events/dynamicEvents.js';
26
26
  import '../../../context/CaptchaContext/CaptchaContext.js';
27
27
  import '../../../context/ErrorContext/ErrorContext.js';
28
28
  import '../../../context/AccessDeniedContext/AccessDeniedContext.js';
@@ -75,7 +75,7 @@ import '../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCar
75
75
  import { useInternalDynamicContext } from '../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.js';
76
76
 
77
77
  const useMergeUserAccounts = () => {
78
- const { environmentId, setShowAuthFlow } = useInternalDynamicContext();
78
+ const { environmentId, setShowAuthFlow, selectedWalletConnector } = useInternalDynamicContext();
79
79
  const { addedWalletsIds } = useInternalUserWallets();
80
80
  const mergeUserAccounts = (mergeConflictResolutions) => __awaiter(void 0, void 0, void 0, function* () {
81
81
  const user = yield verifyMergeUsers(environmentId, mergeConflictResolutions);
@@ -83,6 +83,10 @@ const useMergeUserAccounts = () => {
83
83
  if (walletId) {
84
84
  addedWalletsIds.current.push(walletId);
85
85
  }
86
+ const accounts = yield (selectedWalletConnector === null || selectedWalletConnector === void 0 ? void 0 : selectedWalletConnector.getConnectedAccounts());
87
+ if (accounts === null || accounts === void 0 ? void 0 : accounts.length) {
88
+ dynamicEvents.emit('triggerComputePrimaryWalletMultiWalletStateFromAccounts', { accounts });
89
+ }
86
90
  setShowAuthFlow(false);
87
91
  });
88
92
  return {
@@ -82,14 +82,9 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
82
82
  const { setUserWallets } = UserWalletsContext.useInternalUserWallets();
83
83
  // Keep userWallets in sync whenever linkedWallets changes
84
84
  React.useEffect(() => {
85
- // we don't want to set the user wallets until their connected states have been computed
86
- // but that doesn't matter if the wallets list is empty, and if we return early when
87
- // the wallets list is empty, we'll never set the user wallets correctly after logout
88
- if (!didConnectedStateLoad.current && wallets.length)
89
- return;
90
85
  logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('[useWalletConnectors] will call setUserWallets', wallets);
91
86
  setUserWallets((userWallets) => updateUserWalletsFromLinkedWallets.updateUserWalletsFromLinkedWallets(userWallets, wallets));
92
- }, [didConnectedStateLoad, setUserWallets, wallets]);
87
+ }, [setUserWallets, wallets]);
93
88
  const primaryWallet = React.useMemo(() => { var _a; return (_a = wallets.find((wallet) => wallet.id === primaryWalletId)) !== null && _a !== void 0 ? _a : null; }, [primaryWalletId, wallets]);
94
89
  const secondaryWallets = React.useMemo(() => canHaveMultipleWalletsConnected
95
90
  ? wallets.filter((wallet) => wallet.id !== primaryWalletId)
@@ -78,14 +78,9 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
78
78
  const { setUserWallets } = useInternalUserWallets();
79
79
  // Keep userWallets in sync whenever linkedWallets changes
80
80
  useEffect(() => {
81
- // we don't want to set the user wallets until their connected states have been computed
82
- // but that doesn't matter if the wallets list is empty, and if we return early when
83
- // the wallets list is empty, we'll never set the user wallets correctly after logout
84
- if (!didConnectedStateLoad.current && wallets.length)
85
- return;
86
81
  logVerboseTroubleshootingMessage('[useWalletConnectors] will call setUserWallets', wallets);
87
82
  setUserWallets((userWallets) => updateUserWalletsFromLinkedWallets(userWallets, wallets));
88
- }, [didConnectedStateLoad, setUserWallets, wallets]);
83
+ }, [setUserWallets, wallets]);
89
84
  const primaryWallet = useMemo(() => { var _a; return (_a = wallets.find((wallet) => wallet.id === primaryWalletId)) !== null && _a !== void 0 ? _a : null; }, [primaryWalletId, wallets]);
90
85
  const secondaryWallets = useMemo(() => canHaveMultipleWalletsConnected
91
86
  ? wallets.filter((wallet) => wallet.id !== primaryWalletId)
@@ -17,7 +17,7 @@ require('../../constants/values.cjs');
17
17
  require('../../../shared/utils/classes/storage/localStorage.cjs');
18
18
  require('@dynamic-labs/utils');
19
19
  require('../../../shared/consts/index.cjs');
20
- require('../../../events/dynamicEvents.cjs');
20
+ var useDynamicEvents = require('../events/useDynamicEvents/useDynamicEvents.cjs');
21
21
  var useWalletConnectorEvent = require('../events/useWalletConnectorEvent/useWalletConnectorEvent.cjs');
22
22
 
23
23
  const useWalletEventListeners = ({ disconnectWallet, handleLogOut, multiWallet, multiWalletWidgetState, primaryWallet, secondaryWallets, selectedWalletConnector, selectedWalletWithAction, setSelectedWalletConnectorKey, setSelectedWalletWithAction, setMultiWalletWidgetState, user, setPrimaryWalletId, authMode, refreshConnectedWallet, }) => {
@@ -32,10 +32,29 @@ const useWalletEventListeners = ({ disconnectWallet, handleLogOut, multiWallet,
32
32
  }
33
33
  refreshConnectedWallet(primaryWallet.id, primaryWallet.connector);
34
34
  });
35
- useWalletConnectorEvent.useWalletConnectorEvent(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, 'accountChange', ({ accounts }) => {
36
- logger.logger.debug('primary wallet account change', {
37
- accounts,
38
- });
35
+ const handleAccountChangeWhenAwaitingAccountSwitch = React.useCallback((isPrimaryWallet, newAddress) => {
36
+ const linkedSecondaryWallet = secondaryWallets.find((wallet) => walletConnectorCore.isSameAddress(wallet.address, newAddress, wallet.chain));
37
+ // this means the user is linking a new account, so we need proof of ownership...
38
+ if (!linkedSecondaryWallet) {
39
+ setMultiWalletWidgetState('awaiting_signature', undefined, 'linking_new_wallet');
40
+ if (isPrimaryWallet && primaryWallet) {
41
+ setSelectedWalletConnectorKey(primaryWallet.connector.key);
42
+ }
43
+ return;
44
+ }
45
+ // ...otherwise, the user is switching primary accounts betweeen the same wallet
46
+ setSelectedWalletWithAction(null);
47
+ setPrimaryWalletId(linkedSecondaryWallet.id);
48
+ setMultiWalletWidgetState('idle');
49
+ }, [
50
+ setMultiWalletWidgetState,
51
+ primaryWallet,
52
+ secondaryWallets,
53
+ setSelectedWalletConnectorKey,
54
+ setSelectedWalletWithAction,
55
+ setPrimaryWalletId,
56
+ ]);
57
+ const calculatePrimaryWalletMultiWalletStateFromAccounts = React.useCallback(({ accounts }) => {
39
58
  // change the api here
40
59
  if (!primaryWallet)
41
60
  return;
@@ -74,6 +93,26 @@ const useWalletEventListeners = ({ disconnectWallet, handleLogOut, multiWallet,
74
93
  logger.logger.error(`Unexpected multiWalletWidgetState (${multiWalletWidgetState}) and onAccountChange combination. Resetting state to idle.`);
75
94
  setMultiWalletWidgetState('idle');
76
95
  }
96
+ }, [
97
+ authMode,
98
+ handleAccountChangeWhenAwaitingAccountSwitch,
99
+ multiWallet,
100
+ multiWalletWidgetState,
101
+ primaryWallet,
102
+ refreshConnectedWallet,
103
+ secondaryWallets,
104
+ setMultiWalletWidgetState,
105
+ setPrimaryWalletId,
106
+ setSelectedWalletConnectorKey,
107
+ setSelectedWalletWithAction,
108
+ user,
109
+ ]);
110
+ useDynamicEvents.useInternalDynamicEvents('triggerComputePrimaryWalletMultiWalletStateFromAccounts', calculatePrimaryWalletMultiWalletStateFromAccounts);
111
+ useWalletConnectorEvent.useWalletConnectorEvent(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, 'accountChange', ({ accounts }) => {
112
+ logger.logger.debug('primary wallet account change', {
113
+ accounts,
114
+ });
115
+ calculatePrimaryWalletMultiWalletStateFromAccounts({ accounts });
77
116
  });
78
117
  const uniqueNonPrimaryWallets = React.useMemo(() => {
79
118
  const primaryConnector = primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector;
@@ -117,28 +156,6 @@ const useWalletEventListeners = ({ disconnectWallet, handleLogOut, multiWallet,
117
156
  }
118
157
  }
119
158
  });
120
- const handleAccountChangeWhenAwaitingAccountSwitch = React.useCallback((isPrimaryWallet, newAddress) => {
121
- const linkedSecondaryWallet = secondaryWallets.find((wallet) => walletConnectorCore.isSameAddress(wallet.address, newAddress, wallet.chain));
122
- // this means the user is linking a new account, so we need proof of ownership...
123
- if (!linkedSecondaryWallet) {
124
- setMultiWalletWidgetState('awaiting_signature', undefined, 'linking_new_wallet');
125
- if (isPrimaryWallet && primaryWallet) {
126
- setSelectedWalletConnectorKey(primaryWallet.connector.key);
127
- }
128
- return;
129
- }
130
- // ...otherwise, the user is switching primary accounts betweeen the same wallet
131
- setSelectedWalletWithAction(null);
132
- setPrimaryWalletId(linkedSecondaryWallet.id);
133
- setMultiWalletWidgetState('idle');
134
- }, [
135
- setMultiWalletWidgetState,
136
- primaryWallet,
137
- secondaryWallets,
138
- setSelectedWalletConnectorKey,
139
- setSelectedWalletWithAction,
140
- setPrimaryWalletId,
141
- ]);
142
159
  };
143
160
 
144
161
  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';
@@ -13,7 +13,7 @@ import '../../constants/values.js';
13
13
  import '../../../shared/utils/classes/storage/localStorage.js';
14
14
  import '@dynamic-labs/utils';
15
15
  import '../../../shared/consts/index.js';
16
- import '../../../events/dynamicEvents.js';
16
+ import { useInternalDynamicEvents } from '../events/useDynamicEvents/useDynamicEvents.js';
17
17
  import { useWalletConnectorEvent } from '../events/useWalletConnectorEvent/useWalletConnectorEvent.js';
18
18
 
19
19
  const useWalletEventListeners = ({ disconnectWallet, handleLogOut, multiWallet, multiWalletWidgetState, primaryWallet, secondaryWallets, selectedWalletConnector, selectedWalletWithAction, setSelectedWalletConnectorKey, setSelectedWalletWithAction, setMultiWalletWidgetState, user, setPrimaryWalletId, authMode, refreshConnectedWallet, }) => {
@@ -28,10 +28,29 @@ const useWalletEventListeners = ({ disconnectWallet, handleLogOut, multiWallet,
28
28
  }
29
29
  refreshConnectedWallet(primaryWallet.id, primaryWallet.connector);
30
30
  });
31
- useWalletConnectorEvent(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, 'accountChange', ({ accounts }) => {
32
- logger.debug('primary wallet account change', {
33
- accounts,
34
- });
31
+ const handleAccountChangeWhenAwaitingAccountSwitch = useCallback((isPrimaryWallet, newAddress) => {
32
+ const linkedSecondaryWallet = secondaryWallets.find((wallet) => isSameAddress(wallet.address, newAddress, wallet.chain));
33
+ // this means the user is linking a new account, so we need proof of ownership...
34
+ if (!linkedSecondaryWallet) {
35
+ setMultiWalletWidgetState('awaiting_signature', undefined, 'linking_new_wallet');
36
+ if (isPrimaryWallet && primaryWallet) {
37
+ setSelectedWalletConnectorKey(primaryWallet.connector.key);
38
+ }
39
+ return;
40
+ }
41
+ // ...otherwise, the user is switching primary accounts betweeen the same wallet
42
+ setSelectedWalletWithAction(null);
43
+ setPrimaryWalletId(linkedSecondaryWallet.id);
44
+ setMultiWalletWidgetState('idle');
45
+ }, [
46
+ setMultiWalletWidgetState,
47
+ primaryWallet,
48
+ secondaryWallets,
49
+ setSelectedWalletConnectorKey,
50
+ setSelectedWalletWithAction,
51
+ setPrimaryWalletId,
52
+ ]);
53
+ const calculatePrimaryWalletMultiWalletStateFromAccounts = useCallback(({ accounts }) => {
35
54
  // change the api here
36
55
  if (!primaryWallet)
37
56
  return;
@@ -70,6 +89,26 @@ const useWalletEventListeners = ({ disconnectWallet, handleLogOut, multiWallet,
70
89
  logger.error(`Unexpected multiWalletWidgetState (${multiWalletWidgetState}) and onAccountChange combination. Resetting state to idle.`);
71
90
  setMultiWalletWidgetState('idle');
72
91
  }
92
+ }, [
93
+ authMode,
94
+ handleAccountChangeWhenAwaitingAccountSwitch,
95
+ multiWallet,
96
+ multiWalletWidgetState,
97
+ primaryWallet,
98
+ refreshConnectedWallet,
99
+ secondaryWallets,
100
+ setMultiWalletWidgetState,
101
+ setPrimaryWalletId,
102
+ setSelectedWalletConnectorKey,
103
+ setSelectedWalletWithAction,
104
+ user,
105
+ ]);
106
+ useInternalDynamicEvents('triggerComputePrimaryWalletMultiWalletStateFromAccounts', calculatePrimaryWalletMultiWalletStateFromAccounts);
107
+ useWalletConnectorEvent(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, 'accountChange', ({ accounts }) => {
108
+ logger.debug('primary wallet account change', {
109
+ accounts,
110
+ });
111
+ calculatePrimaryWalletMultiWalletStateFromAccounts({ accounts });
73
112
  });
74
113
  const uniqueNonPrimaryWallets = useMemo(() => {
75
114
  const primaryConnector = primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector;
@@ -113,28 +152,6 @@ const useWalletEventListeners = ({ disconnectWallet, handleLogOut, multiWallet,
113
152
  }
114
153
  }
115
154
  });
116
- const handleAccountChangeWhenAwaitingAccountSwitch = useCallback((isPrimaryWallet, newAddress) => {
117
- const linkedSecondaryWallet = secondaryWallets.find((wallet) => isSameAddress(wallet.address, newAddress, wallet.chain));
118
- // this means the user is linking a new account, so we need proof of ownership...
119
- if (!linkedSecondaryWallet) {
120
- setMultiWalletWidgetState('awaiting_signature', undefined, 'linking_new_wallet');
121
- if (isPrimaryWallet && primaryWallet) {
122
- setSelectedWalletConnectorKey(primaryWallet.connector.key);
123
- }
124
- return;
125
- }
126
- // ...otherwise, the user is switching primary accounts betweeen the same wallet
127
- setSelectedWalletWithAction(null);
128
- setPrimaryWalletId(linkedSecondaryWallet.id);
129
- setMultiWalletWidgetState('idle');
130
- }, [
131
- setMultiWalletWidgetState,
132
- primaryWallet,
133
- secondaryWallets,
134
- setSelectedWalletConnectorKey,
135
- setSelectedWalletWithAction,
136
- setPrimaryWalletId,
137
- ]);
138
155
  };
139
156
 
140
157
  export { useWalletEventListeners };
@@ -7,22 +7,19 @@ var _tslib = require('../../../../_virtual/_tslib.cjs');
7
7
  var jsxRuntime = require('react/jsx-runtime');
8
8
  var React = require('react');
9
9
  var reactI18next = require('react-i18next');
10
- var walletBook = require('@dynamic-labs/wallet-book');
11
- var iconic = require('@dynamic-labs/iconic');
12
10
  require('../../events/dynamicEvents.cjs');
13
11
  require('@dynamic-labs/utils');
14
12
  require('../../context/DynamicContext/DynamicContext.cjs');
15
13
  require('@dynamic-labs/sdk-api-core');
16
14
  var logger = require('../../shared/logger.cjs');
15
+ require('@dynamic-labs/iconic');
17
16
  require('@dynamic-labs/wallet-connector-core');
18
17
  var ViewContext = require('../../context/ViewContext/ViewContext.cjs');
19
- var add = require('../../shared/assets/add.cjs');
20
- var shortenWalletAddress = require('../../shared/utils/functions/shortenWalletAddress/shortenWalletAddress.cjs');
18
+ require('@dynamic-labs/wallet-book');
21
19
  require('../../utils/constants/colors.cjs');
22
20
  require('../../utils/constants/values.cjs');
23
21
  require('../../shared/utils/classes/storage/localStorage.cjs');
24
22
  require('../../shared/consts/index.cjs');
25
- var useInternalDynamicContext = require('../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.cjs');
26
23
  require('../../context/CaptchaContext/CaptchaContext.cjs');
27
24
  require('../../context/ErrorContext/ErrorContext.cjs');
28
25
  require('@dynamic-labs/multi-wallet');
@@ -83,12 +80,11 @@ require('../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/
83
80
  var useMergeUserAccounts = require('../../utils/hooks/useMergeUserAccounts/useMergeUserAccounts.cjs');
84
81
 
85
82
  const MergeUserAccountsView = (props) => {
86
- const { selectedWalletConnector } = useInternalDynamicContext.useInternalDynamicContext();
87
83
  const { setView } = ViewContext.useViewContext();
88
84
  const { mergeUserAccounts } = useMergeUserAccounts.useMergeUserAccounts();
89
85
  const { t } = reactI18next.useTranslation();
90
86
  const [error, setError] = React.useState('');
91
- const { mergeConflicts, walletAddress } = props;
87
+ const { mergeConflicts } = props;
92
88
  const goToConflictsResolutionView = () => {
93
89
  // back button on conflicts resolution view should go back to this view
94
90
  const onConflictsResolutionBackClick = () => {
@@ -112,13 +108,7 @@ const MergeUserAccountsView = (props) => {
112
108
  setError(t('dyn_merge_user_accounts.errors.merge_error'));
113
109
  }
114
110
  });
115
- const renderDuplicatedInfo = () => {
116
- if (walletAddress) {
117
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(walletBook.WalletIcon, { walletKey: selectedWalletConnector === null || selectedWalletConnector === void 0 ? void 0 : selectedWalletConnector.key, className: 'merge-user-accounts__accounts__item__icon' }), jsxRuntime.jsx(Typography.Typography, { variant: 'body_small', weight: 'bold', color: 'secondary', className: 'merge-user-accounts__accounts__item__text', children: shortenWalletAddress.shortenWalletAddress(walletAddress, 3, 3) })] }));
118
- }
119
- return (jsxRuntime.jsx(iconic.UserProfileIcon, { className: 'merge-user-accounts__accounts__item__icon' }));
120
- };
121
- return (jsxRuntime.jsxs("div", { className: 'merge-user-accounts', children: [error && (jsxRuntime.jsx(Alert.Alert, { icon: 'error', variant: 'error', className: 'merge-user-accounts__error', children: error })), jsxRuntime.jsxs("div", { className: 'merge-user-accounts__container', children: [jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', className: 'merge-user-accounts__title', copykey: 'dyn_merge_user_accounts.wallet.content', children: t('dyn_merge_user_accounts.wallet.content') }), jsxRuntime.jsxs("div", { className: 'merge-user-accounts__accounts', children: [jsxRuntime.jsx("div", { className: 'merge-user-accounts__accounts__item', children: renderDuplicatedInfo() }), jsxRuntime.jsxs("div", { className: 'merge-user-accounts__accounts__divider', children: [jsxRuntime.jsx("div", { className: 'merge-user-accounts__accounts__divider__dash' }), jsxRuntime.jsx("div", { className: 'merge-user-accounts__accounts__divider__icon', children: jsxRuntime.jsx(add.ReactComponent, {}) })] }), jsxRuntime.jsx("div", { className: 'merge-user-accounts__accounts__item', children: renderDuplicatedInfo() })] }), jsxRuntime.jsx(TypographyButton.TypographyButton, { onClick: handleMergeConfirm, buttonClassName: 'merge-user-accounts__button', buttonVariant: 'brand-primary', buttonPadding: 'large', typographyProps: {
111
+ return (jsxRuntime.jsxs("div", { className: 'merge-user-accounts', children: [error && (jsxRuntime.jsx(Alert.Alert, { icon: 'error', variant: 'error', className: 'merge-user-accounts__error', children: error })), jsxRuntime.jsxs("div", { className: 'merge-user-accounts__container', children: [jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', className: 'merge-user-accounts__title', copykey: 'dyn_merge_user_accounts.wallet.content', children: t('dyn_merge_user_accounts.wallet.content') }), jsxRuntime.jsx(TypographyButton.TypographyButton, { onClick: handleMergeConfirm, buttonClassName: 'merge-user-accounts__button', buttonVariant: 'brand-primary', buttonPadding: 'large', typographyProps: {
122
112
  color: 'inherit',
123
113
  }, expanded: true, copykey: 'dyn_merge_user_accounts.confirm_button', children: t('dyn_merge_user_accounts.confirm_button') })] })] }));
124
114
  };
@@ -1,24 +1,21 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../../../_virtual/_tslib.js';
3
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
3
+ import { jsxs, jsx } from 'react/jsx-runtime';
4
4
  import { useState } from 'react';
5
5
  import { useTranslation } from 'react-i18next';
6
- import { WalletIcon } from '@dynamic-labs/wallet-book';
7
- import { UserProfileIcon } from '@dynamic-labs/iconic';
8
6
  import '../../events/dynamicEvents.js';
9
7
  import '@dynamic-labs/utils';
10
8
  import '../../context/DynamicContext/DynamicContext.js';
11
9
  import '@dynamic-labs/sdk-api-core';
12
10
  import { logger } from '../../shared/logger.js';
11
+ import '@dynamic-labs/iconic';
13
12
  import '@dynamic-labs/wallet-connector-core';
14
13
  import { useViewContext } from '../../context/ViewContext/ViewContext.js';
15
- import { ReactComponent as SvgAdd } from '../../shared/assets/add.js';
16
- import { shortenWalletAddress } from '../../shared/utils/functions/shortenWalletAddress/shortenWalletAddress.js';
14
+ import '@dynamic-labs/wallet-book';
17
15
  import '../../utils/constants/colors.js';
18
16
  import '../../utils/constants/values.js';
19
17
  import '../../shared/utils/classes/storage/localStorage.js';
20
18
  import '../../shared/consts/index.js';
21
- import { useInternalDynamicContext } from '../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.js';
22
19
  import '../../context/CaptchaContext/CaptchaContext.js';
23
20
  import '../../context/ErrorContext/ErrorContext.js';
24
21
  import '@dynamic-labs/multi-wallet';
@@ -79,12 +76,11 @@ import '../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/P
79
76
  import { useMergeUserAccounts } from '../../utils/hooks/useMergeUserAccounts/useMergeUserAccounts.js';
80
77
 
81
78
  const MergeUserAccountsView = (props) => {
82
- const { selectedWalletConnector } = useInternalDynamicContext();
83
79
  const { setView } = useViewContext();
84
80
  const { mergeUserAccounts } = useMergeUserAccounts();
85
81
  const { t } = useTranslation();
86
82
  const [error, setError] = useState('');
87
- const { mergeConflicts, walletAddress } = props;
83
+ const { mergeConflicts } = props;
88
84
  const goToConflictsResolutionView = () => {
89
85
  // back button on conflicts resolution view should go back to this view
90
86
  const onConflictsResolutionBackClick = () => {
@@ -108,13 +104,7 @@ const MergeUserAccountsView = (props) => {
108
104
  setError(t('dyn_merge_user_accounts.errors.merge_error'));
109
105
  }
110
106
  });
111
- const renderDuplicatedInfo = () => {
112
- if (walletAddress) {
113
- return (jsxs(Fragment, { children: [jsx(WalletIcon, { walletKey: selectedWalletConnector === null || selectedWalletConnector === void 0 ? void 0 : selectedWalletConnector.key, className: 'merge-user-accounts__accounts__item__icon' }), jsx(Typography, { variant: 'body_small', weight: 'bold', color: 'secondary', className: 'merge-user-accounts__accounts__item__text', children: shortenWalletAddress(walletAddress, 3, 3) })] }));
114
- }
115
- return (jsx(UserProfileIcon, { className: 'merge-user-accounts__accounts__item__icon' }));
116
- };
117
- return (jsxs("div", { className: 'merge-user-accounts', children: [error && (jsx(Alert, { icon: 'error', variant: 'error', className: 'merge-user-accounts__error', children: error })), jsxs("div", { className: 'merge-user-accounts__container', children: [jsx(Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', className: 'merge-user-accounts__title', copykey: 'dyn_merge_user_accounts.wallet.content', children: t('dyn_merge_user_accounts.wallet.content') }), jsxs("div", { className: 'merge-user-accounts__accounts', children: [jsx("div", { className: 'merge-user-accounts__accounts__item', children: renderDuplicatedInfo() }), jsxs("div", { className: 'merge-user-accounts__accounts__divider', children: [jsx("div", { className: 'merge-user-accounts__accounts__divider__dash' }), jsx("div", { className: 'merge-user-accounts__accounts__divider__icon', children: jsx(SvgAdd, {}) })] }), jsx("div", { className: 'merge-user-accounts__accounts__item', children: renderDuplicatedInfo() })] }), jsx(TypographyButton, { onClick: handleMergeConfirm, buttonClassName: 'merge-user-accounts__button', buttonVariant: 'brand-primary', buttonPadding: 'large', typographyProps: {
107
+ return (jsxs("div", { className: 'merge-user-accounts', children: [error && (jsx(Alert, { icon: 'error', variant: 'error', className: 'merge-user-accounts__error', children: error })), jsxs("div", { className: 'merge-user-accounts__container', children: [jsx(Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', className: 'merge-user-accounts__title', copykey: 'dyn_merge_user_accounts.wallet.content', children: t('dyn_merge_user_accounts.wallet.content') }), jsx(TypographyButton, { onClick: handleMergeConfirm, buttonClassName: 'merge-user-accounts__button', buttonVariant: 'brand-primary', buttonPadding: 'large', typographyProps: {
118
108
  color: 'inherit',
119
109
  }, expanded: true, copykey: 'dyn_merge_user_accounts.confirm_button', children: t('dyn_merge_user_accounts.confirm_button') })] })] }));
120
110
  };
@@ -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 = () => {