@dynamic-labs/sdk-react-core 2.1.0-alpha.2 → 2.1.0-alpha.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.
- package/CHANGELOG.md +13 -0
- package/package.cjs +2 -2
- package/package.js +2 -2
- package/package.json +14 -14
- package/src/lib/Main.cjs +5 -0
- package/src/lib/Main.js +5 -0
- package/src/lib/components/Alert/Alert.cjs +2 -2
- package/src/lib/components/Alert/Alert.js +2 -2
- package/src/lib/components/Alert/Alert.types.d.ts +1 -0
- package/src/lib/components/EmailForm/EmailForm.cjs +1 -1
- package/src/lib/components/EmailForm/EmailForm.js +1 -1
- package/src/lib/components/PhoneNumberField/PhoneNumberField.cjs +1 -1
- package/src/lib/components/PhoneNumberField/PhoneNumberField.js +1 -1
- package/src/lib/components/RadioButton/RadioButton.cjs +14 -0
- package/src/lib/components/RadioButton/RadioButton.d.ts +5 -0
- package/src/lib/components/RadioButton/RadioButton.js +10 -0
- package/src/lib/components/RadioButton/index.d.ts +1 -0
- package/src/lib/components/UserProfile/parts/UserProfileField/UserProfileField.cjs +1 -1
- package/src/lib/components/UserProfile/parts/UserProfileField/UserProfileField.d.ts +2 -1
- package/src/lib/components/UserProfile/parts/UserProfileField/UserProfileField.js +1 -1
- package/src/lib/components/index.d.ts +1 -0
- package/src/lib/context/DynamicContext/DynamicContext.cjs +1 -0
- package/src/lib/context/DynamicContext/DynamicContext.js +1 -0
- package/src/lib/context/DynamicContext/hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.cjs +2 -2
- package/src/lib/context/DynamicContext/hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.js +2 -2
- package/src/lib/context/DynamicContext/useCustomerCallbacks/useCustomerCallbacks.cjs +5 -2
- package/src/lib/context/DynamicContext/useCustomerCallbacks/useCustomerCallbacks.js +5 -2
- package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.cjs +2 -1
- package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.d.ts +1 -1
- package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.js +2 -1
- package/src/lib/context/ViewContext/ViewContext.cjs +2 -2
- package/src/lib/context/ViewContext/ViewContext.js +2 -2
- package/src/lib/context/ViewContext/types/index.d.ts +7 -2
- package/src/lib/data/api/user/user.cjs +16 -0
- package/src/lib/data/api/user/user.js +16 -1
- package/src/lib/events/dynamicEvents.d.ts +1 -1
- package/src/lib/layout/DynamicAuthLayout/Header/header.cjs +6 -0
- package/src/lib/layout/DynamicAuthLayout/Header/header.js +6 -0
- package/src/lib/locale/en/translation.cjs +42 -1
- package/src/lib/locale/en/translation.d.ts +42 -1
- package/src/lib/locale/en/translation.js +42 -1
- package/src/lib/shared/types/dynamicEventsCallbacks.d.ts +2 -1
- package/src/lib/styles/index.shadow.cjs +1 -1
- package/src/lib/styles/index.shadow.js +1 -1
- package/src/lib/utils/hooks/index.d.ts +1 -0
- package/src/lib/utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.cjs +4 -1
- package/src/lib/utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.js +4 -1
- package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.cjs +1 -1
- package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.js +1 -1
- package/src/lib/utils/hooks/useDynamicLayoutData/useDynamicLayoutData.cjs +8 -0
- package/src/lib/utils/hooks/useDynamicLayoutData/useDynamicLayoutData.js +8 -0
- package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useCoinbaseMPC/useCoinbaseMPC.cjs +1 -1
- package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useCoinbaseMPC/useCoinbaseMPC.js +1 -1
- package/src/lib/utils/hooks/useMergeUserAccounts/index.d.ts +1 -0
- package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.cjs +99 -0
- package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.d.ts +4 -0
- package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.js +95 -0
- package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.cjs +5 -0
- package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.js +6 -1
- package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.cjs +2 -4
- package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.d.ts +2 -1
- package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.js +2 -4
- package/src/lib/views/CollectUserDataView/UserDataFields/UserField/UserField.cjs +3 -3
- package/src/lib/views/CollectUserDataView/UserDataFields/UserField/UserField.js +3 -3
- package/src/lib/views/CollectUserDataView/useFields.cjs +1 -0
- package/src/lib/views/CollectUserDataView/useFields.d.ts +2 -0
- package/src/lib/views/CollectUserDataView/useFields.js +1 -0
- package/src/lib/views/MergeUserAccountsConflictsView/MergeUserAccountsConflictsView.cjs +126 -0
- package/src/lib/views/MergeUserAccountsConflictsView/MergeUserAccountsConflictsView.d.ts +6 -0
- package/src/lib/views/MergeUserAccountsConflictsView/MergeUserAccountsConflictsView.js +122 -0
- package/src/lib/views/MergeUserAccountsConflictsView/index.d.ts +1 -0
- package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.cjs +123 -0
- package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.d.ts +4 -0
- package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.js +119 -0
- package/src/lib/views/MergeUserAccountsView/index.d.ts +1 -0
- package/src/lib/views/viewToComponentMap.cjs +4 -0
- package/src/lib/views/viewToComponentMap.d.ts +2 -0
- package/src/lib/views/viewToComponentMap.js +4 -0
|
@@ -165,7 +165,9 @@ const useAuthLayoutChecks = () => {
|
|
|
165
165
|
view.type === 'qr-code' ||
|
|
166
166
|
view.type === 'wallet-used' ||
|
|
167
167
|
view.type === 'email-wallet-otp-verification-view' ||
|
|
168
|
-
view.type === 'farcaster-connect-view'
|
|
168
|
+
view.type === 'farcaster-connect-view' ||
|
|
169
|
+
view.type === 'merge-user-accounts' ||
|
|
170
|
+
view.type === 'merge-user-accounts-conflicts');
|
|
169
171
|
const showCloseButton = view.type !== 'login-with-email-or-wallet-full-wallet-list' &&
|
|
170
172
|
view.type !== 'login-with-email-verification' &&
|
|
171
173
|
view.type !== 'login-with-sms-verification' &&
|
|
@@ -189,6 +191,7 @@ const useAuthLayoutChecks = () => {
|
|
|
189
191
|
view.type === 'passkey-intro' ||
|
|
190
192
|
view.type === 'qr-code' ||
|
|
191
193
|
view.type === 'farcaster-connect-view' ||
|
|
194
|
+
view.type === 'merge-user-accounts-conflicts' ||
|
|
192
195
|
(view.type === 'merge-user-accounts-with-same-email' && !user);
|
|
193
196
|
const showDefaultFooter = !showConnectedWalletProgress && !showDynamicFooter && !showToSFooter;
|
|
194
197
|
const shouldHideDynamicFooterSeparator = showDynamicFooter && showToSFooter;
|
|
@@ -161,7 +161,9 @@ const useAuthLayoutChecks = () => {
|
|
|
161
161
|
view.type === 'qr-code' ||
|
|
162
162
|
view.type === 'wallet-used' ||
|
|
163
163
|
view.type === 'email-wallet-otp-verification-view' ||
|
|
164
|
-
view.type === 'farcaster-connect-view'
|
|
164
|
+
view.type === 'farcaster-connect-view' ||
|
|
165
|
+
view.type === 'merge-user-accounts' ||
|
|
166
|
+
view.type === 'merge-user-accounts-conflicts');
|
|
165
167
|
const showCloseButton = view.type !== 'login-with-email-or-wallet-full-wallet-list' &&
|
|
166
168
|
view.type !== 'login-with-email-verification' &&
|
|
167
169
|
view.type !== 'login-with-sms-verification' &&
|
|
@@ -185,6 +187,7 @@ const useAuthLayoutChecks = () => {
|
|
|
185
187
|
view.type === 'passkey-intro' ||
|
|
186
188
|
view.type === 'qr-code' ||
|
|
187
189
|
view.type === 'farcaster-connect-view' ||
|
|
190
|
+
view.type === 'merge-user-accounts-conflicts' ||
|
|
188
191
|
(view.type === 'merge-user-accounts-with-same-email' && !user);
|
|
189
192
|
const showDefaultFooter = !showConnectedWalletProgress && !showDynamicFooter && !showToSFooter;
|
|
190
193
|
const shouldHideDynamicFooterSeparator = showDynamicFooter && showToSFooter;
|
|
@@ -132,7 +132,7 @@ const useCreateDynamicEmbeddedWalletMutation = () => {
|
|
|
132
132
|
}
|
|
133
133
|
setUser(updateJWTAndCreateUserProfile.updateJWTAndCreateUserProfile(signersResponse.jwt, signersResponse.minifiedJwt));
|
|
134
134
|
setShowAuthFlow(false, { performMultiWalletChecks: false });
|
|
135
|
-
dynamicEvents.dynamicEvents.emit('embeddedWalletCreated', passkeyWallet, turnkeyVerifiedCredentials);
|
|
135
|
+
dynamicEvents.dynamicEvents.emit('embeddedWalletCreated', passkeyWallet, turnkeyVerifiedCredentials, authToken);
|
|
136
136
|
}
|
|
137
137
|
catch (err) {
|
|
138
138
|
setError(err);
|
|
@@ -128,7 +128,7 @@ const useCreateDynamicEmbeddedWalletMutation = () => {
|
|
|
128
128
|
}
|
|
129
129
|
setUser(updateJWTAndCreateUserProfile(signersResponse.jwt, signersResponse.minifiedJwt));
|
|
130
130
|
setShowAuthFlow(false, { performMultiWalletChecks: false });
|
|
131
|
-
dynamicEvents.emit('embeddedWalletCreated', passkeyWallet, turnkeyVerifiedCredentials);
|
|
131
|
+
dynamicEvents.emit('embeddedWalletCreated', passkeyWallet, turnkeyVerifiedCredentials, authToken);
|
|
132
132
|
}
|
|
133
133
|
catch (err) {
|
|
134
134
|
setError(err);
|
|
@@ -97,6 +97,14 @@ const useDynamicLayoutData = ({ view, authMode, }) => {
|
|
|
97
97
|
copykey: 'dyn_login.title.wallet_only',
|
|
98
98
|
heading: t('dyn_login.title.wallet_only'),
|
|
99
99
|
},
|
|
100
|
+
'merge-user-accounts': {
|
|
101
|
+
copykey: 'dyn_merge_user_accounts.same_wallet.title',
|
|
102
|
+
heading: t('dyn_merge_user_accounts.same_wallet.title'),
|
|
103
|
+
},
|
|
104
|
+
'merge-user-accounts-conflicts': {
|
|
105
|
+
copykey: 'dyn_merge_user_accounts_conflicts.title',
|
|
106
|
+
heading: t('dyn_merge_user_accounts_conflicts.title'),
|
|
107
|
+
},
|
|
100
108
|
'mfa-choose-device': {
|
|
101
109
|
copykey: 'dyn_mfa.choose_device_view.title',
|
|
102
110
|
heading: t('dyn_mfa.choose_device_view.title'),
|
|
@@ -93,6 +93,14 @@ const useDynamicLayoutData = ({ view, authMode, }) => {
|
|
|
93
93
|
copykey: 'dyn_login.title.wallet_only',
|
|
94
94
|
heading: t('dyn_login.title.wallet_only'),
|
|
95
95
|
},
|
|
96
|
+
'merge-user-accounts': {
|
|
97
|
+
copykey: 'dyn_merge_user_accounts.same_wallet.title',
|
|
98
|
+
heading: t('dyn_merge_user_accounts.same_wallet.title'),
|
|
99
|
+
},
|
|
100
|
+
'merge-user-accounts-conflicts': {
|
|
101
|
+
copykey: 'dyn_merge_user_accounts_conflicts.title',
|
|
102
|
+
heading: t('dyn_merge_user_accounts_conflicts.title'),
|
|
103
|
+
},
|
|
96
104
|
'mfa-choose-device': {
|
|
97
105
|
copykey: 'dyn_mfa.choose_device_view.title',
|
|
98
106
|
heading: t('dyn_mfa.choose_device_view.title'),
|
package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useCoinbaseMPC/useCoinbaseMPC.cjs
CHANGED
|
@@ -162,7 +162,7 @@ const useCoinbaseMPC = () => {
|
|
|
162
162
|
connector,
|
|
163
163
|
id: jwtVerifiedCredential.id,
|
|
164
164
|
};
|
|
165
|
-
dynamicEvents.dynamicEvents.emit('embeddedWalletCreated', coinbaseMPCWallet, jwtVerifiedCredential);
|
|
165
|
+
dynamicEvents.dynamicEvents.emit('embeddedWalletCreated', coinbaseMPCWallet, jwtVerifiedCredential, jwt);
|
|
166
166
|
return coinbaseMPCWallet;
|
|
167
167
|
}
|
|
168
168
|
catch (error) {
|
package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useCoinbaseMPC/useCoinbaseMPC.js
CHANGED
|
@@ -158,7 +158,7 @@ const useCoinbaseMPC = () => {
|
|
|
158
158
|
connector,
|
|
159
159
|
id: jwtVerifiedCredential.id,
|
|
160
160
|
};
|
|
161
|
-
dynamicEvents.emit('embeddedWalletCreated', coinbaseMPCWallet, jwtVerifiedCredential);
|
|
161
|
+
dynamicEvents.emit('embeddedWalletCreated', coinbaseMPCWallet, jwtVerifiedCredential, jwt);
|
|
162
162
|
return coinbaseMPCWallet;
|
|
163
163
|
}
|
|
164
164
|
catch (error) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useMergeUserAccounts } from './useMergeUserAccounts';
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
6
|
+
var _tslib = require('../../../../../_virtual/_tslib.cjs');
|
|
7
|
+
require('@dynamic-labs/wallet-connector-core');
|
|
8
|
+
require('@dynamic-labs/sdk-api-core');
|
|
9
|
+
require('../../../shared/logger.cjs');
|
|
10
|
+
require('@dynamic-labs/iconic');
|
|
11
|
+
require('react/jsx-runtime');
|
|
12
|
+
require('../../../context/ViewContext/ViewContext.cjs');
|
|
13
|
+
require('react');
|
|
14
|
+
require('@dynamic-labs/wallet-book');
|
|
15
|
+
require('../../constants/colors.cjs');
|
|
16
|
+
require('../../constants/values.cjs');
|
|
17
|
+
require('../../../shared/utils/classes/storage/localStorage.cjs');
|
|
18
|
+
require('@dynamic-labs/utils');
|
|
19
|
+
require('../../../shared/consts/index.cjs');
|
|
20
|
+
require('@dynamic-labs/multi-wallet');
|
|
21
|
+
var getAuthToken = require('../../functions/getAuthToken/getAuthToken.cjs');
|
|
22
|
+
require('react-international-phone');
|
|
23
|
+
require('viem');
|
|
24
|
+
require('viem/chains');
|
|
25
|
+
require('../../../config/ApiEndpoint.cjs');
|
|
26
|
+
require('../../../locale/locale.cjs');
|
|
27
|
+
var user = require('../../../data/api/user/user.cjs');
|
|
28
|
+
var updateJWTAndCreateUserProfile = require('../../functions/updateJWTAndCreateUserProfile/updateJWTAndCreateUserProfile.cjs');
|
|
29
|
+
require('../../../context/DynamicContext/DynamicContext.cjs');
|
|
30
|
+
require('../../../events/dynamicEvents.cjs');
|
|
31
|
+
require('../../../context/CaptchaContext/CaptchaContext.cjs');
|
|
32
|
+
require('../../../context/ErrorContext/ErrorContext.cjs');
|
|
33
|
+
require('../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
|
|
34
|
+
require('../../../context/AccountExistsContext/AccountExistsContext.cjs');
|
|
35
|
+
var UserWalletsContext = require('../../../context/UserWalletsContext/UserWalletsContext.cjs');
|
|
36
|
+
require('../../../context/VerificationContext/VerificationContext.cjs');
|
|
37
|
+
require('react-dom');
|
|
38
|
+
require('../../../context/WalletContext/WalletContext.cjs');
|
|
39
|
+
require('../../../context/ThemeContext/ThemeContext.cjs');
|
|
40
|
+
require('@dynamic-labs/types');
|
|
41
|
+
require('yup');
|
|
42
|
+
require('../../../context/MockContext/MockContext.cjs');
|
|
43
|
+
require('react-i18next');
|
|
44
|
+
require('../../../context/FieldsStateContext/FieldsStateContext.cjs');
|
|
45
|
+
require('../useUserUpdateRequest/useUpdateUser/useUpdateUser.cjs');
|
|
46
|
+
require('../../../context/UserFieldEditorContext/UserFieldEditorContext.cjs');
|
|
47
|
+
require('@dynamic-labs/rpc-providers');
|
|
48
|
+
require('../../../components/Alert/Alert.cjs');
|
|
49
|
+
require('../../../components/ShadowDOM/ShadowDOM.cjs');
|
|
50
|
+
require('../../../components/IconButton/IconButton.cjs');
|
|
51
|
+
require('../../../components/InlineWidget/InlineWidget.cjs');
|
|
52
|
+
require('../../../components/Input/Input.cjs');
|
|
53
|
+
require('../../../components/IsBrowser/IsBrowser.cjs');
|
|
54
|
+
require('../../../components/MenuList/Dropdown/Dropdown.cjs');
|
|
55
|
+
require('../../../components/Transition/ZoomTransition/ZoomTransition.cjs');
|
|
56
|
+
require('../../../components/Transition/SlideInUpTransition/SlideInUpTransition.cjs');
|
|
57
|
+
require('../../../components/Transition/OpacityTransition/OpacityTransition.cjs');
|
|
58
|
+
require('../../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.cjs');
|
|
59
|
+
require('../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.cjs');
|
|
60
|
+
require('../../../components/Popper/Popper/Popper.cjs');
|
|
61
|
+
require('../../../components/Popper/PopperContext/PopperContext.cjs');
|
|
62
|
+
require('react-focus-lock');
|
|
63
|
+
require('qrcode');
|
|
64
|
+
require('formik');
|
|
65
|
+
require('../../../views/WalletList/WalletList.cjs');
|
|
66
|
+
require('../../../context/SocialRedirectContext/SocialRedirectContext.cjs');
|
|
67
|
+
require('../../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.cjs');
|
|
68
|
+
require('@hcaptcha/react-hcaptcha');
|
|
69
|
+
require('../../../context/LoadingContext/LoadingContext.cjs');
|
|
70
|
+
require('../../../context/FooterAnimationContext/index.cjs');
|
|
71
|
+
require('../../../views/LoginView/sections/PhoneNumberSignInSection/PhoneNumberSignInSection.cjs');
|
|
72
|
+
require('../../../context/WalletGroupContext/WalletGroupContext.cjs');
|
|
73
|
+
require('../../../context/PasskeyContext/PasskeyContext.cjs');
|
|
74
|
+
require('../../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.cjs');
|
|
75
|
+
require('../../../widgets/DynamicWidget/context/DynamicWidgetContext.cjs');
|
|
76
|
+
require('../../../views/TransactionConfirmationView/helpers/transactionErrorMessage.cjs');
|
|
77
|
+
require('../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
|
|
78
|
+
var useInternalDynamicContext = require('../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.cjs');
|
|
79
|
+
|
|
80
|
+
const useMergeUserAccounts = () => {
|
|
81
|
+
const { environmentId, setShowAuthFlow, setUser } = useInternalDynamicContext.useInternalDynamicContext();
|
|
82
|
+
const { addedWalletsIds } = UserWalletsContext.useInternalUserWallets();
|
|
83
|
+
const mergeUserAccounts = (mergeConflictResolutions) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
84
|
+
const authToken = getAuthToken.getAuthToken();
|
|
85
|
+
const response = yield user.verifyMergeUsers(authToken, environmentId, mergeConflictResolutions);
|
|
86
|
+
const userProfile = updateJWTAndCreateUserProfile.updateJWTAndCreateUserProfile(response === null || response === void 0 ? void 0 : response.jwt, response === null || response === void 0 ? void 0 : response.minifiedJwt);
|
|
87
|
+
setUser(userProfile);
|
|
88
|
+
const walletId = userProfile.lastVerifiedCredentialId;
|
|
89
|
+
if (walletId) {
|
|
90
|
+
addedWalletsIds.current.push(walletId);
|
|
91
|
+
}
|
|
92
|
+
setShowAuthFlow(false);
|
|
93
|
+
});
|
|
94
|
+
return {
|
|
95
|
+
mergeUserAccounts,
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
exports.useMergeUserAccounts = useMergeUserAccounts;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
import { __awaiter } from '../../../../../_virtual/_tslib.js';
|
|
3
|
+
import '@dynamic-labs/wallet-connector-core';
|
|
4
|
+
import '@dynamic-labs/sdk-api-core';
|
|
5
|
+
import '../../../shared/logger.js';
|
|
6
|
+
import '@dynamic-labs/iconic';
|
|
7
|
+
import 'react/jsx-runtime';
|
|
8
|
+
import '../../../context/ViewContext/ViewContext.js';
|
|
9
|
+
import 'react';
|
|
10
|
+
import '@dynamic-labs/wallet-book';
|
|
11
|
+
import '../../constants/colors.js';
|
|
12
|
+
import '../../constants/values.js';
|
|
13
|
+
import '../../../shared/utils/classes/storage/localStorage.js';
|
|
14
|
+
import '@dynamic-labs/utils';
|
|
15
|
+
import '../../../shared/consts/index.js';
|
|
16
|
+
import '@dynamic-labs/multi-wallet';
|
|
17
|
+
import { getAuthToken } from '../../functions/getAuthToken/getAuthToken.js';
|
|
18
|
+
import 'react-international-phone';
|
|
19
|
+
import 'viem';
|
|
20
|
+
import 'viem/chains';
|
|
21
|
+
import '../../../config/ApiEndpoint.js';
|
|
22
|
+
import '../../../locale/locale.js';
|
|
23
|
+
import { verifyMergeUsers } from '../../../data/api/user/user.js';
|
|
24
|
+
import { updateJWTAndCreateUserProfile } from '../../functions/updateJWTAndCreateUserProfile/updateJWTAndCreateUserProfile.js';
|
|
25
|
+
import '../../../context/DynamicContext/DynamicContext.js';
|
|
26
|
+
import '../../../events/dynamicEvents.js';
|
|
27
|
+
import '../../../context/CaptchaContext/CaptchaContext.js';
|
|
28
|
+
import '../../../context/ErrorContext/ErrorContext.js';
|
|
29
|
+
import '../../../context/AccessDeniedContext/AccessDeniedContext.js';
|
|
30
|
+
import '../../../context/AccountExistsContext/AccountExistsContext.js';
|
|
31
|
+
import { useInternalUserWallets } from '../../../context/UserWalletsContext/UserWalletsContext.js';
|
|
32
|
+
import '../../../context/VerificationContext/VerificationContext.js';
|
|
33
|
+
import 'react-dom';
|
|
34
|
+
import '../../../context/WalletContext/WalletContext.js';
|
|
35
|
+
import '../../../context/ThemeContext/ThemeContext.js';
|
|
36
|
+
import '@dynamic-labs/types';
|
|
37
|
+
import 'yup';
|
|
38
|
+
import '../../../context/MockContext/MockContext.js';
|
|
39
|
+
import 'react-i18next';
|
|
40
|
+
import '../../../context/FieldsStateContext/FieldsStateContext.js';
|
|
41
|
+
import '../useUserUpdateRequest/useUpdateUser/useUpdateUser.js';
|
|
42
|
+
import '../../../context/UserFieldEditorContext/UserFieldEditorContext.js';
|
|
43
|
+
import '@dynamic-labs/rpc-providers';
|
|
44
|
+
import '../../../components/Alert/Alert.js';
|
|
45
|
+
import '../../../components/ShadowDOM/ShadowDOM.js';
|
|
46
|
+
import '../../../components/IconButton/IconButton.js';
|
|
47
|
+
import '../../../components/InlineWidget/InlineWidget.js';
|
|
48
|
+
import '../../../components/Input/Input.js';
|
|
49
|
+
import '../../../components/IsBrowser/IsBrowser.js';
|
|
50
|
+
import '../../../components/MenuList/Dropdown/Dropdown.js';
|
|
51
|
+
import '../../../components/Transition/ZoomTransition/ZoomTransition.js';
|
|
52
|
+
import '../../../components/Transition/SlideInUpTransition/SlideInUpTransition.js';
|
|
53
|
+
import '../../../components/Transition/OpacityTransition/OpacityTransition.js';
|
|
54
|
+
import '../../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.js';
|
|
55
|
+
import '../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.js';
|
|
56
|
+
import '../../../components/Popper/Popper/Popper.js';
|
|
57
|
+
import '../../../components/Popper/PopperContext/PopperContext.js';
|
|
58
|
+
import 'react-focus-lock';
|
|
59
|
+
import 'qrcode';
|
|
60
|
+
import 'formik';
|
|
61
|
+
import '../../../views/WalletList/WalletList.js';
|
|
62
|
+
import '../../../context/SocialRedirectContext/SocialRedirectContext.js';
|
|
63
|
+
import '../../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.js';
|
|
64
|
+
import '@hcaptcha/react-hcaptcha';
|
|
65
|
+
import '../../../context/LoadingContext/LoadingContext.js';
|
|
66
|
+
import '../../../context/FooterAnimationContext/index.js';
|
|
67
|
+
import '../../../views/LoginView/sections/PhoneNumberSignInSection/PhoneNumberSignInSection.js';
|
|
68
|
+
import '../../../context/WalletGroupContext/WalletGroupContext.js';
|
|
69
|
+
import '../../../context/PasskeyContext/PasskeyContext.js';
|
|
70
|
+
import '../../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.js';
|
|
71
|
+
import '../../../widgets/DynamicWidget/context/DynamicWidgetContext.js';
|
|
72
|
+
import '../../../views/TransactionConfirmationView/helpers/transactionErrorMessage.js';
|
|
73
|
+
import '../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.js';
|
|
74
|
+
import { useInternalDynamicContext } from '../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.js';
|
|
75
|
+
|
|
76
|
+
const useMergeUserAccounts = () => {
|
|
77
|
+
const { environmentId, setShowAuthFlow, setUser } = useInternalDynamicContext();
|
|
78
|
+
const { addedWalletsIds } = useInternalUserWallets();
|
|
79
|
+
const mergeUserAccounts = (mergeConflictResolutions) => __awaiter(void 0, void 0, void 0, function* () {
|
|
80
|
+
const authToken = getAuthToken();
|
|
81
|
+
const response = yield verifyMergeUsers(authToken, environmentId, mergeConflictResolutions);
|
|
82
|
+
const userProfile = updateJWTAndCreateUserProfile(response === null || response === void 0 ? void 0 : response.jwt, response === null || response === void 0 ? void 0 : response.minifiedJwt);
|
|
83
|
+
setUser(userProfile);
|
|
84
|
+
const walletId = userProfile.lastVerifiedCredentialId;
|
|
85
|
+
if (walletId) {
|
|
86
|
+
addedWalletsIds.current.push(walletId);
|
|
87
|
+
}
|
|
88
|
+
setShowAuthFlow(false);
|
|
89
|
+
});
|
|
90
|
+
return {
|
|
91
|
+
mergeUserAccounts,
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
export { useMergeUserAccounts };
|
|
@@ -177,6 +177,11 @@ const useVerifyWallet = ({ consumeNonce, displaySiweStatement, environmentId, pr
|
|
|
177
177
|
handleDisconnectWallet({ endSession: false, walletConnector });
|
|
178
178
|
return handleWalletUsedError(e);
|
|
179
179
|
}
|
|
180
|
+
if (e instanceof utils.MergeAccountsConfirmationError) {
|
|
181
|
+
setView('merge-user-accounts', Object.assign({}, e));
|
|
182
|
+
setShowAuthFlow(true);
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
180
185
|
if (e instanceof utils.ChainalysisError) {
|
|
181
186
|
handleDisconnectWallet({ walletConnector });
|
|
182
187
|
setDeniedAddress(address);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
import { __awaiter } from '../../../../../_virtual/_tslib.js';
|
|
3
|
-
import { DynamicError, WalletUsedError, ChainalysisError, GateBlockedError, NoAccessError, AccountExistsError } from '@dynamic-labs/utils';
|
|
3
|
+
import { DynamicError, WalletUsedError, MergeAccountsConfirmationError, ChainalysisError, GateBlockedError, NoAccessError, AccountExistsError } from '@dynamic-labs/utils';
|
|
4
4
|
import { isSocialWalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
5
5
|
import 'react';
|
|
6
6
|
import '../../../events/dynamicEvents.js';
|
|
@@ -173,6 +173,11 @@ const useVerifyWallet = ({ consumeNonce, displaySiweStatement, environmentId, pr
|
|
|
173
173
|
handleDisconnectWallet({ endSession: false, walletConnector });
|
|
174
174
|
return handleWalletUsedError(e);
|
|
175
175
|
}
|
|
176
|
+
if (e instanceof MergeAccountsConfirmationError) {
|
|
177
|
+
setView('merge-user-accounts', Object.assign({}, e));
|
|
178
|
+
setShowAuthFlow(true);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
176
181
|
if (e instanceof ChainalysisError) {
|
|
177
182
|
handleDisconnectWallet({ walletConnector });
|
|
178
183
|
setDeniedAddress(address);
|
|
@@ -20,7 +20,7 @@ require('../../../shared/consts/index.cjs');
|
|
|
20
20
|
require('../../../events/dynamicEvents.cjs');
|
|
21
21
|
var useWalletConnectorEvent = require('../events/useWalletConnectorEvent/useWalletConnectorEvent.cjs');
|
|
22
22
|
|
|
23
|
-
const useWalletEventListeners = ({ handleLogOut, multiWallet, multiWalletWidgetState, primaryWallet, secondaryWallets, selectedWalletConnector, selectedWalletWithAction, setSelectedWalletConnectorKey, setSelectedWalletWithAction, setMultiWalletWidgetState, user, setPrimaryWalletId, authMode, refreshConnectedWallet, }) => {
|
|
23
|
+
const useWalletEventListeners = ({ disconnectWallet, handleLogOut, multiWallet, multiWalletWidgetState, primaryWallet, secondaryWallets, selectedWalletConnector, selectedWalletWithAction, setSelectedWalletConnectorKey, setSelectedWalletWithAction, setMultiWalletWidgetState, user, setPrimaryWalletId, authMode, refreshConnectedWallet, }) => {
|
|
24
24
|
useWalletConnectorEvent.useWalletConnectorEvent(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, 'disconnect', () => {
|
|
25
25
|
logger.logger.debug('primary wallet disconnect');
|
|
26
26
|
handleLogOut();
|
|
@@ -109,13 +109,11 @@ const useWalletEventListeners = ({ handleLogOut, multiWallet, multiWalletWidgetS
|
|
|
109
109
|
}));
|
|
110
110
|
useWalletConnectorEvent.useWalletConnectorEvent(uniqueNonPrimaryWallets, 'disconnect', (affectedConnector) => {
|
|
111
111
|
logger.logger.debug('secondary wallet disconnect');
|
|
112
|
-
// argent sends a disconnect event when the user adds a new account
|
|
113
112
|
if (authMode === 'connect-only') {
|
|
114
113
|
// Get all wallets with this connector
|
|
115
114
|
const affectedWallets = secondaryWallets.filter(({ connector }) => connector.key === affectedConnector.key);
|
|
116
115
|
for (const wallet of affectedWallets) {
|
|
117
|
-
|
|
118
|
-
refreshConnectedWallet(wallet.id, wallet.connector);
|
|
116
|
+
disconnectWallet(wallet.id);
|
|
119
117
|
}
|
|
120
118
|
}
|
|
121
119
|
});
|
|
@@ -4,6 +4,7 @@ import { IDynamicContext } from '../../../context/DynamicContext/types';
|
|
|
4
4
|
import { AuthModeType, MultiWalletWidgetState, Wallet, WalletWithAction } from '../../../shared';
|
|
5
5
|
import { MultiWalletWidgetStateSetter } from '../multiWallet';
|
|
6
6
|
export type UseWalletEventListenersArgs = {
|
|
7
|
+
disconnectWallet: (walletId: string) => Promise<void>;
|
|
7
8
|
handleLogOut(): Promise<void>;
|
|
8
9
|
multiWallet: boolean;
|
|
9
10
|
multiWalletWidgetState: MultiWalletWidgetState;
|
|
@@ -19,4 +20,4 @@ export type UseWalletEventListenersArgs = {
|
|
|
19
20
|
authMode: AuthModeType;
|
|
20
21
|
refreshConnectedWallet: (walletId: string, walletConnector: WalletConnector, shouldCallCallback?: boolean) => Promise<void>;
|
|
21
22
|
};
|
|
22
|
-
export declare const useWalletEventListeners: ({ handleLogOut, multiWallet, multiWalletWidgetState, primaryWallet, secondaryWallets, selectedWalletConnector, selectedWalletWithAction, setSelectedWalletConnectorKey, setSelectedWalletWithAction, setMultiWalletWidgetState, user, setPrimaryWalletId, authMode, refreshConnectedWallet, }: UseWalletEventListenersArgs) => void;
|
|
23
|
+
export declare const useWalletEventListeners: ({ disconnectWallet, handleLogOut, multiWallet, multiWalletWidgetState, primaryWallet, secondaryWallets, selectedWalletConnector, selectedWalletWithAction, setSelectedWalletConnectorKey, setSelectedWalletWithAction, setMultiWalletWidgetState, user, setPrimaryWalletId, authMode, refreshConnectedWallet, }: UseWalletEventListenersArgs) => void;
|
|
@@ -16,7 +16,7 @@ import '../../../shared/consts/index.js';
|
|
|
16
16
|
import '../../../events/dynamicEvents.js';
|
|
17
17
|
import { useWalletConnectorEvent } from '../events/useWalletConnectorEvent/useWalletConnectorEvent.js';
|
|
18
18
|
|
|
19
|
-
const useWalletEventListeners = ({ handleLogOut, multiWallet, multiWalletWidgetState, primaryWallet, secondaryWallets, selectedWalletConnector, selectedWalletWithAction, setSelectedWalletConnectorKey, setSelectedWalletWithAction, setMultiWalletWidgetState, user, setPrimaryWalletId, authMode, refreshConnectedWallet, }) => {
|
|
19
|
+
const useWalletEventListeners = ({ disconnectWallet, handleLogOut, multiWallet, multiWalletWidgetState, primaryWallet, secondaryWallets, selectedWalletConnector, selectedWalletWithAction, setSelectedWalletConnectorKey, setSelectedWalletWithAction, setMultiWalletWidgetState, user, setPrimaryWalletId, authMode, refreshConnectedWallet, }) => {
|
|
20
20
|
useWalletConnectorEvent(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, 'disconnect', () => {
|
|
21
21
|
logger.debug('primary wallet disconnect');
|
|
22
22
|
handleLogOut();
|
|
@@ -105,13 +105,11 @@ const useWalletEventListeners = ({ handleLogOut, multiWallet, multiWalletWidgetS
|
|
|
105
105
|
}));
|
|
106
106
|
useWalletConnectorEvent(uniqueNonPrimaryWallets, 'disconnect', (affectedConnector) => {
|
|
107
107
|
logger.debug('secondary wallet disconnect');
|
|
108
|
-
// argent sends a disconnect event when the user adds a new account
|
|
109
108
|
if (authMode === 'connect-only') {
|
|
110
109
|
// Get all wallets with this connector
|
|
111
110
|
const affectedWallets = secondaryWallets.filter(({ connector }) => connector.key === affectedConnector.key);
|
|
112
111
|
for (const wallet of affectedWallets) {
|
|
113
|
-
|
|
114
|
-
refreshConnectedWallet(wallet.id, wallet.connector);
|
|
112
|
+
disconnectWallet(wallet.id);
|
|
115
113
|
}
|
|
116
114
|
}
|
|
117
115
|
});
|
|
@@ -78,7 +78,7 @@ require('@hcaptcha/react-hcaptcha');
|
|
|
78
78
|
require('../../../LoginView/sections/PhoneNumberSignInSection/PhoneNumberSignInSection.cjs');
|
|
79
79
|
var Select = require('../../../../components/Select/Select.cjs');
|
|
80
80
|
|
|
81
|
-
const UserField = ({ fieldData: { key, label, type }, fieldSettings: { enabled, name, required, verify }, errors, touched, disabled, policiesConsentInnerComponentArray, }) => {
|
|
81
|
+
const UserField = ({ fieldData: { key, label, type, autoComplete }, fieldSettings: { enabled, name, required, verify }, errors, touched, disabled, policiesConsentInnerComponentArray, }) => {
|
|
82
82
|
if (name === 'tShirtSize') {
|
|
83
83
|
return (jsxRuntime.jsx(formik.Field, { copykey: key, as: Select.Select, type: type, id: name, name: name, label: label, error: errors[name] && touched[name], selectDataTestId: 'tShirtSizeSelect', message: touched[name] && getDisplayErrorMessage.getDisplayErrorMessage(label, errors[name]), disabled: disabled, children: index.tShirtSizes.map((size) => (jsxRuntime.jsx("option", { value: size, children: size }, size))) }, name));
|
|
84
84
|
}
|
|
@@ -94,10 +94,10 @@ const UserField = ({ fieldData: { key, label, type }, fieldSettings: { enabled,
|
|
|
94
94
|
else if (name === 'phoneNumber') {
|
|
95
95
|
return (jsxRuntime.jsx(formik.Field, { name: name, as: UserPhoneField.UserPhoneField, disabled: disabled, label: label, required: required, error: touched[name] && errors[name]
|
|
96
96
|
? getDisplayErrorMessage.getDisplayErrorMessage(label, errors[name])
|
|
97
|
-
: undefined, verify: verify }, name));
|
|
97
|
+
: undefined, verify: verify, autoComplete: autoComplete }, name));
|
|
98
98
|
}
|
|
99
99
|
else {
|
|
100
|
-
return (jsxRuntime.jsx(formik.Field, { copykey: key, disabled: disabled, as: Input.Input, type: type, id: name, name: name, label: label, optional: enabled && !required, error: errors[name] && touched[name], message: touched[name] && getDisplayErrorMessage.getDisplayErrorMessage(label, errors[name]) }, name));
|
|
100
|
+
return (jsxRuntime.jsx(formik.Field, { copykey: key, disabled: disabled, as: Input.Input, type: type, id: name, name: name, label: label, optional: enabled && !required, error: errors[name] && touched[name], message: touched[name] && getDisplayErrorMessage.getDisplayErrorMessage(label, errors[name]), autoComplete: autoComplete }, name));
|
|
101
101
|
}
|
|
102
102
|
};
|
|
103
103
|
|
|
@@ -74,7 +74,7 @@ import '@hcaptcha/react-hcaptcha';
|
|
|
74
74
|
import '../../../LoginView/sections/PhoneNumberSignInSection/PhoneNumberSignInSection.js';
|
|
75
75
|
import { Select } from '../../../../components/Select/Select.js';
|
|
76
76
|
|
|
77
|
-
const UserField = ({ fieldData: { key, label, type }, fieldSettings: { enabled, name, required, verify }, errors, touched, disabled, policiesConsentInnerComponentArray, }) => {
|
|
77
|
+
const UserField = ({ fieldData: { key, label, type, autoComplete }, fieldSettings: { enabled, name, required, verify }, errors, touched, disabled, policiesConsentInnerComponentArray, }) => {
|
|
78
78
|
if (name === 'tShirtSize') {
|
|
79
79
|
return (jsx(Field, { copykey: key, as: Select, type: type, id: name, name: name, label: label, error: errors[name] && touched[name], selectDataTestId: 'tShirtSizeSelect', message: touched[name] && getDisplayErrorMessage(label, errors[name]), disabled: disabled, children: tShirtSizes.map((size) => (jsx("option", { value: size, children: size }, size))) }, name));
|
|
80
80
|
}
|
|
@@ -90,10 +90,10 @@ const UserField = ({ fieldData: { key, label, type }, fieldSettings: { enabled,
|
|
|
90
90
|
else if (name === 'phoneNumber') {
|
|
91
91
|
return (jsx(Field, { name: name, as: UserPhoneField, disabled: disabled, label: label, required: required, error: touched[name] && errors[name]
|
|
92
92
|
? getDisplayErrorMessage(label, errors[name])
|
|
93
|
-
: undefined, verify: verify }, name));
|
|
93
|
+
: undefined, verify: verify, autoComplete: autoComplete }, name));
|
|
94
94
|
}
|
|
95
95
|
else {
|
|
96
|
-
return (jsx(Field, { copykey: key, disabled: disabled, as: Input, type: type, id: name, name: name, label: label, optional: enabled && !required, error: errors[name] && touched[name], message: touched[name] && getDisplayErrorMessage(label, errors[name]) }, name));
|
|
96
|
+
return (jsx(Field, { copykey: key, disabled: disabled, as: Input, type: type, id: name, name: name, label: label, optional: enabled && !required, error: errors[name] && touched[name], message: touched[name] && getDisplayErrorMessage(label, errors[name]), autoComplete: autoComplete }, name));
|
|
97
97
|
}
|
|
98
98
|
};
|
|
99
99
|
|
|
@@ -46,6 +46,7 @@ const useFields = () => {
|
|
|
46
46
|
validation: yup.string().oneOf(index.countryCodes.map((c) => c.code)),
|
|
47
47
|
},
|
|
48
48
|
email: {
|
|
49
|
+
autoComplete: 'email',
|
|
49
50
|
key: 'dyn_collect_user_data.fields.email.label',
|
|
50
51
|
label: t('dyn_collect_user_data.fields.email.label'),
|
|
51
52
|
type: 'email',
|
|
@@ -4,6 +4,7 @@ export type FieldConfig = {
|
|
|
4
4
|
key: string;
|
|
5
5
|
type: string;
|
|
6
6
|
validation: StringSchema | BooleanSchema;
|
|
7
|
+
autoComplete?: string;
|
|
7
8
|
};
|
|
8
9
|
export declare const useFields: () => {
|
|
9
10
|
fieldsConfig: {
|
|
@@ -20,6 +21,7 @@ export declare const useFields: () => {
|
|
|
20
21
|
validation: StringSchema<string | undefined, import("yup/lib/types").AnyObject, string | undefined>;
|
|
21
22
|
};
|
|
22
23
|
email: {
|
|
24
|
+
autoComplete: string;
|
|
23
25
|
key: string;
|
|
24
26
|
label: string;
|
|
25
27
|
type: string;
|