@dynamic-labs/sdk-react-core 4.9.9 → 4.9.10
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.
- package/CHANGELOG.md +7 -0
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +11 -11
- package/src/lib/context/DynamicContext/DynamicContext.cjs +2 -0
- package/src/lib/context/DynamicContext/DynamicContext.js +2 -0
- package/src/lib/context/DynamicContext/hooks/useAutoselectPrimaryWallet/index.d.ts +1 -0
- package/src/lib/context/DynamicContext/hooks/useAutoselectPrimaryWallet/useAutoselectPrimaryWallet.cjs +120 -0
- package/src/lib/context/DynamicContext/hooks/useAutoselectPrimaryWallet/useAutoselectPrimaryWallet.d.ts +7 -0
- package/src/lib/context/DynamicContext/hooks/useAutoselectPrimaryWallet/useAutoselectPrimaryWallet.js +116 -0
- package/src/lib/context/UserWalletsContext/UserWalletsContext.cjs +3 -0
- package/src/lib/context/UserWalletsContext/UserWalletsContext.js +3 -0
- package/src/lib/events/wallets.d.ts +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
|
|
2
|
+
### [4.9.10](https://github.com/dynamic-labs/dynamic-auth/compare/v4.9.9...v4.9.10) (2025-03-26)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
* auto select primary wallet when embedded wallets are disabled ([#8374](https://github.com/dynamic-labs/dynamic-auth/issues/8374)) ([780f3f1](https://github.com/dynamic-labs/dynamic-auth/commit/780f3f16ebd06dd8bc41fa85e8b4393c906989e2))
|
|
8
|
+
|
|
2
9
|
### [4.9.9](https://github.com/dynamic-labs/dynamic-auth/compare/v4.9.8...v4.9.9) (2025-03-26)
|
|
3
10
|
|
|
4
11
|
|
package/package.cjs
CHANGED
package/package.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/sdk-react-core",
|
|
3
|
-
"version": "4.9.
|
|
3
|
+
"version": "4.9.10",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"@dynamic-labs/sdk-api-core": "0.0.644",
|
|
6
6
|
"@hcaptcha/react-hcaptcha": "1.4.4",
|
|
@@ -14,16 +14,16 @@
|
|
|
14
14
|
"yup": "0.32.11",
|
|
15
15
|
"react-international-phone": "4.2.5",
|
|
16
16
|
"bs58": "5.0.0",
|
|
17
|
-
"@dynamic-labs/assert-package-version": "4.9.
|
|
18
|
-
"@dynamic-labs/iconic": "4.9.
|
|
19
|
-
"@dynamic-labs/logger": "4.9.
|
|
20
|
-
"@dynamic-labs/multi-wallet": "4.9.
|
|
21
|
-
"@dynamic-labs/rpc-providers": "4.9.
|
|
22
|
-
"@dynamic-labs/store": "4.9.
|
|
23
|
-
"@dynamic-labs/types": "4.9.
|
|
24
|
-
"@dynamic-labs/utils": "4.9.
|
|
25
|
-
"@dynamic-labs/wallet-book": "4.9.
|
|
26
|
-
"@dynamic-labs/wallet-connector-core": "4.9.
|
|
17
|
+
"@dynamic-labs/assert-package-version": "4.9.10",
|
|
18
|
+
"@dynamic-labs/iconic": "4.9.10",
|
|
19
|
+
"@dynamic-labs/logger": "4.9.10",
|
|
20
|
+
"@dynamic-labs/multi-wallet": "4.9.10",
|
|
21
|
+
"@dynamic-labs/rpc-providers": "4.9.10",
|
|
22
|
+
"@dynamic-labs/store": "4.9.10",
|
|
23
|
+
"@dynamic-labs/types": "4.9.10",
|
|
24
|
+
"@dynamic-labs/utils": "4.9.10",
|
|
25
|
+
"@dynamic-labs/wallet-book": "4.9.10",
|
|
26
|
+
"@dynamic-labs/wallet-connector-core": "4.9.10",
|
|
27
27
|
"eventemitter3": "5.0.1"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
@@ -147,6 +147,7 @@ var useShowAuthFlow = require('./hooks/useShowAuthFlow/useShowAuthFlow.cjs');
|
|
|
147
147
|
var usePasskeySuccessPopup = require('./hooks/usePasskeySuccessPopup/usePasskeySuccessPopup.cjs');
|
|
148
148
|
var useTieCallbacksToEvents = require('./hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.cjs');
|
|
149
149
|
var useMultiWallet = require('./hooks/useMultiWallet/useMultiWallet.cjs');
|
|
150
|
+
var useAutoselectPrimaryWallet = require('./hooks/useAutoselectPrimaryWallet/useAutoselectPrimaryWallet.cjs');
|
|
150
151
|
var useInitialViewType = require('./hooks/useInitialViewType/useInitialViewType.cjs');
|
|
151
152
|
var useMultiAsset = require('./hooks/useMultiAsset/useMultiAsset.cjs');
|
|
152
153
|
var useParentDynamicContextGuard = require('./hooks/useParentDynamicContextGuard/useParentDynamicContextGuard.cjs');
|
|
@@ -325,6 +326,7 @@ const InnerDynamicContextProvider = (props) => {
|
|
|
325
326
|
user: user$1 || userWithMissingInfo,
|
|
326
327
|
walletConnectorOptions,
|
|
327
328
|
});
|
|
329
|
+
useAutoselectPrimaryWallet.useAutoselectPrimaryWallet(isBridgeFlow);
|
|
328
330
|
React.useEffect(() => {
|
|
329
331
|
setRequiredWalletsConnected(!(bridgeChainsToConnect === null || bridgeChainsToConnect === void 0 ? void 0 : bridgeChainsToConnect.length) && Boolean(primaryWallet));
|
|
330
332
|
}, [bridgeChainsToConnect, primaryWallet]);
|
|
@@ -143,6 +143,7 @@ import { useShowAuthFlow } from './hooks/useShowAuthFlow/useShowAuthFlow.js';
|
|
|
143
143
|
import { usePasskeySuccessPopup } from './hooks/usePasskeySuccessPopup/usePasskeySuccessPopup.js';
|
|
144
144
|
import { useTieCallbacksToEvents } from './hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.js';
|
|
145
145
|
import { useMultiWallet } from './hooks/useMultiWallet/useMultiWallet.js';
|
|
146
|
+
import { useAutoselectPrimaryWallet } from './hooks/useAutoselectPrimaryWallet/useAutoselectPrimaryWallet.js';
|
|
146
147
|
import { useInitialViewType } from './hooks/useInitialViewType/useInitialViewType.js';
|
|
147
148
|
import { useMultiAsset } from './hooks/useMultiAsset/useMultiAsset.js';
|
|
148
149
|
import { useParentDynamicContextGuard } from './hooks/useParentDynamicContextGuard/useParentDynamicContextGuard.js';
|
|
@@ -321,6 +322,7 @@ const InnerDynamicContextProvider = (props) => {
|
|
|
321
322
|
user: user || userWithMissingInfo,
|
|
322
323
|
walletConnectorOptions,
|
|
323
324
|
});
|
|
325
|
+
useAutoselectPrimaryWallet(isBridgeFlow);
|
|
324
326
|
useEffect(() => {
|
|
325
327
|
setRequiredWalletsConnected(!(bridgeChainsToConnect === null || bridgeChainsToConnect === void 0 ? void 0 : bridgeChainsToConnect.length) && Boolean(primaryWallet));
|
|
326
328
|
}, [bridgeChainsToConnect, primaryWallet]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useAutoselectPrimaryWallet';
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
6
|
+
var primaryWalletId = require('../../../../store/state/primaryWalletId/primaryWalletId.cjs');
|
|
7
|
+
require('@dynamic-labs/sdk-api-core');
|
|
8
|
+
require('../../../../utils/constants/values.cjs');
|
|
9
|
+
require('@dynamic-labs/utils');
|
|
10
|
+
require('../../../../../../_virtual/_tslib.cjs');
|
|
11
|
+
require('@dynamic-labs/multi-wallet');
|
|
12
|
+
require('../../../../shared/logger.cjs');
|
|
13
|
+
require('../../../../utils/constants/colors.cjs');
|
|
14
|
+
require('react-international-phone');
|
|
15
|
+
require('@dynamic-labs/iconic');
|
|
16
|
+
require('@dynamic-labs/wallet-connector-core');
|
|
17
|
+
require('react');
|
|
18
|
+
require('react/jsx-runtime');
|
|
19
|
+
require('../../../ViewContext/ViewContext.cjs');
|
|
20
|
+
require('@dynamic-labs/wallet-book');
|
|
21
|
+
require('../../../../shared/consts/index.cjs');
|
|
22
|
+
require('../../../../store/state/nonce/nonce.cjs');
|
|
23
|
+
require('../../../../store/state/projectSettings/projectSettings.cjs');
|
|
24
|
+
var updatePrimaryWalletId = require('../../../../utils/functions/updatePrimaryWalletId/updatePrimaryWalletId.cjs');
|
|
25
|
+
var useDynamicEvents = require('../../../../utils/hooks/events/useDynamicEvents/useDynamicEvents.cjs');
|
|
26
|
+
require('../../DynamicContext.cjs');
|
|
27
|
+
require('../../../CaptchaContext/CaptchaContext.cjs');
|
|
28
|
+
require('../../../ErrorContext/ErrorContext.cjs');
|
|
29
|
+
require('../../../AccessDeniedContext/AccessDeniedContext.cjs');
|
|
30
|
+
require('../../../AccountExistsContext/AccountExistsContext.cjs');
|
|
31
|
+
require('../../../UserWalletsContext/UserWalletsContext.cjs');
|
|
32
|
+
require('../../../../config/ApiEndpoint.cjs');
|
|
33
|
+
require('../../../../store/state/user/user.cjs');
|
|
34
|
+
require('../../../../locale/locale.cjs');
|
|
35
|
+
require('../../../../events/dynamicEvents.cjs');
|
|
36
|
+
require('../../../../store/state/connectedWalletsInfo/connectedWalletsInfo.cjs');
|
|
37
|
+
require('../../../VerificationContext/VerificationContext.cjs');
|
|
38
|
+
require('react-dom');
|
|
39
|
+
require('../../../../utils/functions/compareChains/compareChains.cjs');
|
|
40
|
+
require('../../../ThemeContext/ThemeContext.cjs');
|
|
41
|
+
require('../../../../utils/hooks/useUserUpdateRequest/useUpdateUser/userFieldsSchema.cjs');
|
|
42
|
+
require('bs58');
|
|
43
|
+
require('@dynamic-labs/types');
|
|
44
|
+
require('../../../SocialRedirectContext/SocialRedirectContext.cjs');
|
|
45
|
+
require('../../../LoadingContext/LoadingContext.cjs');
|
|
46
|
+
require('../../../WalletContext/WalletContext.cjs');
|
|
47
|
+
require('../../../../utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/constants.cjs');
|
|
48
|
+
require('yup');
|
|
49
|
+
require('../../../MockContext/MockContext.cjs');
|
|
50
|
+
require('../../../../views/CollectUserDataView/useFields.cjs');
|
|
51
|
+
require('../../../FieldsStateContext/FieldsStateContext.cjs');
|
|
52
|
+
require('../../../UserFieldEditorContext/UserFieldEditorContext.cjs');
|
|
53
|
+
require('@dynamic-labs/rpc-providers');
|
|
54
|
+
require('../../../../store/state/loadingAndLifecycle.cjs');
|
|
55
|
+
require('../../../../store/state/dynamicContextProps/dynamicContextProps.cjs');
|
|
56
|
+
require('../../../../store/state/walletOptions/walletOptions.cjs');
|
|
57
|
+
require('react-i18next');
|
|
58
|
+
require('../../../../components/Accordion/components/AccordionItem/AccordionItem.cjs');
|
|
59
|
+
require('../../../../components/Alert/Alert.cjs');
|
|
60
|
+
require('../../../../components/ShadowDOM/ShadowDOM.cjs');
|
|
61
|
+
require('../../../../components/IconButton/IconButton.cjs');
|
|
62
|
+
require('../../../../components/InlineWidget/InlineWidget.cjs');
|
|
63
|
+
require('../../../../components/Input/Input.cjs');
|
|
64
|
+
require('../../../../components/IsBrowser/IsBrowser.cjs');
|
|
65
|
+
require('../../../../components/MenuList/Dropdown/Dropdown.cjs');
|
|
66
|
+
require('../../../../components/OverlayCard/OverlayCard.cjs');
|
|
67
|
+
require('../../../../components/Transition/ZoomTransition/ZoomTransition.cjs');
|
|
68
|
+
require('../../../../components/Transition/SlideInUpTransition/SlideInUpTransition.cjs');
|
|
69
|
+
require('../../../../components/Transition/OpacityTransition/OpacityTransition.cjs');
|
|
70
|
+
require('../../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.cjs');
|
|
71
|
+
require('../../../../components/Popper/Popper/Popper.cjs');
|
|
72
|
+
require('../../../../components/Popper/PopperContext/PopperContext.cjs');
|
|
73
|
+
require('react-focus-lock');
|
|
74
|
+
require('qrcode');
|
|
75
|
+
require('formik');
|
|
76
|
+
require('../../../../utils/hooks/useSubdomainCheck/useSubdomainCheck.cjs');
|
|
77
|
+
require('../../../WalletGroupContext/WalletGroupContext.cjs');
|
|
78
|
+
require('../../../IpConfigurationContext/IpConfigurationContext.cjs');
|
|
79
|
+
require('../../../ConnectWithOtpContext/ConnectWithOtpContext.cjs');
|
|
80
|
+
require('../../../ConnectWithOtpContext/constants.cjs');
|
|
81
|
+
require('../../../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.cjs');
|
|
82
|
+
require('@hcaptcha/react-hcaptcha');
|
|
83
|
+
require('../../../../widgets/DynamicWidget/context/DynamicWidgetContext.cjs');
|
|
84
|
+
require('../../../FooterAnimationContext/index.cjs');
|
|
85
|
+
require('../../../ErrorContext/hooks/useErrorText/useErrorText.cjs');
|
|
86
|
+
require('../../../PasskeyContext/PasskeyContext.cjs');
|
|
87
|
+
require('../../../../store/state/sendBalances.cjs');
|
|
88
|
+
require('../../../../store/state/connectorsInitializing/connectorsInitializing.cjs');
|
|
89
|
+
require('../../../../components/OverlayCardBase/OverlayCardTarget/OverlayCardTarget.cjs');
|
|
90
|
+
require('../../../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.cjs');
|
|
91
|
+
require('../../../../views/TransactionConfirmationView/TransactionConfirmationView.cjs');
|
|
92
|
+
require('../../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
|
|
93
|
+
require('../../../OnrampContext/OnrampContext.cjs');
|
|
94
|
+
require('../../../../widgets/DynamicWidget/views/ReceiveWalletFunds/ReceiveWalletFunds.cjs');
|
|
95
|
+
require('../../../../../index.cjs');
|
|
96
|
+
require('../../../../store/state/tokenBalances.cjs');
|
|
97
|
+
require('../../../../shared/utils/functions/getInitialUrl/getInitialUrl.cjs');
|
|
98
|
+
|
|
99
|
+
/* eslint-disable prefer-destructuring */
|
|
100
|
+
/**
|
|
101
|
+
* Whenever user wallets are populated, this hook will automatically select a wallet as the primary wallet.
|
|
102
|
+
*
|
|
103
|
+
* This logic doesn't apply when embedded wallets are enabled though, as the primary wallet will be selected
|
|
104
|
+
* as the embedded wallet.
|
|
105
|
+
*/
|
|
106
|
+
const useAutoselectPrimaryWallet = (isBridgeFlow) => {
|
|
107
|
+
useDynamicEvents.useInternalDynamicEvents('userWalletsPopulated', (userWallets) => {
|
|
108
|
+
if (isBridgeFlow ||
|
|
109
|
+
userWallets.some((wallet) => wallet.connector.isEmbeddedWallet))
|
|
110
|
+
return;
|
|
111
|
+
if (primaryWalletId.getPrimaryWalletId())
|
|
112
|
+
return;
|
|
113
|
+
const firstWallet = userWallets[0];
|
|
114
|
+
if (!firstWallet)
|
|
115
|
+
return;
|
|
116
|
+
updatePrimaryWalletId.updatePrimaryWalletId(firstWallet.id);
|
|
117
|
+
});
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
exports.useAutoselectPrimaryWallet = useAutoselectPrimaryWallet;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whenever user wallets are populated, this hook will automatically select a wallet as the primary wallet.
|
|
3
|
+
*
|
|
4
|
+
* This logic doesn't apply when embedded wallets are enabled though, as the primary wallet will be selected
|
|
5
|
+
* as the embedded wallet.
|
|
6
|
+
*/
|
|
7
|
+
export declare const useAutoselectPrimaryWallet: (isBridgeFlow: boolean) => void;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
import { getPrimaryWalletId } from '../../../../store/state/primaryWalletId/primaryWalletId.js';
|
|
3
|
+
import '@dynamic-labs/sdk-api-core';
|
|
4
|
+
import '../../../../utils/constants/values.js';
|
|
5
|
+
import '@dynamic-labs/utils';
|
|
6
|
+
import '../../../../../../_virtual/_tslib.js';
|
|
7
|
+
import '@dynamic-labs/multi-wallet';
|
|
8
|
+
import '../../../../shared/logger.js';
|
|
9
|
+
import '../../../../utils/constants/colors.js';
|
|
10
|
+
import 'react-international-phone';
|
|
11
|
+
import '@dynamic-labs/iconic';
|
|
12
|
+
import '@dynamic-labs/wallet-connector-core';
|
|
13
|
+
import 'react';
|
|
14
|
+
import 'react/jsx-runtime';
|
|
15
|
+
import '../../../ViewContext/ViewContext.js';
|
|
16
|
+
import '@dynamic-labs/wallet-book';
|
|
17
|
+
import '../../../../shared/consts/index.js';
|
|
18
|
+
import '../../../../store/state/nonce/nonce.js';
|
|
19
|
+
import '../../../../store/state/projectSettings/projectSettings.js';
|
|
20
|
+
import { updatePrimaryWalletId } from '../../../../utils/functions/updatePrimaryWalletId/updatePrimaryWalletId.js';
|
|
21
|
+
import { useInternalDynamicEvents } from '../../../../utils/hooks/events/useDynamicEvents/useDynamicEvents.js';
|
|
22
|
+
import '../../DynamicContext.js';
|
|
23
|
+
import '../../../CaptchaContext/CaptchaContext.js';
|
|
24
|
+
import '../../../ErrorContext/ErrorContext.js';
|
|
25
|
+
import '../../../AccessDeniedContext/AccessDeniedContext.js';
|
|
26
|
+
import '../../../AccountExistsContext/AccountExistsContext.js';
|
|
27
|
+
import '../../../UserWalletsContext/UserWalletsContext.js';
|
|
28
|
+
import '../../../../config/ApiEndpoint.js';
|
|
29
|
+
import '../../../../store/state/user/user.js';
|
|
30
|
+
import '../../../../locale/locale.js';
|
|
31
|
+
import '../../../../events/dynamicEvents.js';
|
|
32
|
+
import '../../../../store/state/connectedWalletsInfo/connectedWalletsInfo.js';
|
|
33
|
+
import '../../../VerificationContext/VerificationContext.js';
|
|
34
|
+
import 'react-dom';
|
|
35
|
+
import '../../../../utils/functions/compareChains/compareChains.js';
|
|
36
|
+
import '../../../ThemeContext/ThemeContext.js';
|
|
37
|
+
import '../../../../utils/hooks/useUserUpdateRequest/useUpdateUser/userFieldsSchema.js';
|
|
38
|
+
import 'bs58';
|
|
39
|
+
import '@dynamic-labs/types';
|
|
40
|
+
import '../../../SocialRedirectContext/SocialRedirectContext.js';
|
|
41
|
+
import '../../../LoadingContext/LoadingContext.js';
|
|
42
|
+
import '../../../WalletContext/WalletContext.js';
|
|
43
|
+
import '../../../../utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/constants.js';
|
|
44
|
+
import 'yup';
|
|
45
|
+
import '../../../MockContext/MockContext.js';
|
|
46
|
+
import '../../../../views/CollectUserDataView/useFields.js';
|
|
47
|
+
import '../../../FieldsStateContext/FieldsStateContext.js';
|
|
48
|
+
import '../../../UserFieldEditorContext/UserFieldEditorContext.js';
|
|
49
|
+
import '@dynamic-labs/rpc-providers';
|
|
50
|
+
import '../../../../store/state/loadingAndLifecycle.js';
|
|
51
|
+
import '../../../../store/state/dynamicContextProps/dynamicContextProps.js';
|
|
52
|
+
import '../../../../store/state/walletOptions/walletOptions.js';
|
|
53
|
+
import 'react-i18next';
|
|
54
|
+
import '../../../../components/Accordion/components/AccordionItem/AccordionItem.js';
|
|
55
|
+
import '../../../../components/Alert/Alert.js';
|
|
56
|
+
import '../../../../components/ShadowDOM/ShadowDOM.js';
|
|
57
|
+
import '../../../../components/IconButton/IconButton.js';
|
|
58
|
+
import '../../../../components/InlineWidget/InlineWidget.js';
|
|
59
|
+
import '../../../../components/Input/Input.js';
|
|
60
|
+
import '../../../../components/IsBrowser/IsBrowser.js';
|
|
61
|
+
import '../../../../components/MenuList/Dropdown/Dropdown.js';
|
|
62
|
+
import '../../../../components/OverlayCard/OverlayCard.js';
|
|
63
|
+
import '../../../../components/Transition/ZoomTransition/ZoomTransition.js';
|
|
64
|
+
import '../../../../components/Transition/SlideInUpTransition/SlideInUpTransition.js';
|
|
65
|
+
import '../../../../components/Transition/OpacityTransition/OpacityTransition.js';
|
|
66
|
+
import '../../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.js';
|
|
67
|
+
import '../../../../components/Popper/Popper/Popper.js';
|
|
68
|
+
import '../../../../components/Popper/PopperContext/PopperContext.js';
|
|
69
|
+
import 'react-focus-lock';
|
|
70
|
+
import 'qrcode';
|
|
71
|
+
import 'formik';
|
|
72
|
+
import '../../../../utils/hooks/useSubdomainCheck/useSubdomainCheck.js';
|
|
73
|
+
import '../../../WalletGroupContext/WalletGroupContext.js';
|
|
74
|
+
import '../../../IpConfigurationContext/IpConfigurationContext.js';
|
|
75
|
+
import '../../../ConnectWithOtpContext/ConnectWithOtpContext.js';
|
|
76
|
+
import '../../../ConnectWithOtpContext/constants.js';
|
|
77
|
+
import '../../../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.js';
|
|
78
|
+
import '@hcaptcha/react-hcaptcha';
|
|
79
|
+
import '../../../../widgets/DynamicWidget/context/DynamicWidgetContext.js';
|
|
80
|
+
import '../../../FooterAnimationContext/index.js';
|
|
81
|
+
import '../../../ErrorContext/hooks/useErrorText/useErrorText.js';
|
|
82
|
+
import '../../../PasskeyContext/PasskeyContext.js';
|
|
83
|
+
import '../../../../store/state/sendBalances.js';
|
|
84
|
+
import '../../../../store/state/connectorsInitializing/connectorsInitializing.js';
|
|
85
|
+
import '../../../../components/OverlayCardBase/OverlayCardTarget/OverlayCardTarget.js';
|
|
86
|
+
import '../../../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.js';
|
|
87
|
+
import '../../../../views/TransactionConfirmationView/TransactionConfirmationView.js';
|
|
88
|
+
import '../../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.js';
|
|
89
|
+
import '../../../OnrampContext/OnrampContext.js';
|
|
90
|
+
import '../../../../widgets/DynamicWidget/views/ReceiveWalletFunds/ReceiveWalletFunds.js';
|
|
91
|
+
import '../../../../../index.js';
|
|
92
|
+
import '../../../../store/state/tokenBalances.js';
|
|
93
|
+
import '../../../../shared/utils/functions/getInitialUrl/getInitialUrl.js';
|
|
94
|
+
|
|
95
|
+
/* eslint-disable prefer-destructuring */
|
|
96
|
+
/**
|
|
97
|
+
* Whenever user wallets are populated, this hook will automatically select a wallet as the primary wallet.
|
|
98
|
+
*
|
|
99
|
+
* This logic doesn't apply when embedded wallets are enabled though, as the primary wallet will be selected
|
|
100
|
+
* as the embedded wallet.
|
|
101
|
+
*/
|
|
102
|
+
const useAutoselectPrimaryWallet = (isBridgeFlow) => {
|
|
103
|
+
useInternalDynamicEvents('userWalletsPopulated', (userWallets) => {
|
|
104
|
+
if (isBridgeFlow ||
|
|
105
|
+
userWallets.some((wallet) => wallet.connector.isEmbeddedWallet))
|
|
106
|
+
return;
|
|
107
|
+
if (getPrimaryWalletId())
|
|
108
|
+
return;
|
|
109
|
+
const firstWallet = userWallets[0];
|
|
110
|
+
if (!firstWallet)
|
|
111
|
+
return;
|
|
112
|
+
updatePrimaryWalletId(firstWallet.id);
|
|
113
|
+
});
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
export { useAutoselectPrimaryWallet };
|
|
@@ -20,6 +20,9 @@ const UserWalletsProvider = ({ children }) => {
|
|
|
20
20
|
// Use old state value if nothing changed to prevent unnecessary re-renders
|
|
21
21
|
if (updatedWallets.length === 0 && prevWallets.length === 0)
|
|
22
22
|
return prevWallets;
|
|
23
|
+
if (prevWallets.length === 0 && updatedWallets.length > 0) {
|
|
24
|
+
dynamicEvents.dynamicEvents.emit('userWalletsPopulated', updatedWallets);
|
|
25
|
+
}
|
|
23
26
|
prevUserWallets.current = prevWallets;
|
|
24
27
|
return updatedWallets;
|
|
25
28
|
});
|
|
@@ -16,6 +16,9 @@ const UserWalletsProvider = ({ children }) => {
|
|
|
16
16
|
// Use old state value if nothing changed to prevent unnecessary re-renders
|
|
17
17
|
if (updatedWallets.length === 0 && prevWallets.length === 0)
|
|
18
18
|
return prevWallets;
|
|
19
|
+
if (prevWallets.length === 0 && updatedWallets.length > 0) {
|
|
20
|
+
dynamicEvents.emit('userWalletsPopulated', updatedWallets);
|
|
21
|
+
}
|
|
19
22
|
prevUserWallets.current = prevWallets;
|
|
20
23
|
return updatedWallets;
|
|
21
24
|
});
|
|
@@ -33,4 +33,6 @@ export type WalletEvents = {
|
|
|
33
33
|
nonPrimaryWalletNetworkChanged: (newNetwork: string | number, connector: WalletConnector) => void;
|
|
34
34
|
/** Triggered when there is a change in user wallets */
|
|
35
35
|
userWalletsChanged: (params: UserWalletsChangedParams) => void;
|
|
36
|
+
/** Triggered when user wallets changes from an empty array to a non-empty array */
|
|
37
|
+
userWalletsPopulated: (userWallets: Wallet[]) => void;
|
|
36
38
|
};
|