@dynamic-labs/sdk-react-core 1.0.3 → 1.0.5
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 -0
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +10 -10
- package/src/lib/layout/DynamicAuthLayout/DefaultFooter/DefaultFooter.cjs +12 -0
- package/src/lib/layout/DynamicAuthLayout/DefaultFooter/DefaultFooter.d.ts +6 -0
- package/src/lib/layout/DynamicAuthLayout/DefaultFooter/DefaultFooter.js +8 -0
- package/src/lib/layout/DynamicAuthLayout/DefaultFooter/index.d.ts +1 -0
- package/src/lib/layout/DynamicAuthLayout/DynamicAuthLayout.cjs +1 -3
- package/src/lib/layout/DynamicAuthLayout/DynamicAuthLayout.js +1 -3
- package/src/lib/shared/utils/functions/isUserLinkingWallet/isUserLinkingWallet.cjs +1 -2
- package/src/lib/shared/utils/functions/isUserLinkingWallet/isUserLinkingWallet.js +1 -2
- package/src/lib/styles/index.shadow.cjs +1 -1
- package/src/lib/styles/index.shadow.js +1 -1
- package/src/lib/utils/hooks/authenticationHooks/useConnectAndSignSplitSteps/useConnectAndSignSplitSteps.cjs +16 -9
- package/src/lib/utils/hooks/authenticationHooks/useConnectAndSignSplitSteps/useConnectAndSignSplitSteps.js +16 -9
- package/src/lib/utils/hooks/authenticationHooks/useEmailVerificationRequest/useEmailVerificationRequest.cjs +1 -28
- package/src/lib/utils/hooks/authenticationHooks/useEmailVerificationRequest/useEmailVerificationRequest.js +1 -28
- package/src/lib/utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.cjs +3 -2
- package/src/lib/utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.js +3 -2
- package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.cjs +2 -4
- package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.js +2 -4
- 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/useEmailProvider/useEmailProvider.cjs +5 -4
- package/src/lib/utils/hooks/useEmailProvider/useEmailProvider.d.ts +2 -0
- package/src/lib/utils/hooks/useEmailProvider/useEmailProvider.js +5 -5
- package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.cjs +0 -3
- package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.js +0 -3
- package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.cjs +14 -20
- package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.js +14 -20
- package/src/lib/utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUser.cjs +4 -26
- package/src/lib/utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUser.js +4 -26
- package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.cjs +2 -2
- package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.js +2 -2
- package/src/lib/views/EmailVerification/EmailVerification.cjs +23 -34
- package/src/lib/views/EmailVerification/EmailVerification.js +23 -34
- package/src/lib/views/LoginView/LoginView.cjs +6 -1
- package/src/lib/views/LoginView/LoginView.js +6 -1
- package/src/lib/views/LoginView/sections/EmailSignInSection/LoginEmailForm.cjs +3 -4
- package/src/lib/views/LoginView/sections/EmailSignInSection/LoginEmailForm.js +3 -4
- package/src/lib/views/Passkey/utils/findEmailOtpWalletConnector/findEmailOtpWalletConnector.cjs +17 -0
- package/src/lib/views/Passkey/utils/findEmailOtpWalletConnector/findEmailOtpWalletConnector.d.ts +3 -0
- package/src/lib/views/Passkey/utils/findEmailOtpWalletConnector/findEmailOtpWalletConnector.js +13 -0
- package/src/lib/views/Passkey/utils/findEmailOtpWalletConnector/index.d.ts +1 -0
- package/src/lib/views/Passkey/utils/index.d.ts +1 -0
- package/src/lib/views/WalletList/WalletList.cjs +6 -7
- package/src/lib/views/WalletList/WalletList.js +6 -7
- package/src/lib/widgets/DynamicWidget/hooks/useFetchBalance/useFetchBalance.cjs +65 -21
- package/src/lib/widgets/DynamicWidget/hooks/useFetchBalance/useFetchBalance.d.ts +1 -1
- package/src/lib/widgets/DynamicWidget/hooks/useFetchBalance/useFetchBalance.js +66 -22
|
@@ -34,7 +34,7 @@ const useVerifyWallet = ({ consumeNonce, displaySiweStatement, environmentId, pr
|
|
|
34
34
|
const { setExistentAccountData } = useAccountExistsContext();
|
|
35
35
|
const { setView, goToInitialView } = useViewContext();
|
|
36
36
|
const { setErrorMessage, setError } = useErrorContext();
|
|
37
|
-
const { setUser, multiWalletWidgetState, debugError, multiWallet: multiWalletEnabled, appName, primaryWalletId, setCallback, setShowAuthFlow, setPrimaryWalletId, siweStatement, connectedWallets, authMode, setOnboardingOnlyJwt, authToken, setAuthMode, removeConnectedWalletsInfo, setIsVerificationInProgress, eventsCallbacks, } = useInternalDynamicContext();
|
|
37
|
+
const { setUser, multiWalletWidgetState, debugError, multiWallet: multiWalletEnabled, appName, primaryWalletId, setCallback, setShowAuthFlow, setPrimaryWalletId, siweStatement, connectedWallets, authMode, setOnboardingOnlyJwt, authToken, setAuthMode, removeConnectedWalletsInfo, setIsVerificationInProgress, eventsCallbacks, primaryWallet, } = useInternalDynamicContext();
|
|
38
38
|
// If the user is not already logged it means that we only need to verify
|
|
39
39
|
// We need this boolean for the part of the logic where we already persisted a new authToken,
|
|
40
40
|
// and need to distinguish between logic for verify or linking.
|
|
@@ -76,7 +76,7 @@ const useVerifyWallet = ({ consumeNonce, displaySiweStatement, environmentId, pr
|
|
|
76
76
|
if (newSelectedCredentialWallet) {
|
|
77
77
|
const currentPrimaryWallet = user.verifiedCredentials.find((a) => a.id === primaryWalletId);
|
|
78
78
|
if (verifyOnly ||
|
|
79
|
-
|
|
79
|
+
!primaryWallet ||
|
|
80
80
|
(multiWalletWidgetState === 'awaiting_signature' &&
|
|
81
81
|
newSelectedCredentialWallet.walletName ===
|
|
82
82
|
(currentPrimaryWallet === null || currentPrimaryWallet === void 0 ? void 0 : currentPrimaryWallet.walletName)) ||
|
|
@@ -27,8 +27,6 @@ var useEffectOnce = require('../../shared/utils/hooks/useEffectOnce/useEffectOnc
|
|
|
27
27
|
require('../../shared/consts/index.cjs');
|
|
28
28
|
require('@dynamic-labs/multi-wallet');
|
|
29
29
|
require('@dynamic-labs/sdk-api');
|
|
30
|
-
var isTurnkeyEnabled = require('../../utils/functions/isTurnkeyEnabled/isTurnkeyEnabled.cjs');
|
|
31
|
-
var index = require('../../utils/functions/storeAuthToken/index.cjs');
|
|
32
30
|
require('../../context/AccessDeniedContext/AccessDeniedContext.cjs');
|
|
33
31
|
var AccountExistsContext = require('../../context/AccountExistsContext/AccountExistsContext.cjs');
|
|
34
32
|
var api = require('../../data/api.cjs');
|
|
@@ -102,7 +100,6 @@ const EmailVerification = () => {
|
|
|
102
100
|
const { loading, setLoading } = LoadingContext.useLoadingContext();
|
|
103
101
|
const { t } = reactI18next.useTranslation();
|
|
104
102
|
const { createEmbeddedWallet } = useEmbeddedWallet.useEmbeddedWallet();
|
|
105
|
-
const isTurnkeyProviderEnabled = isTurnkeyEnabled.isTurnkeyEnabled(projectSettings);
|
|
106
103
|
const { remainingSeconds, startCountdown } = useCountdown.useCountdown({
|
|
107
104
|
callback: () => setRetried(false),
|
|
108
105
|
seconds: SECONDS_TO_RETRY,
|
|
@@ -135,7 +132,7 @@ const EmailVerification = () => {
|
|
|
135
132
|
return;
|
|
136
133
|
}
|
|
137
134
|
try {
|
|
138
|
-
const { nextView
|
|
135
|
+
const { nextView } = yield verifyEmail(verificationToken, verificationUUID);
|
|
139
136
|
if (onboardingOnlyJwt) {
|
|
140
137
|
setOnboardingOnlyJwt(undefined);
|
|
141
138
|
setCallback('authSuccess');
|
|
@@ -144,20 +141,18 @@ const EmailVerification = () => {
|
|
|
144
141
|
if (nextView === 'verified-and-transferred') {
|
|
145
142
|
setShowTransferMessage(true);
|
|
146
143
|
}
|
|
147
|
-
if (
|
|
148
|
-
(
|
|
149
|
-
try {
|
|
150
|
-
index.storeAuthToken(jwt);
|
|
151
|
-
// this function will check turnkey wallet enabled and create wallet if needed
|
|
152
|
-
// if not enabled, it will throw an error.
|
|
153
|
-
yield createEmbeddedWallet();
|
|
154
|
-
}
|
|
155
|
-
catch (e) {
|
|
156
|
-
setShowAuthFlow(false);
|
|
157
|
-
}
|
|
144
|
+
if (!((_c = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _c === void 0 ? void 0 : _c.automaticEmbeddedWalletCreation)) {
|
|
145
|
+
setShowAuthFlow(false);
|
|
158
146
|
return;
|
|
159
147
|
}
|
|
160
|
-
|
|
148
|
+
try {
|
|
149
|
+
// this function will check turnkey wallet enabled and create wallet if needed
|
|
150
|
+
// if not enabled, it will throw an error.
|
|
151
|
+
yield createEmbeddedWallet();
|
|
152
|
+
}
|
|
153
|
+
catch (e) {
|
|
154
|
+
setShowAuthFlow(false);
|
|
155
|
+
}
|
|
161
156
|
}
|
|
162
157
|
catch (error) {
|
|
163
158
|
logger.logger.debug(error);
|
|
@@ -185,8 +180,8 @@ const EmailVerification = () => {
|
|
|
185
180
|
(_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _a === void 0 ? void 0 : _a.automaticEmbeddedWalletCreation,
|
|
186
181
|
createEmbeddedWallet,
|
|
187
182
|
setShowAuthFlow,
|
|
183
|
+
setErrorMessage,
|
|
188
184
|
setView,
|
|
189
|
-
isTurnkeyProviderEnabled,
|
|
190
185
|
]);
|
|
191
186
|
const handleEmailLogin = React.useCallback((verificationToken) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
192
187
|
var _d;
|
|
@@ -219,24 +214,19 @@ const EmailVerification = () => {
|
|
|
219
214
|
setCallback('authSuccess');
|
|
220
215
|
// this timeout is set to make sure that the user will see success message
|
|
221
216
|
yield sleepToShowSuccessMessage();
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
// Store the auth token in local storage so it can be used during embedded wallet creation
|
|
226
|
-
index.storeAuthToken(jwt);
|
|
227
|
-
// this function will check turnkey wallet enabled and create wallet if needed
|
|
228
|
-
// if not enabled, it will throw an error.
|
|
229
|
-
yield createEmbeddedWallet();
|
|
230
|
-
}
|
|
231
|
-
catch (e) {
|
|
232
|
-
yield createUserProfileByJWT(jwt);
|
|
233
|
-
setShowAuthFlow(false);
|
|
234
|
-
}
|
|
217
|
+
yield createUserProfileByJWT(jwt);
|
|
218
|
+
if (!((_d = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _d === void 0 ? void 0 : _d.automaticEmbeddedWalletCreation)) {
|
|
219
|
+
setShowAuthFlow(false);
|
|
235
220
|
return;
|
|
236
221
|
}
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
222
|
+
try {
|
|
223
|
+
// this function will check turnkey wallet enabled and create wallet if needed
|
|
224
|
+
// if not enabled, it will throw an error.
|
|
225
|
+
yield createEmbeddedWallet();
|
|
226
|
+
}
|
|
227
|
+
catch (e) {
|
|
228
|
+
setShowAuthFlow(false);
|
|
229
|
+
}
|
|
240
230
|
}
|
|
241
231
|
catch (error) {
|
|
242
232
|
if (error instanceof utils.NoAccessError) {
|
|
@@ -268,7 +258,6 @@ const EmailVerification = () => {
|
|
|
268
258
|
setShowAuthFlow,
|
|
269
259
|
setErrorMessage,
|
|
270
260
|
setExistentAccountData,
|
|
271
|
-
isTurnkeyProviderEnabled,
|
|
272
261
|
]);
|
|
273
262
|
const handleRetry = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
274
263
|
try {
|
|
@@ -23,8 +23,6 @@ import { useEffectOnce } from '../../shared/utils/hooks/useEffectOnce/useEffectO
|
|
|
23
23
|
import '../../shared/consts/index.js';
|
|
24
24
|
import '@dynamic-labs/multi-wallet';
|
|
25
25
|
import '@dynamic-labs/sdk-api';
|
|
26
|
-
import { isTurnkeyEnabled } from '../../utils/functions/isTurnkeyEnabled/isTurnkeyEnabled.js';
|
|
27
|
-
import { storeAuthToken } from '../../utils/functions/storeAuthToken/index.js';
|
|
28
26
|
import '../../context/AccessDeniedContext/AccessDeniedContext.js';
|
|
29
27
|
import { useAccountExistsContext } from '../../context/AccountExistsContext/AccountExistsContext.js';
|
|
30
28
|
import { signInWithEmailVerification, retryEmailVerification } from '../../data/api.js';
|
|
@@ -98,7 +96,6 @@ const EmailVerification = () => {
|
|
|
98
96
|
const { loading, setLoading } = useLoadingContext();
|
|
99
97
|
const { t } = useTranslation();
|
|
100
98
|
const { createEmbeddedWallet } = useEmbeddedWallet();
|
|
101
|
-
const isTurnkeyProviderEnabled = isTurnkeyEnabled(projectSettings);
|
|
102
99
|
const { remainingSeconds, startCountdown } = useCountdown({
|
|
103
100
|
callback: () => setRetried(false),
|
|
104
101
|
seconds: SECONDS_TO_RETRY,
|
|
@@ -131,7 +128,7 @@ const EmailVerification = () => {
|
|
|
131
128
|
return;
|
|
132
129
|
}
|
|
133
130
|
try {
|
|
134
|
-
const { nextView
|
|
131
|
+
const { nextView } = yield verifyEmail(verificationToken, verificationUUID);
|
|
135
132
|
if (onboardingOnlyJwt) {
|
|
136
133
|
setOnboardingOnlyJwt(undefined);
|
|
137
134
|
setCallback('authSuccess');
|
|
@@ -140,20 +137,18 @@ const EmailVerification = () => {
|
|
|
140
137
|
if (nextView === 'verified-and-transferred') {
|
|
141
138
|
setShowTransferMessage(true);
|
|
142
139
|
}
|
|
143
|
-
if (
|
|
144
|
-
(
|
|
145
|
-
try {
|
|
146
|
-
storeAuthToken(jwt);
|
|
147
|
-
// this function will check turnkey wallet enabled and create wallet if needed
|
|
148
|
-
// if not enabled, it will throw an error.
|
|
149
|
-
yield createEmbeddedWallet();
|
|
150
|
-
}
|
|
151
|
-
catch (e) {
|
|
152
|
-
setShowAuthFlow(false);
|
|
153
|
-
}
|
|
140
|
+
if (!((_c = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _c === void 0 ? void 0 : _c.automaticEmbeddedWalletCreation)) {
|
|
141
|
+
setShowAuthFlow(false);
|
|
154
142
|
return;
|
|
155
143
|
}
|
|
156
|
-
|
|
144
|
+
try {
|
|
145
|
+
// this function will check turnkey wallet enabled and create wallet if needed
|
|
146
|
+
// if not enabled, it will throw an error.
|
|
147
|
+
yield createEmbeddedWallet();
|
|
148
|
+
}
|
|
149
|
+
catch (e) {
|
|
150
|
+
setShowAuthFlow(false);
|
|
151
|
+
}
|
|
157
152
|
}
|
|
158
153
|
catch (error) {
|
|
159
154
|
logger.debug(error);
|
|
@@ -181,8 +176,8 @@ const EmailVerification = () => {
|
|
|
181
176
|
(_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _a === void 0 ? void 0 : _a.automaticEmbeddedWalletCreation,
|
|
182
177
|
createEmbeddedWallet,
|
|
183
178
|
setShowAuthFlow,
|
|
179
|
+
setErrorMessage,
|
|
184
180
|
setView,
|
|
185
|
-
isTurnkeyProviderEnabled,
|
|
186
181
|
]);
|
|
187
182
|
const handleEmailLogin = useCallback((verificationToken) => __awaiter(void 0, void 0, void 0, function* () {
|
|
188
183
|
var _d;
|
|
@@ -215,24 +210,19 @@ const EmailVerification = () => {
|
|
|
215
210
|
setCallback('authSuccess');
|
|
216
211
|
// this timeout is set to make sure that the user will see success message
|
|
217
212
|
yield sleepToShowSuccessMessage();
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
// Store the auth token in local storage so it can be used during embedded wallet creation
|
|
222
|
-
storeAuthToken(jwt);
|
|
223
|
-
// this function will check turnkey wallet enabled and create wallet if needed
|
|
224
|
-
// if not enabled, it will throw an error.
|
|
225
|
-
yield createEmbeddedWallet();
|
|
226
|
-
}
|
|
227
|
-
catch (e) {
|
|
228
|
-
yield createUserProfileByJWT(jwt);
|
|
229
|
-
setShowAuthFlow(false);
|
|
230
|
-
}
|
|
213
|
+
yield createUserProfileByJWT(jwt);
|
|
214
|
+
if (!((_d = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _d === void 0 ? void 0 : _d.automaticEmbeddedWalletCreation)) {
|
|
215
|
+
setShowAuthFlow(false);
|
|
231
216
|
return;
|
|
232
217
|
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
218
|
+
try {
|
|
219
|
+
// this function will check turnkey wallet enabled and create wallet if needed
|
|
220
|
+
// if not enabled, it will throw an error.
|
|
221
|
+
yield createEmbeddedWallet();
|
|
222
|
+
}
|
|
223
|
+
catch (e) {
|
|
224
|
+
setShowAuthFlow(false);
|
|
225
|
+
}
|
|
236
226
|
}
|
|
237
227
|
catch (error) {
|
|
238
228
|
if (error instanceof NoAccessError) {
|
|
@@ -264,7 +254,6 @@ const EmailVerification = () => {
|
|
|
264
254
|
setShowAuthFlow,
|
|
265
255
|
setErrorMessage,
|
|
266
256
|
setExistentAccountData,
|
|
267
|
-
isTurnkeyProviderEnabled,
|
|
268
257
|
]);
|
|
269
258
|
const handleRetry = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
270
259
|
try {
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
var React = require('react');
|
|
7
7
|
var sdkApi = require('@dynamic-labs/sdk-api');
|
|
8
|
+
var utils = require('@dynamic-labs/utils');
|
|
8
9
|
var Divider = require('../../components/Divider/Divider.cjs');
|
|
9
10
|
var ErrorContext = require('../../context/ErrorContext/ErrorContext.cjs');
|
|
10
11
|
var ErrorContainer = require('../../components/ErrorContainer/ErrorContainer.cjs');
|
|
@@ -12,6 +13,8 @@ var LoadingContext = require('../../context/LoadingContext/LoadingContext.cjs');
|
|
|
12
13
|
var classNames = require('../../utils/functions/classNames/classNames.cjs');
|
|
13
14
|
var ViewContext = require('../../context/ViewContext/ViewContext.cjs');
|
|
14
15
|
var WalletList = require('../WalletList/WalletList.cjs');
|
|
16
|
+
var DefaultFooter = require('../../layout/DynamicAuthLayout/DefaultFooter/DefaultFooter.cjs');
|
|
17
|
+
var useAuthLayoutChecks = require('../../utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.cjs');
|
|
15
18
|
var LoginEmailForm = require('./sections/EmailSignInSection/LoginEmailForm.cjs');
|
|
16
19
|
var WalletSignInSection = require('./sections/WalletSignInSection/WalletSignInSection.cjs');
|
|
17
20
|
var SocialSignInSection = require('./sections/SocialSignInSection/SocialSignInSection.cjs');
|
|
@@ -42,6 +45,7 @@ const LoginView = () => {
|
|
|
42
45
|
setShowWalletList(false);
|
|
43
46
|
}
|
|
44
47
|
}, [isWalletOnly, view]);
|
|
48
|
+
const { showDefaultFooter } = useAuthLayoutChecks.useAuthLayoutChecks();
|
|
45
49
|
const numOfWallets = ((_a = logingViewSections.find((section) => section.type === sdkApi.SdkViewSectionType.Wallet)) === null || _a === void 0 ? void 0 : _a.numOfItemsToDisplay) || 0;
|
|
46
50
|
const renderViewSections = React.useMemo(() => logingViewSections.map((viewSection, index) => {
|
|
47
51
|
switch (viewSection.type) {
|
|
@@ -63,9 +67,10 @@ const LoginView = () => {
|
|
|
63
67
|
if (showWalletList) {
|
|
64
68
|
return jsxRuntime.jsx(WalletList.WalletList, {});
|
|
65
69
|
}
|
|
70
|
+
const shouldShowFooter = utils.isMobile() && showDefaultFooter;
|
|
66
71
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [error && (jsxRuntime.jsx(ErrorContainer.ErrorContainer, { className: 'login-with-email__error-container', withIcon: false, children: error })), jsxRuntime.jsx("div", { className: classNames.classNames('login-with-email__container', {
|
|
67
72
|
'login-with-email__container--error': Boolean(error),
|
|
68
|
-
}), children: jsxRuntime.jsx("div", { className: 'login-with-email__scroll', "data-testid": 'login-with-email-scroll', children: renderViewSections }) })] }));
|
|
73
|
+
}), children: jsxRuntime.jsx("div", { className: 'login-with-email__scroll', "data-testid": 'login-with-email-scroll', children: renderViewSections }) }), shouldShowFooter && jsxRuntime.jsx(DefaultFooter.DefaultFooter, { hideBorder: true })] }));
|
|
69
74
|
};
|
|
70
75
|
|
|
71
76
|
exports.LoginView = LoginView;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import { useState, useEffect, useMemo } from 'react';
|
|
3
3
|
import { SdkViewSectionType } from '@dynamic-labs/sdk-api';
|
|
4
|
+
import { isMobile } from '@dynamic-labs/utils';
|
|
4
5
|
import { Divider } from '../../components/Divider/Divider.js';
|
|
5
6
|
import { useErrorContext } from '../../context/ErrorContext/ErrorContext.js';
|
|
6
7
|
import { ErrorContainer } from '../../components/ErrorContainer/ErrorContainer.js';
|
|
@@ -8,6 +9,8 @@ import { useLoadingContext } from '../../context/LoadingContext/LoadingContext.j
|
|
|
8
9
|
import { classNames } from '../../utils/functions/classNames/classNames.js';
|
|
9
10
|
import { useViewContext } from '../../context/ViewContext/ViewContext.js';
|
|
10
11
|
import { WalletList } from '../WalletList/WalletList.js';
|
|
12
|
+
import { DefaultFooter } from '../../layout/DynamicAuthLayout/DefaultFooter/DefaultFooter.js';
|
|
13
|
+
import { useAuthLayoutChecks } from '../../utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.js';
|
|
11
14
|
import { LoginEmailForm } from './sections/EmailSignInSection/LoginEmailForm.js';
|
|
12
15
|
import { WalletSignInSection } from './sections/WalletSignInSection/WalletSignInSection.js';
|
|
13
16
|
import { SocialSignInSection } from './sections/SocialSignInSection/SocialSignInSection.js';
|
|
@@ -38,6 +41,7 @@ const LoginView = () => {
|
|
|
38
41
|
setShowWalletList(false);
|
|
39
42
|
}
|
|
40
43
|
}, [isWalletOnly, view]);
|
|
44
|
+
const { showDefaultFooter } = useAuthLayoutChecks();
|
|
41
45
|
const numOfWallets = ((_a = logingViewSections.find((section) => section.type === SdkViewSectionType.Wallet)) === null || _a === void 0 ? void 0 : _a.numOfItemsToDisplay) || 0;
|
|
42
46
|
const renderViewSections = useMemo(() => logingViewSections.map((viewSection, index) => {
|
|
43
47
|
switch (viewSection.type) {
|
|
@@ -59,9 +63,10 @@ const LoginView = () => {
|
|
|
59
63
|
if (showWalletList) {
|
|
60
64
|
return jsx(WalletList, {});
|
|
61
65
|
}
|
|
66
|
+
const shouldShowFooter = isMobile() && showDefaultFooter;
|
|
62
67
|
return (jsxs(Fragment, { children: [error && (jsx(ErrorContainer, { className: 'login-with-email__error-container', withIcon: false, children: error })), jsx("div", { className: classNames('login-with-email__container', {
|
|
63
68
|
'login-with-email__container--error': Boolean(error),
|
|
64
|
-
}), children: jsx("div", { className: 'login-with-email__scroll', "data-testid": 'login-with-email-scroll', children: renderViewSections }) })] }));
|
|
69
|
+
}), children: jsx("div", { className: 'login-with-email__scroll', "data-testid": 'login-with-email-scroll', children: renderViewSections }) }), shouldShowFooter && jsx(DefaultFooter, { hideBorder: true })] }));
|
|
65
70
|
};
|
|
66
71
|
|
|
67
72
|
export { LoginView };
|
|
@@ -6,10 +6,10 @@ var _tslib = require('../../../../../../_virtual/_tslib.cjs');
|
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
7
7
|
var React = require('react');
|
|
8
8
|
var reactI18next = require('react-i18next');
|
|
9
|
-
var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
|
|
10
9
|
var classNames = require('../../../../utils/functions/classNames/classNames.cjs');
|
|
11
10
|
require('@dynamic-labs/utils');
|
|
12
11
|
var useInternalDynamicContext = require('../../../../context/DynamicContext/useInternalDynamicContext.cjs');
|
|
12
|
+
require('@dynamic-labs/wallet-connector-core');
|
|
13
13
|
var CaptchaContext = require('../../../../context/CaptchaContext/CaptchaContext.cjs');
|
|
14
14
|
var ErrorContext = require('../../../../context/ErrorContext/ErrorContext.cjs');
|
|
15
15
|
var ViewContext = require('../../../../context/ViewContext/ViewContext.cjs');
|
|
@@ -29,6 +29,7 @@ require('../../../../context/AccountExistsContext/AccountExistsContext.cjs');
|
|
|
29
29
|
require('../../../../config/ApiEndpoint.cjs');
|
|
30
30
|
require('../../../../context/EmailVerificationContext/EmailVerificationContext.cjs');
|
|
31
31
|
require('react-dom');
|
|
32
|
+
var findEmailOtpWalletConnector = require('../../../Passkey/utils/findEmailOtpWalletConnector/findEmailOtpWalletConnector.cjs');
|
|
32
33
|
require('../../../../context/ThemeContext/ThemeContext.cjs');
|
|
33
34
|
require('@dynamic-labs/types');
|
|
34
35
|
require('yup');
|
|
@@ -75,9 +76,7 @@ const LoginEmailForm = ({ isLoading: isExternalLoading, onSubmit, onSubmitError,
|
|
|
75
76
|
const { engageCaptcha } = CaptchaContext.useCaptchaContext();
|
|
76
77
|
const [emailInput, setEmailInput] = React.useState(currentEmail !== null && currentEmail !== void 0 ? currentEmail : '');
|
|
77
78
|
const [invalidEmail, setInvalidEmail] = React.useState(false);
|
|
78
|
-
const emailWalletConnector = walletConnectorOptions
|
|
79
|
-
.map(({ walletConnector }) => walletConnector)
|
|
80
|
-
.find(walletConnectorCore.isEmailWalletConnector);
|
|
79
|
+
const emailWalletConnector = findEmailOtpWalletConnector.findEmailOtpWalletConnector(walletConnectorOptions);
|
|
81
80
|
const { handleEmailSubmitWithOptionalCaptcha, isEmailProviderLoading } = useEmailProvider.useEmailProvider({
|
|
82
81
|
emailWalletConnector,
|
|
83
82
|
});
|
|
@@ -2,10 +2,10 @@ import { __awaiter } from '../../../../../../_virtual/_tslib.js';
|
|
|
2
2
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
3
|
import { useState, useMemo, useReducer } from 'react';
|
|
4
4
|
import { useTranslation } from 'react-i18next';
|
|
5
|
-
import { isEmailWalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
6
5
|
import { classNames } from '../../../../utils/functions/classNames/classNames.js';
|
|
7
6
|
import '@dynamic-labs/utils';
|
|
8
7
|
import { useInternalDynamicContext } from '../../../../context/DynamicContext/useInternalDynamicContext.js';
|
|
8
|
+
import '@dynamic-labs/wallet-connector-core';
|
|
9
9
|
import { useCaptchaContext } from '../../../../context/CaptchaContext/CaptchaContext.js';
|
|
10
10
|
import { useErrorContext } from '../../../../context/ErrorContext/ErrorContext.js';
|
|
11
11
|
import { useViewContext } from '../../../../context/ViewContext/ViewContext.js';
|
|
@@ -25,6 +25,7 @@ import '../../../../context/AccountExistsContext/AccountExistsContext.js';
|
|
|
25
25
|
import '../../../../config/ApiEndpoint.js';
|
|
26
26
|
import '../../../../context/EmailVerificationContext/EmailVerificationContext.js';
|
|
27
27
|
import 'react-dom';
|
|
28
|
+
import { findEmailOtpWalletConnector } from '../../../Passkey/utils/findEmailOtpWalletConnector/findEmailOtpWalletConnector.js';
|
|
28
29
|
import '../../../../context/ThemeContext/ThemeContext.js';
|
|
29
30
|
import '@dynamic-labs/types';
|
|
30
31
|
import 'yup';
|
|
@@ -71,9 +72,7 @@ const LoginEmailForm = ({ isLoading: isExternalLoading, onSubmit, onSubmitError,
|
|
|
71
72
|
const { engageCaptcha } = useCaptchaContext();
|
|
72
73
|
const [emailInput, setEmailInput] = useState(currentEmail !== null && currentEmail !== void 0 ? currentEmail : '');
|
|
73
74
|
const [invalidEmail, setInvalidEmail] = useState(false);
|
|
74
|
-
const emailWalletConnector = walletConnectorOptions
|
|
75
|
-
.map(({ walletConnector }) => walletConnector)
|
|
76
|
-
.find(isEmailWalletConnector);
|
|
75
|
+
const emailWalletConnector = findEmailOtpWalletConnector(walletConnectorOptions);
|
|
77
76
|
const { handleEmailSubmitWithOptionalCaptcha, isEmailProviderLoading } = useEmailProvider({
|
|
78
77
|
emailWalletConnector,
|
|
79
78
|
});
|
package/src/lib/views/Passkey/utils/findEmailOtpWalletConnector/findEmailOtpWalletConnector.cjs
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
|
|
6
|
+
|
|
7
|
+
const findEmailOtpWalletConnector = (wallets) => {
|
|
8
|
+
const walletConnector = wallets
|
|
9
|
+
.map(({ walletConnector }) => walletConnector)
|
|
10
|
+
.find((walletConnector) => walletConnectorCore.isEmailWalletConnector(walletConnector) &&
|
|
11
|
+
// additional check to make sure the wallet connector actually implements its own otp workflow
|
|
12
|
+
// if a walletConnector only uses Dynamic's OTP, then canConnectViaEmail should be false
|
|
13
|
+
walletConnector.canConnectViaEmail);
|
|
14
|
+
return walletConnector;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
exports.findEmailOtpWalletConnector = findEmailOtpWalletConnector;
|
package/src/lib/views/Passkey/utils/findEmailOtpWalletConnector/findEmailOtpWalletConnector.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { isEmailWalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
2
|
+
|
|
3
|
+
const findEmailOtpWalletConnector = (wallets) => {
|
|
4
|
+
const walletConnector = wallets
|
|
5
|
+
.map(({ walletConnector }) => walletConnector)
|
|
6
|
+
.find((walletConnector) => isEmailWalletConnector(walletConnector) &&
|
|
7
|
+
// additional check to make sure the wallet connector actually implements its own otp workflow
|
|
8
|
+
// if a walletConnector only uses Dynamic's OTP, then canConnectViaEmail should be false
|
|
9
|
+
walletConnector.canConnectViaEmail);
|
|
10
|
+
return walletConnector;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export { findEmailOtpWalletConnector };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { findEmailOtpWalletConnector } from './findEmailOtpWalletConnector';
|
|
@@ -26,6 +26,7 @@ require('viem');
|
|
|
26
26
|
require('@dynamic-labs/utils');
|
|
27
27
|
require('../../shared/consts/index.cjs');
|
|
28
28
|
var noWalletFound = require('../../assets/no-wallet-found.cjs');
|
|
29
|
+
var DefaultFooter = require('../../layout/DynamicAuthLayout/DefaultFooter/DefaultFooter.cjs');
|
|
29
30
|
var useAuthLayoutChecks = require('../../utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.cjs');
|
|
30
31
|
var SearchNotFoundMessage = require('./SearchNotFoundMessage/SearchNotFoundMessage.cjs');
|
|
31
32
|
var WalletListItem = require('./WalletListItem/WalletListItem.cjs');
|
|
@@ -36,9 +37,10 @@ const WalletList = ({ isWalletConnectList = false, }) => {
|
|
|
36
37
|
const { walletsFilter, signWithEmailWalletName, walletConnectorOptions, projectSettings, defaultNumberOfWalletsToShow, bridgeChainsToConnect, connectedWallets, authMode, multiWallet, walletConnector, } = useInternalDynamicContext.useInternalDynamicContext();
|
|
37
38
|
const { walletBook: walletBook$1 } = walletBook.useWalletBookContext();
|
|
38
39
|
const { error } = ErrorContext.useErrorContext();
|
|
40
|
+
const { showDefaultFooter } = useAuthLayoutChecks.useAuthLayoutChecks(walletConnector);
|
|
41
|
+
const [footerBorderIsVisible, setFooterBorderIsVisible] = React.useState(true);
|
|
39
42
|
const { t } = reactI18next.useTranslation();
|
|
40
43
|
const [filterValue, setFilterValue] = React.useState((_a = localStorage.LocalStorage.getFromLS(localStorage$1.WALLET_PICKER_SEARCH_KEY)) !== null && _a !== void 0 ? _a : '');
|
|
41
|
-
const [footerIsVisible, setFooterIsVisibile] = React.useState(false);
|
|
42
44
|
const getFilteredBridgeChains = (bridgeChainsToConnect === null || bridgeChainsToConnect === void 0 ? void 0 : bridgeChainsToConnect.length) &&
|
|
43
45
|
index.FilterBridgeChainsName(bridgeChainsToConnect[0].chain);
|
|
44
46
|
const filteredBridgeChains = getFilteredBridgeChains && getFilteredBridgeChains(walletConnectorOptions);
|
|
@@ -59,7 +61,6 @@ const WalletList = ({ isWalletConnectList = false, }) => {
|
|
|
59
61
|
});
|
|
60
62
|
const isSearchEnabled = numberOfWallets > defaultNumberOfWalletsToShow &&
|
|
61
63
|
walletsList.length !== numberOfWallets;
|
|
62
|
-
const { showDefaultFooter } = useAuthLayoutChecks.useAuthLayoutChecks(walletConnector);
|
|
63
64
|
const walletListScrollRef = React.useRef(null);
|
|
64
65
|
/* istanbul ignore next */
|
|
65
66
|
const handleScroll = () => {
|
|
@@ -68,10 +69,10 @@ const WalletList = ({ isWalletConnectList = false, }) => {
|
|
|
68
69
|
return;
|
|
69
70
|
}
|
|
70
71
|
if ((element === null || element === void 0 ? void 0 : element.scrollTop) > (element === null || element === void 0 ? void 0 : element.clientHeight) * 1.25) {
|
|
71
|
-
|
|
72
|
+
setFooterBorderIsVisible(false);
|
|
72
73
|
}
|
|
73
74
|
else {
|
|
74
|
-
|
|
75
|
+
setFooterBorderIsVisible(true);
|
|
75
76
|
}
|
|
76
77
|
};
|
|
77
78
|
const handleFilterValueChange = (value) => {
|
|
@@ -84,9 +85,7 @@ const WalletList = ({ isWalletConnectList = false, }) => {
|
|
|
84
85
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [searchContainer, Boolean(error) && (jsxRuntime.jsx(ErrorContainer.ErrorContainer, { className: 'wallet-list__error-container', withIcon: false, children: error })), jsxRuntime.jsx("div", { className: 'wallet-list__container', children: jsxRuntime.jsxs("div", { className: classNames.classNames('wallet-list__scroll-container', {
|
|
85
86
|
'wallet-list__scroll-container--error': Boolean(error),
|
|
86
87
|
'wallet-list__scroll-container--full-height': isSearchEnabled,
|
|
87
|
-
}), "data-testid": 'wallet-list-scroll-container', ref: walletListScrollRef, onScroll: handleScroll, children: [!projectSettings ? (jsxRuntime.jsx(Skeleton.Skeleton, { count: 10, className: 'wallet-list__tile-skeleton' })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [walletConnectorOptions.length === 0 && (jsxRuntime.jsx(ErrorContainer.ErrorContainer, { copykey: 'dyn_wallet_list.configuration_mismatch', children: t('dyn_wallet_list.configuration_mismatch') })), walletConnectorOptions.length && walletsList.length === 0 ? (jsxRuntime.jsx(SearchNotFoundMessage.SearchNotFoundMessage, { title: t('dyn_wallet_list.search.not_found.title'), subtitle: t('dyn_wallet_list.search.not_found.description'), image: jsxRuntime.jsx(noWalletFound.ReactComponent, {}) })) : (walletsList.map((wallet, index) => (jsxRuntime.jsx(WalletListItem.WalletListItem, { wallet: wallet, usingMultiWallet: multiWallet, onResetSearchValue: () => handleFilterValueChange('') }, `${wallet.key}_${index}`))))] })), isSearchEnabled && !filterValue && projectSettings && (jsxRuntime.jsx(SearchNotFoundMessage.SearchNotFoundMessage, {}))] }) }), showDefaultFooter && (jsxRuntime.jsx(
|
|
88
|
-
'wallet-list__tiny-footer--hidden': footerIsVisible,
|
|
89
|
-
}), "data-testid": 'wallet-list-tiny-footer' }))] }));
|
|
88
|
+
}), "data-testid": 'wallet-list-scroll-container', ref: walletListScrollRef, onScroll: handleScroll, children: [!projectSettings ? (jsxRuntime.jsx(Skeleton.Skeleton, { count: 10, className: 'wallet-list__tile-skeleton' })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [walletConnectorOptions.length === 0 && (jsxRuntime.jsx(ErrorContainer.ErrorContainer, { copykey: 'dyn_wallet_list.configuration_mismatch', children: t('dyn_wallet_list.configuration_mismatch') })), walletConnectorOptions.length && walletsList.length === 0 ? (jsxRuntime.jsx(SearchNotFoundMessage.SearchNotFoundMessage, { title: t('dyn_wallet_list.search.not_found.title'), subtitle: t('dyn_wallet_list.search.not_found.description'), image: jsxRuntime.jsx(noWalletFound.ReactComponent, {}) })) : (walletsList.map((wallet, index) => (jsxRuntime.jsx(WalletListItem.WalletListItem, { wallet: wallet, usingMultiWallet: multiWallet, onResetSearchValue: () => handleFilterValueChange('') }, `${wallet.key}_${index}`))))] })), isSearchEnabled && !filterValue && projectSettings && (jsxRuntime.jsx(SearchNotFoundMessage.SearchNotFoundMessage, {}))] }) }), showDefaultFooter && (jsxRuntime.jsx(DefaultFooter.DefaultFooter, { hideBorder: !footerBorderIsVisible }))] }));
|
|
90
89
|
};
|
|
91
90
|
|
|
92
91
|
exports.WalletList = WalletList;
|
|
@@ -22,6 +22,7 @@ import 'viem';
|
|
|
22
22
|
import '@dynamic-labs/utils';
|
|
23
23
|
import '../../shared/consts/index.js';
|
|
24
24
|
import { ReactComponent as SvgNoWalletFound } from '../../assets/no-wallet-found.js';
|
|
25
|
+
import { DefaultFooter } from '../../layout/DynamicAuthLayout/DefaultFooter/DefaultFooter.js';
|
|
25
26
|
import { useAuthLayoutChecks } from '../../utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.js';
|
|
26
27
|
import { SearchNotFoundMessage } from './SearchNotFoundMessage/SearchNotFoundMessage.js';
|
|
27
28
|
import { WalletListItem } from './WalletListItem/WalletListItem.js';
|
|
@@ -32,9 +33,10 @@ const WalletList = ({ isWalletConnectList = false, }) => {
|
|
|
32
33
|
const { walletsFilter, signWithEmailWalletName, walletConnectorOptions, projectSettings, defaultNumberOfWalletsToShow, bridgeChainsToConnect, connectedWallets, authMode, multiWallet, walletConnector, } = useInternalDynamicContext();
|
|
33
34
|
const { walletBook } = useWalletBookContext();
|
|
34
35
|
const { error } = useErrorContext();
|
|
36
|
+
const { showDefaultFooter } = useAuthLayoutChecks(walletConnector);
|
|
37
|
+
const [footerBorderIsVisible, setFooterBorderIsVisible] = useState(true);
|
|
35
38
|
const { t } = useTranslation();
|
|
36
39
|
const [filterValue, setFilterValue] = useState((_a = LocalStorage.getFromLS(WALLET_PICKER_SEARCH_KEY)) !== null && _a !== void 0 ? _a : '');
|
|
37
|
-
const [footerIsVisible, setFooterIsVisibile] = useState(false);
|
|
38
40
|
const getFilteredBridgeChains = (bridgeChainsToConnect === null || bridgeChainsToConnect === void 0 ? void 0 : bridgeChainsToConnect.length) &&
|
|
39
41
|
FilterBridgeChainsName(bridgeChainsToConnect[0].chain);
|
|
40
42
|
const filteredBridgeChains = getFilteredBridgeChains && getFilteredBridgeChains(walletConnectorOptions);
|
|
@@ -55,7 +57,6 @@ const WalletList = ({ isWalletConnectList = false, }) => {
|
|
|
55
57
|
});
|
|
56
58
|
const isSearchEnabled = numberOfWallets > defaultNumberOfWalletsToShow &&
|
|
57
59
|
walletsList.length !== numberOfWallets;
|
|
58
|
-
const { showDefaultFooter } = useAuthLayoutChecks(walletConnector);
|
|
59
60
|
const walletListScrollRef = useRef(null);
|
|
60
61
|
/* istanbul ignore next */
|
|
61
62
|
const handleScroll = () => {
|
|
@@ -64,10 +65,10 @@ const WalletList = ({ isWalletConnectList = false, }) => {
|
|
|
64
65
|
return;
|
|
65
66
|
}
|
|
66
67
|
if ((element === null || element === void 0 ? void 0 : element.scrollTop) > (element === null || element === void 0 ? void 0 : element.clientHeight) * 1.25) {
|
|
67
|
-
|
|
68
|
+
setFooterBorderIsVisible(false);
|
|
68
69
|
}
|
|
69
70
|
else {
|
|
70
|
-
|
|
71
|
+
setFooterBorderIsVisible(true);
|
|
71
72
|
}
|
|
72
73
|
};
|
|
73
74
|
const handleFilterValueChange = (value) => {
|
|
@@ -80,9 +81,7 @@ const WalletList = ({ isWalletConnectList = false, }) => {
|
|
|
80
81
|
return (jsxs(Fragment, { children: [searchContainer, Boolean(error) && (jsx(ErrorContainer, { className: 'wallet-list__error-container', withIcon: false, children: error })), jsx("div", { className: 'wallet-list__container', children: jsxs("div", { className: classNames('wallet-list__scroll-container', {
|
|
81
82
|
'wallet-list__scroll-container--error': Boolean(error),
|
|
82
83
|
'wallet-list__scroll-container--full-height': isSearchEnabled,
|
|
83
|
-
}), "data-testid": 'wallet-list-scroll-container', ref: walletListScrollRef, onScroll: handleScroll, children: [!projectSettings ? (jsx(Skeleton, { count: 10, className: 'wallet-list__tile-skeleton' })) : (jsxs(Fragment, { children: [walletConnectorOptions.length === 0 && (jsx(ErrorContainer, { copykey: 'dyn_wallet_list.configuration_mismatch', children: t('dyn_wallet_list.configuration_mismatch') })), walletConnectorOptions.length && walletsList.length === 0 ? (jsx(SearchNotFoundMessage, { title: t('dyn_wallet_list.search.not_found.title'), subtitle: t('dyn_wallet_list.search.not_found.description'), image: jsx(SvgNoWalletFound, {}) })) : (walletsList.map((wallet, index) => (jsx(WalletListItem, { wallet: wallet, usingMultiWallet: multiWallet, onResetSearchValue: () => handleFilterValueChange('') }, `${wallet.key}_${index}`))))] })), isSearchEnabled && !filterValue && projectSettings && (jsx(SearchNotFoundMessage, {}))] }) }), showDefaultFooter && (jsx(
|
|
84
|
-
'wallet-list__tiny-footer--hidden': footerIsVisible,
|
|
85
|
-
}), "data-testid": 'wallet-list-tiny-footer' }))] }));
|
|
84
|
+
}), "data-testid": 'wallet-list-scroll-container', ref: walletListScrollRef, onScroll: handleScroll, children: [!projectSettings ? (jsx(Skeleton, { count: 10, className: 'wallet-list__tile-skeleton' })) : (jsxs(Fragment, { children: [walletConnectorOptions.length === 0 && (jsx(ErrorContainer, { copykey: 'dyn_wallet_list.configuration_mismatch', children: t('dyn_wallet_list.configuration_mismatch') })), walletConnectorOptions.length && walletsList.length === 0 ? (jsx(SearchNotFoundMessage, { title: t('dyn_wallet_list.search.not_found.title'), subtitle: t('dyn_wallet_list.search.not_found.description'), image: jsx(SvgNoWalletFound, {}) })) : (walletsList.map((wallet, index) => (jsx(WalletListItem, { wallet: wallet, usingMultiWallet: multiWallet, onResetSearchValue: () => handleFilterValueChange('') }, `${wallet.key}_${index}`))))] })), isSearchEnabled && !filterValue && projectSettings && (jsx(SearchNotFoundMessage, {}))] }) }), showDefaultFooter && (jsx(DefaultFooter, { hideBorder: !footerBorderIsVisible }))] }));
|
|
86
85
|
};
|
|
87
86
|
|
|
88
87
|
export { WalletList };
|