@dynamic-labs/sdk-react-core 1.0.4 → 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 +8 -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/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/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/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
|
@@ -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 };
|