@dynamic-labs/sdk-react-core 2.2.1 → 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.
- package/CHANGELOG.md +18 -1
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +13 -13
- package/src/lib/Main.cjs +1 -0
- package/src/lib/Main.js +1 -0
- package/src/lib/context/DynamicContext/DynamicContext.cjs +2 -1
- package/src/lib/context/DynamicContext/DynamicContext.js +2 -1
- package/src/lib/context/DynamicContext/hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.cjs +16 -6
- package/src/lib/context/DynamicContext/hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.js +16 -6
- package/src/lib/context/WidgetRegistry/WidgetRegistryContextProvider.cjs +77 -0
- package/src/lib/context/WidgetRegistry/WidgetRegistryContextProvider.d.ts +6 -0
- package/src/lib/context/WidgetRegistry/WidgetRegistryContextProvider.js +71 -0
- package/src/lib/context/WidgetRegistry/index.d.ts +1 -0
- package/src/lib/data/api/wallets/wallets.cjs +2 -1
- package/src/lib/data/api/wallets/wallets.d.ts +2 -1
- package/src/lib/data/api/wallets/wallets.js +2 -1
- package/src/lib/events/dynamicEvents.d.ts +2 -1
- package/src/lib/events/multiWallet.d.ts +5 -0
- package/src/lib/shared/types/dynamicEventsCallbacks.d.ts +5 -1
- package/src/lib/shared/utils/functions/isUserLinkingWallet/isUserLinkingWallet.d.ts +2 -0
- package/src/lib/styles/index.shadow.cjs +1 -1
- package/src/lib/styles/index.shadow.js +1 -1
- package/src/lib/utils/functions/index.d.ts +1 -0
- package/src/lib/utils/functions/isPhoneNumberProviderEnabled/index.d.ts +1 -0
- package/src/lib/utils/functions/logVerboseTroubleshootingMessage/index.d.ts +1 -0
- package/src/lib/utils/functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.cjs +27 -0
- package/src/lib/utils/functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.d.ts +1 -0
- package/src/lib/utils/functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.js +23 -0
- package/src/lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.d.ts +1 -1
- package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.cjs +3 -1
- package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.js +3 -1
- package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.cjs +6 -2
- package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.js +6 -2
- package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.cjs +2 -2
- package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.js +2 -2
- package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.cjs +7 -6
- package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.js +7 -6
- package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.cjs +44 -27
- package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.js +45 -28
- package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.cjs +4 -14
- package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.js +5 -15
- package/src/lib/widgets/DynamicMultiWalletPromptsWidget/DynamicMultiWalletPromptsWidget.cjs +5 -5
- package/src/lib/widgets/DynamicMultiWalletPromptsWidget/DynamicMultiWalletPromptsWidget.js +5 -5
- package/src/lib/widgets/DynamicWidget/components/DynamicUserProfile/DynamicUserProfile.cjs +4 -1
- package/src/lib/widgets/DynamicWidget/components/DynamicUserProfile/DynamicUserProfile.js +4 -1
- package/src/lib/widgets/DynamicWidget/prompts/PrimaryNotConnectedModal/PrimaryNotConnectedModal.cjs +1 -1
- package/src/lib/widgets/DynamicWidget/prompts/PrimaryNotConnectedModal/PrimaryNotConnectedModal.js +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './isPhoneNumberProviderEnabled';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './logVerboseTroubleshootingMessage';
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
6
|
+
require('@dynamic-labs/sdk-api-core');
|
|
7
|
+
var logger = require('../../../shared/logger.cjs');
|
|
8
|
+
require('@dynamic-labs/iconic');
|
|
9
|
+
require('@dynamic-labs/wallet-connector-core');
|
|
10
|
+
require('react/jsx-runtime');
|
|
11
|
+
require('../../../context/ViewContext/ViewContext.cjs');
|
|
12
|
+
require('react');
|
|
13
|
+
require('@dynamic-labs/wallet-book');
|
|
14
|
+
require('../../constants/colors.cjs');
|
|
15
|
+
require('../../constants/values.cjs');
|
|
16
|
+
require('../../../shared/utils/classes/storage/localStorage.cjs');
|
|
17
|
+
require('@dynamic-labs/utils');
|
|
18
|
+
require('../../../shared/consts/index.cjs');
|
|
19
|
+
|
|
20
|
+
// use this in conjuction with dynamic_enableTroubleshootMode to see
|
|
21
|
+
// more verbose logging to help troubleshoot issues
|
|
22
|
+
// i.e: window.dynamic_enableTroubleshootMode = true
|
|
23
|
+
const logVerboseTroubleshootingMessage = (message, ...args) => {
|
|
24
|
+
logger.logger.log(-1, message, ...args);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
exports.logVerboseTroubleshootingMessage = logVerboseTroubleshootingMessage;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const logVerboseTroubleshootingMessage: (message: string | Error | unknown, ...args: any[]) => void;
|
package/src/lib/utils/functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
import '@dynamic-labs/sdk-api-core';
|
|
3
|
+
import { logger } from '../../../shared/logger.js';
|
|
4
|
+
import '@dynamic-labs/iconic';
|
|
5
|
+
import '@dynamic-labs/wallet-connector-core';
|
|
6
|
+
import 'react/jsx-runtime';
|
|
7
|
+
import '../../../context/ViewContext/ViewContext.js';
|
|
8
|
+
import 'react';
|
|
9
|
+
import '@dynamic-labs/wallet-book';
|
|
10
|
+
import '../../constants/colors.js';
|
|
11
|
+
import '../../constants/values.js';
|
|
12
|
+
import '../../../shared/utils/classes/storage/localStorage.js';
|
|
13
|
+
import '@dynamic-labs/utils';
|
|
14
|
+
import '../../../shared/consts/index.js';
|
|
15
|
+
|
|
16
|
+
// use this in conjuction with dynamic_enableTroubleshootMode to see
|
|
17
|
+
// more verbose logging to help troubleshoot issues
|
|
18
|
+
// i.e: window.dynamic_enableTroubleshootMode = true
|
|
19
|
+
const logVerboseTroubleshootingMessage = (message, ...args) => {
|
|
20
|
+
logger.log(-1, message, ...args);
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export { logVerboseTroubleshootingMessage };
|
|
@@ -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 {
|
|
@@ -107,7 +107,7 @@ const useSocialAccounts = ({ sessionTimeout } = {
|
|
|
107
107
|
}, [user === null || user === void 0 ? void 0 : user.verifiedCredentials]);
|
|
108
108
|
const checkValidOAuthLinking = React.useCallback((provider) => {
|
|
109
109
|
if (!isSocialKycEnabled.isSocialKycEnabled(projectSettings)) {
|
|
110
|
-
handleError(provider, types.SocialOAuthErrorCode.SOCIAL_LINKING_NOT_ENABLED, 'Social linking is not enabled on the dashboard', { raiseAuthFailure: false });
|
|
110
|
+
handleError(provider, types.SocialOAuthErrorCode.SOCIAL_LINKING_NOT_ENABLED, 'Social linking is not enabled in Information Capture on the dashboard', { raiseAuthFailure: false });
|
|
111
111
|
return false;
|
|
112
112
|
}
|
|
113
113
|
const verifiedCredential = verifiedOAuthCredentialsMap[provider];
|
|
@@ -118,7 +118,7 @@ const useSocialAccounts = ({ sessionTimeout } = {
|
|
|
118
118
|
const oauthProviders = index.getEnabledOAuthProviders(projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers);
|
|
119
119
|
const oauthProvider = oauthProviders.find((p) => p.provider === provider);
|
|
120
120
|
if (!oauthProvider) {
|
|
121
|
-
handleError(provider, types.SocialOAuthErrorCode.PROVIDER_NOT_ENABLED, `
|
|
121
|
+
handleError(provider, types.SocialOAuthErrorCode.PROVIDER_NOT_ENABLED, `Social linking provider is not enabled in Information Capture on the dashboard: ${provider}`, { raiseAuthFailure: false });
|
|
122
122
|
return false;
|
|
123
123
|
}
|
|
124
124
|
return true;
|
|
@@ -103,7 +103,7 @@ const useSocialAccounts = ({ sessionTimeout } = {
|
|
|
103
103
|
}, [user === null || user === void 0 ? void 0 : user.verifiedCredentials]);
|
|
104
104
|
const checkValidOAuthLinking = useCallback((provider) => {
|
|
105
105
|
if (!isSocialKycEnabled(projectSettings)) {
|
|
106
|
-
handleError(provider, SocialOAuthErrorCode.SOCIAL_LINKING_NOT_ENABLED, 'Social linking is not enabled on the dashboard', { raiseAuthFailure: false });
|
|
106
|
+
handleError(provider, SocialOAuthErrorCode.SOCIAL_LINKING_NOT_ENABLED, 'Social linking is not enabled in Information Capture on the dashboard', { raiseAuthFailure: false });
|
|
107
107
|
return false;
|
|
108
108
|
}
|
|
109
109
|
const verifiedCredential = verifiedOAuthCredentialsMap[provider];
|
|
@@ -114,7 +114,7 @@ const useSocialAccounts = ({ sessionTimeout } = {
|
|
|
114
114
|
const oauthProviders = getEnabledOAuthProviders(projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers);
|
|
115
115
|
const oauthProvider = oauthProviders.find((p) => p.provider === provider);
|
|
116
116
|
if (!oauthProvider) {
|
|
117
|
-
handleError(provider, SocialOAuthErrorCode.PROVIDER_NOT_ENABLED, `
|
|
117
|
+
handleError(provider, SocialOAuthErrorCode.PROVIDER_NOT_ENABLED, `Social linking provider is not enabled in Information Capture on the dashboard: ${provider}`, { raiseAuthFailure: false });
|
|
118
118
|
return false;
|
|
119
119
|
}
|
|
120
120
|
return true;
|
|
@@ -26,6 +26,7 @@ require('viem/chains');
|
|
|
26
26
|
require('../../../config/ApiEndpoint.cjs');
|
|
27
27
|
require('@dynamic-labs/store');
|
|
28
28
|
require('../../../locale/locale.cjs');
|
|
29
|
+
var logVerboseTroubleshootingMessage = require('../../functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.cjs');
|
|
29
30
|
var useWalletsConnectionState = require('../useWalletsConnectionState/useWalletsConnectionState.cjs');
|
|
30
31
|
var reconnectSocialWallet = require('./reconnectSocialWallet.cjs');
|
|
31
32
|
var createLinkedWalletsFromWalletOptions = require('./utils/createLinkedWalletsFromWalletOptions/createLinkedWalletsFromWalletOptions.cjs');
|
|
@@ -43,6 +44,7 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
|
|
|
43
44
|
walletConnectorOptions,
|
|
44
45
|
});
|
|
45
46
|
}, [user, primaryWalletId, walletConnectorOptions]);
|
|
47
|
+
logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('linkedWallets', linkedWallets);
|
|
46
48
|
const walletsBasedOnAuthMode = React.useMemo(() => {
|
|
47
49
|
// Before signing the first message we are using connected wallets list
|
|
48
50
|
// This is because we want the first connected wallet to have events applied by useWalletEventListeners
|
|
@@ -62,6 +64,7 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
|
|
|
62
64
|
}
|
|
63
65
|
return connectedWallets !== null && connectedWallets !== void 0 ? connectedWallets : [];
|
|
64
66
|
}, [authMode, connectedWallets, linkedWallets, user]);
|
|
67
|
+
logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('walletsBasedOnAuthMode', walletsBasedOnAuthMode);
|
|
65
68
|
/**
|
|
66
69
|
* This useEffect is temporary.
|
|
67
70
|
* While the wallet connectors don't use the event emitter, we need to manually
|
|
@@ -74,16 +77,14 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
|
|
|
74
77
|
}), [walletsBasedOnAuthMode]);
|
|
75
78
|
const { connectedWalletsMap, didConnectedStateLoad } = useWalletsConnectionState.useWalletsConnectionState(walletsBasedOnAuthMode);
|
|
76
79
|
const wallets = React.useMemo(() => walletsBasedOnAuthMode.map((wallet) => (Object.assign(Object.assign({}, wallet), { connected: Boolean(connectedWalletsMap[getWalletIdentifier.getWalletIdentifier(wallet)]) }))), [connectedWalletsMap, walletsBasedOnAuthMode]);
|
|
80
|
+
logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('wallets', wallets);
|
|
81
|
+
logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('didConnectedStateLoad', didConnectedStateLoad);
|
|
77
82
|
const { setUserWallets } = UserWalletsContext.useInternalUserWallets();
|
|
78
83
|
// Keep userWallets in sync whenever linkedWallets changes
|
|
79
84
|
React.useEffect(() => {
|
|
80
|
-
|
|
81
|
-
// but that doesn't matter if the wallets list is empty, and if we return early when
|
|
82
|
-
// the wallets list is empty, we'll never set the user wallets correctly after logout
|
|
83
|
-
if (!didConnectedStateLoad.current && wallets.length)
|
|
84
|
-
return;
|
|
85
|
+
logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('[useWalletConnectors] will call setUserWallets', wallets);
|
|
85
86
|
setUserWallets((userWallets) => updateUserWalletsFromLinkedWallets.updateUserWalletsFromLinkedWallets(userWallets, wallets));
|
|
86
|
-
}, [
|
|
87
|
+
}, [setUserWallets, wallets]);
|
|
87
88
|
const primaryWallet = React.useMemo(() => { var _a; return (_a = wallets.find((wallet) => wallet.id === primaryWalletId)) !== null && _a !== void 0 ? _a : null; }, [primaryWalletId, wallets]);
|
|
88
89
|
const secondaryWallets = React.useMemo(() => canHaveMultipleWalletsConnected
|
|
89
90
|
? wallets.filter((wallet) => wallet.id !== primaryWalletId)
|
|
@@ -22,6 +22,7 @@ import 'viem/chains';
|
|
|
22
22
|
import '../../../config/ApiEndpoint.js';
|
|
23
23
|
import '@dynamic-labs/store';
|
|
24
24
|
import '../../../locale/locale.js';
|
|
25
|
+
import { logVerboseTroubleshootingMessage } from '../../functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.js';
|
|
25
26
|
import { useWalletsConnectionState } from '../useWalletsConnectionState/useWalletsConnectionState.js';
|
|
26
27
|
import { reconnectSocialWallet } from './reconnectSocialWallet.js';
|
|
27
28
|
import { createLinkedWalletsFromWalletOptions } from './utils/createLinkedWalletsFromWalletOptions/createLinkedWalletsFromWalletOptions.js';
|
|
@@ -39,6 +40,7 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
|
|
|
39
40
|
walletConnectorOptions,
|
|
40
41
|
});
|
|
41
42
|
}, [user, primaryWalletId, walletConnectorOptions]);
|
|
43
|
+
logVerboseTroubleshootingMessage('linkedWallets', linkedWallets);
|
|
42
44
|
const walletsBasedOnAuthMode = useMemo(() => {
|
|
43
45
|
// Before signing the first message we are using connected wallets list
|
|
44
46
|
// This is because we want the first connected wallet to have events applied by useWalletEventListeners
|
|
@@ -58,6 +60,7 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
|
|
|
58
60
|
}
|
|
59
61
|
return connectedWallets !== null && connectedWallets !== void 0 ? connectedWallets : [];
|
|
60
62
|
}, [authMode, connectedWallets, linkedWallets, user]);
|
|
63
|
+
logVerboseTroubleshootingMessage('walletsBasedOnAuthMode', walletsBasedOnAuthMode);
|
|
61
64
|
/**
|
|
62
65
|
* This useEffect is temporary.
|
|
63
66
|
* While the wallet connectors don't use the event emitter, we need to manually
|
|
@@ -70,16 +73,14 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
|
|
|
70
73
|
}), [walletsBasedOnAuthMode]);
|
|
71
74
|
const { connectedWalletsMap, didConnectedStateLoad } = useWalletsConnectionState(walletsBasedOnAuthMode);
|
|
72
75
|
const wallets = useMemo(() => walletsBasedOnAuthMode.map((wallet) => (Object.assign(Object.assign({}, wallet), { connected: Boolean(connectedWalletsMap[getWalletIdentifier(wallet)]) }))), [connectedWalletsMap, walletsBasedOnAuthMode]);
|
|
76
|
+
logVerboseTroubleshootingMessage('wallets', wallets);
|
|
77
|
+
logVerboseTroubleshootingMessage('didConnectedStateLoad', didConnectedStateLoad);
|
|
73
78
|
const { setUserWallets } = useInternalUserWallets();
|
|
74
79
|
// Keep userWallets in sync whenever linkedWallets changes
|
|
75
80
|
useEffect(() => {
|
|
76
|
-
|
|
77
|
-
// but that doesn't matter if the wallets list is empty, and if we return early when
|
|
78
|
-
// the wallets list is empty, we'll never set the user wallets correctly after logout
|
|
79
|
-
if (!didConnectedStateLoad.current && wallets.length)
|
|
80
|
-
return;
|
|
81
|
+
logVerboseTroubleshootingMessage('[useWalletConnectors] will call setUserWallets', wallets);
|
|
81
82
|
setUserWallets((userWallets) => updateUserWalletsFromLinkedWallets(userWallets, wallets));
|
|
82
|
-
}, [
|
|
83
|
+
}, [setUserWallets, wallets]);
|
|
83
84
|
const primaryWallet = useMemo(() => { var _a; return (_a = wallets.find((wallet) => wallet.id === primaryWalletId)) !== null && _a !== void 0 ? _a : null; }, [primaryWalletId, wallets]);
|
|
84
85
|
const secondaryWallets = useMemo(() => canHaveMultipleWalletsConnected
|
|
85
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('
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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 {
|
|
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 '
|
|
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
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
};
|