@dynamic-labs/sdk-react-core 0.17.0-RC.10 → 0.17.0-RC.12
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 +15 -0
- package/package.cjs +2 -2
- package/package.js +2 -2
- package/package.json +8 -8
- package/src/index.cjs +5 -1
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -1
- package/src/lib/components/NetworkPicker/NetworkPicker.cjs +4 -1
- package/src/lib/components/NetworkPicker/NetworkPicker.js +4 -1
- package/src/lib/components/NetworkPicker/components/EvmNetworkControl/EvmNetworkControl.cjs +5 -5
- package/src/lib/components/NetworkPicker/components/EvmNetworkControl/EvmNetworkControl.js +5 -5
- package/src/lib/context/DynamicContext/DynamicContext.cjs +2 -1
- package/src/lib/context/DynamicContext/DynamicContext.d.ts +3 -2
- package/src/lib/context/DynamicContext/DynamicContext.js +2 -1
- package/src/lib/utils/functions/index.d.ts +1 -0
- package/src/lib/utils/functions/isNetworkUnsupported/index.d.ts +1 -0
- package/src/lib/utils/functions/isNetworkUnsupported/isNetworkUnsupported.cjs +12 -0
- package/src/lib/utils/functions/isNetworkUnsupported/isNetworkUnsupported.d.ts +2 -0
- package/src/lib/utils/functions/isNetworkUnsupported/isNetworkUnsupported.js +8 -0
- package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.cjs +25 -2
- package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.js +25 -2
- package/src/lib/utils/hooks/useWallets/useWallets.cjs +16 -3
- package/src/lib/utils/hooks/useWallets/useWallets.d.ts +3 -1
- package/src/lib/utils/hooks/useWallets/useWallets.js +16 -3
- package/src/lib/views/WalletList/WalletList.cjs +1 -1
- package/src/lib/views/WalletList/WalletList.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,19 @@
|
|
|
1
1
|
|
|
2
|
+
## [0.17.0-RC.12](https://github.com/dynamic-labs/DynamicAuth/compare/v0.17.0-RC.11...v0.17.0-RC.12) (2023-05-09)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
* allow opening network picker when unsupported network and only one network enabled ([#2061](https://github.com/dynamic-labs/DynamicAuth/issues/2061)) ([486607f](https://github.com/dynamic-labs/DynamicAuth/commit/486607f8bb2666749ce39f18cf2368c86a78f74f))
|
|
8
|
+
* **DynamicWagmiConnector:** prevent disconnect when WC is not present ([#2063](https://github.com/dynamic-labs/DynamicAuth/issues/2063)) ([ef93623](https://github.com/dynamic-labs/DynamicAuth/commit/ef93623fb68b63a9e89a5958eb87bbddedd15fb6))
|
|
9
|
+
|
|
10
|
+
## [0.17.0-RC.11](https://github.com/dynamic-labs/DynamicAuth/compare/v0.17.0-RC.10...v0.17.0-RC.11) (2023-05-08)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
* add walletConnectors setting for supplying array of wallet connectors ([#2059](https://github.com/dynamic-labs/DynamicAuth/issues/2059)) ([ae65218](https://github.com/dynamic-labs/DynamicAuth/commit/ae652180b17a870f7bbf5f99c876f386e0de1af5))
|
|
16
|
+
|
|
2
17
|
## [0.17.0-RC.10](https://github.com/dynamic-labs/DynamicAuth/compare/v0.17.0-RC.9...v0.17.0-RC.10) (2023-05-05)
|
|
3
18
|
|
|
4
19
|
## [0.17.0-RC.9](https://github.com/dynamic-labs/DynamicAuth/compare/v0.17.0-RC.8...v0.17.0-RC.9) (2023-05-05)
|
package/package.cjs
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var version = "0.17.0-RC.
|
|
5
|
+
var version = "0.17.0-RC.12";
|
|
6
6
|
var dependencies = {
|
|
7
7
|
"react-focus-lock": "^2.9.2",
|
|
8
8
|
"@dynamic-labs/iconic": "^0.1.19",
|
|
9
|
-
"@dynamic-labs/sdk-api": "0.0.
|
|
9
|
+
"@dynamic-labs/sdk-api": "0.0.189",
|
|
10
10
|
"@dynamic-labs/wallet-book": "^0.0.14",
|
|
11
11
|
"@hcaptcha/react-hcaptcha": "~1.4.4",
|
|
12
12
|
"country-list": "^2.3.0",
|
package/package.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
var version = "0.17.0-RC.
|
|
1
|
+
var version = "0.17.0-RC.12";
|
|
2
2
|
var dependencies = {
|
|
3
3
|
"react-focus-lock": "^2.9.2",
|
|
4
4
|
"@dynamic-labs/iconic": "^0.1.19",
|
|
5
|
-
"@dynamic-labs/sdk-api": "0.0.
|
|
5
|
+
"@dynamic-labs/sdk-api": "0.0.189",
|
|
6
6
|
"@dynamic-labs/wallet-book": "^0.0.14",
|
|
7
7
|
"@hcaptcha/react-hcaptcha": "~1.4.4",
|
|
8
8
|
"country-list": "^2.3.0",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/sdk-react-core",
|
|
3
|
-
"version": "0.17.0-RC.
|
|
3
|
+
"version": "0.17.0-RC.12",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/dynamic-labs/DynamicAuth.git",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"react-focus-lock": "^2.9.2",
|
|
11
11
|
"@dynamic-labs/iconic": "^0.1.19",
|
|
12
|
-
"@dynamic-labs/sdk-api": "0.0.
|
|
12
|
+
"@dynamic-labs/sdk-api": "0.0.189",
|
|
13
13
|
"@dynamic-labs/wallet-book": "^0.0.14",
|
|
14
14
|
"@hcaptcha/react-hcaptcha": "~1.4.4",
|
|
15
15
|
"country-list": "^2.3.0",
|
|
@@ -17,12 +17,12 @@
|
|
|
17
17
|
"formik": "^2.2.9",
|
|
18
18
|
"qrcode": "1.5.1",
|
|
19
19
|
"ethers": "^5.7.2",
|
|
20
|
-
"@dynamic-labs/logger": "0.17.0-RC.
|
|
21
|
-
"@dynamic-labs/multi-wallet": "0.17.0-RC.
|
|
22
|
-
"@dynamic-labs/rpc-providers": "0.17.0-RC.
|
|
23
|
-
"@dynamic-labs/types": "0.17.0-RC.
|
|
24
|
-
"@dynamic-labs/utils": "0.17.0-RC.
|
|
25
|
-
"@dynamic-labs/wallet-connector-core": "0.17.0-RC.
|
|
20
|
+
"@dynamic-labs/logger": "0.17.0-RC.12",
|
|
21
|
+
"@dynamic-labs/multi-wallet": "0.17.0-RC.12",
|
|
22
|
+
"@dynamic-labs/rpc-providers": "0.17.0-RC.12",
|
|
23
|
+
"@dynamic-labs/types": "0.17.0-RC.12",
|
|
24
|
+
"@dynamic-labs/utils": "0.17.0-RC.12",
|
|
25
|
+
"@dynamic-labs/wallet-connector-core": "0.17.0-RC.12"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"semver": "^7.3.8"
|
package/src/index.cjs
CHANGED
|
@@ -72,7 +72,7 @@ require('./lib/utils/constants/colors.cjs');
|
|
|
72
72
|
require('@dynamic-labs/multi-wallet');
|
|
73
73
|
require('@dynamic-labs/utils');
|
|
74
74
|
var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
|
|
75
|
-
require('@dynamic-labs/sdk-api');
|
|
75
|
+
var sdkApi = require('@dynamic-labs/sdk-api');
|
|
76
76
|
var ShadowDOM = require('./lib/components/ShadowDOM/ShadowDOM.cjs');
|
|
77
77
|
require('./lib/context/ThemeContext/ThemeContext.cjs');
|
|
78
78
|
require('react-dom');
|
|
@@ -187,6 +187,10 @@ Object.defineProperty(exports, 'normalizeWalletName', {
|
|
|
187
187
|
enumerable: true,
|
|
188
188
|
get: function () { return walletConnectorCore.normalizeWalletName; }
|
|
189
189
|
});
|
|
190
|
+
Object.defineProperty(exports, 'DynamicJwtFromJSON', {
|
|
191
|
+
enumerable: true,
|
|
192
|
+
get: function () { return sdkApi.DynamicJwtFromJSON; }
|
|
193
|
+
});
|
|
190
194
|
exports.ShadowDOM = ShadowDOM.ShadowDOM;
|
|
191
195
|
exports.isSameWalletName = isSameWalletName.isSameWalletName;
|
|
192
196
|
exports.useWalletItemActions = useWalletItemActions.useWalletItemActions;
|
package/src/index.d.ts
CHANGED
|
@@ -27,3 +27,4 @@ export { useUserUpdateRequest } from './lib/utils/hooks/useUserUpdateRequest/use
|
|
|
27
27
|
export type { UpdateUserFieldsArg } from './lib/utils/hooks/useUserUpdateRequest/useUserUpdateRequest';
|
|
28
28
|
export type { VerifyEmailCallback } from './lib/utils/hooks/authenticationHooks/useEmailVerificationRequest';
|
|
29
29
|
export { useEmailVerificationRequest } from './lib/utils/hooks/authenticationHooks/useEmailVerificationRequest';
|
|
30
|
+
export { type DynamicJwt, DynamicJwtFromJSON } from '@dynamic-labs/sdk-api';
|
package/src/index.js
CHANGED
|
@@ -68,7 +68,7 @@ import './lib/utils/constants/colors.js';
|
|
|
68
68
|
import '@dynamic-labs/multi-wallet';
|
|
69
69
|
import '@dynamic-labs/utils';
|
|
70
70
|
export { normalizeWalletName } from '@dynamic-labs/wallet-connector-core';
|
|
71
|
-
|
|
71
|
+
export { DynamicJwtFromJSON } from '@dynamic-labs/sdk-api';
|
|
72
72
|
export { ShadowDOM } from './lib/components/ShadowDOM/ShadowDOM.js';
|
|
73
73
|
import './lib/context/ThemeContext/ThemeContext.js';
|
|
74
74
|
import 'react-dom';
|
|
@@ -17,6 +17,8 @@ var index = require('../../shared/utils/hooks/useOnClickOutside/index.cjs');
|
|
|
17
17
|
require('../../shared/consts/index.cjs');
|
|
18
18
|
var useInternalDynamicContext = require('../../context/DynamicContext/useInternalDynamicContext.cjs');
|
|
19
19
|
var classNames = require('../../utils/functions/classNames/classNames.cjs');
|
|
20
|
+
require('@dynamic-labs/multi-wallet');
|
|
21
|
+
var isNetworkUnsupported = require('../../utils/functions/isNetworkUnsupported/isNetworkUnsupported.cjs');
|
|
20
22
|
var NetworkControl = require('./components/NetworkControl/NetworkControl.cjs');
|
|
21
23
|
var ActionList = require('./components/ActionList/ActionList.cjs');
|
|
22
24
|
var NetworkAction = require('./components/NetworkAction/NetworkAction.cjs');
|
|
@@ -25,6 +27,7 @@ const NetworkPicker = ({ activeClassName = '', buttonClassName = '', checkboxCla
|
|
|
25
27
|
const pickerRef = React.useRef(null);
|
|
26
28
|
const [newNetworkId, setNewNetworkId] = React.useState(undefined);
|
|
27
29
|
const { loadingNetwork, network, setNetwork } = useInternalDynamicContext.useInternalDynamicContext();
|
|
30
|
+
const shouldAllowOpenDropdown = isNetworkUnsupported.isNetworkUnsupported(network, evmNetworks) || (evmNetworks === null || evmNetworks === void 0 ? void 0 : evmNetworks.length) > 1;
|
|
28
31
|
index.useOnClickOutside(pickerRef, () => {
|
|
29
32
|
if (isNetworkPickerOpen) {
|
|
30
33
|
setIsNetworkPickerOpen(false);
|
|
@@ -49,7 +52,7 @@ const NetworkPicker = ({ activeClassName = '', buttonClassName = '', checkboxCla
|
|
|
49
52
|
setIsNetworkPickerOpen(false);
|
|
50
53
|
}
|
|
51
54
|
});
|
|
52
|
-
return (jsxRuntime.jsxs("div", Object.assign({ className: classNames.classNames('non-widget-network-picker', mainClassName), ref: pickerRef }, { children: [jsxRuntime.jsx(NetworkControl.NetworkControl, { evmNetworks: evmNetworks, activeClassName: activeClassName, network: network, loading: loadingNetwork, isOpen: isNetworkPickerOpen, setIsOpen: setIsNetworkPickerOpen, walletConnector: connector, showNetworkName: showNetworkName, buttonClassName: buttonClassName }),
|
|
55
|
+
return (jsxRuntime.jsxs("div", Object.assign({ className: classNames.classNames('non-widget-network-picker', mainClassName), ref: pickerRef }, { children: [jsxRuntime.jsx(NetworkControl.NetworkControl, { evmNetworks: evmNetworks, activeClassName: activeClassName, network: network, loading: loadingNetwork, isOpen: isNetworkPickerOpen, setIsOpen: setIsNetworkPickerOpen, walletConnector: connector, showNetworkName: showNetworkName, buttonClassName: buttonClassName }), shouldAllowOpenDropdown && (jsxRuntime.jsx(ActionList.ActionList, Object.assign({ className: listClassName, title: 'Select network', isOpen: isNetworkPickerOpen, setIsOpen: setIsNetworkPickerOpen }, { children: jsxRuntime.jsx("div", Object.assign({ className: 'network-picker__dropdown' }, { children: evmNetworks.map(({ name, networkId, vanityName, iconUrls }) => (jsxRuntime.jsx(NetworkAction.NetworkAction, { iconUrl: iconUrls === null || iconUrls === void 0 ? void 0 : iconUrls[0], networkId: networkId, networkName: vanityName || name, network: network, onClick: handleNetworkChange, checkboxClassName: checkboxClassName, newNetworkId: newNetworkId }, networkId))) })) })))] })));
|
|
53
56
|
};
|
|
54
57
|
|
|
55
58
|
exports.NetworkPicker = NetworkPicker;
|
|
@@ -13,6 +13,8 @@ import { useOnClickOutside } from '../../shared/utils/hooks/useOnClickOutside/in
|
|
|
13
13
|
import '../../shared/consts/index.js';
|
|
14
14
|
import { useInternalDynamicContext } from '../../context/DynamicContext/useInternalDynamicContext.js';
|
|
15
15
|
import { classNames } from '../../utils/functions/classNames/classNames.js';
|
|
16
|
+
import '@dynamic-labs/multi-wallet';
|
|
17
|
+
import { isNetworkUnsupported } from '../../utils/functions/isNetworkUnsupported/isNetworkUnsupported.js';
|
|
16
18
|
import { NetworkControl } from './components/NetworkControl/NetworkControl.js';
|
|
17
19
|
import { ActionList } from './components/ActionList/ActionList.js';
|
|
18
20
|
import { NetworkAction } from './components/NetworkAction/NetworkAction.js';
|
|
@@ -21,6 +23,7 @@ const NetworkPicker = ({ activeClassName = '', buttonClassName = '', checkboxCla
|
|
|
21
23
|
const pickerRef = useRef(null);
|
|
22
24
|
const [newNetworkId, setNewNetworkId] = useState(undefined);
|
|
23
25
|
const { loadingNetwork, network, setNetwork } = useInternalDynamicContext();
|
|
26
|
+
const shouldAllowOpenDropdown = isNetworkUnsupported(network, evmNetworks) || (evmNetworks === null || evmNetworks === void 0 ? void 0 : evmNetworks.length) > 1;
|
|
24
27
|
useOnClickOutside(pickerRef, () => {
|
|
25
28
|
if (isNetworkPickerOpen) {
|
|
26
29
|
setIsNetworkPickerOpen(false);
|
|
@@ -45,7 +48,7 @@ const NetworkPicker = ({ activeClassName = '', buttonClassName = '', checkboxCla
|
|
|
45
48
|
setIsNetworkPickerOpen(false);
|
|
46
49
|
}
|
|
47
50
|
});
|
|
48
|
-
return (jsxs("div", Object.assign({ className: classNames('non-widget-network-picker', mainClassName), ref: pickerRef }, { children: [jsx(NetworkControl, { evmNetworks: evmNetworks, activeClassName: activeClassName, network: network, loading: loadingNetwork, isOpen: isNetworkPickerOpen, setIsOpen: setIsNetworkPickerOpen, walletConnector: connector, showNetworkName: showNetworkName, buttonClassName: buttonClassName }),
|
|
51
|
+
return (jsxs("div", Object.assign({ className: classNames('non-widget-network-picker', mainClassName), ref: pickerRef }, { children: [jsx(NetworkControl, { evmNetworks: evmNetworks, activeClassName: activeClassName, network: network, loading: loadingNetwork, isOpen: isNetworkPickerOpen, setIsOpen: setIsNetworkPickerOpen, walletConnector: connector, showNetworkName: showNetworkName, buttonClassName: buttonClassName }), shouldAllowOpenDropdown && (jsx(ActionList, Object.assign({ className: listClassName, title: 'Select network', isOpen: isNetworkPickerOpen, setIsOpen: setIsNetworkPickerOpen }, { children: jsx("div", Object.assign({ className: 'network-picker__dropdown' }, { children: evmNetworks.map(({ name, networkId, vanityName, iconUrls }) => (jsx(NetworkAction, { iconUrl: iconUrls === null || iconUrls === void 0 ? void 0 : iconUrls[0], networkId: networkId, networkName: vanityName || name, network: network, onClick: handleNetworkChange, checkboxClassName: checkboxClassName, newNetworkId: newNetworkId }, networkId))) })) })))] })));
|
|
49
52
|
};
|
|
50
53
|
|
|
51
54
|
export { NetworkPicker };
|
|
@@ -39,7 +39,7 @@ var UnsupportedNetwork = require('../UnsupportedNetwork/UnsupportedNetwork.cjs')
|
|
|
39
39
|
|
|
40
40
|
const EvmNetworkControl = ({ evmNetworks, className = '', activeClassName = '', network, walletConnector, isOpen, setIsOpen, showNetworkName = false, }) => {
|
|
41
41
|
var _a, _b;
|
|
42
|
-
const
|
|
42
|
+
const currentEvmNetwork = evmNetworks === null || evmNetworks === void 0 ? void 0 : evmNetworks.find((element) => network && element.chainId === utils.parseChainId(network));
|
|
43
43
|
if (evmNetworks && !evmNetworks.length) {
|
|
44
44
|
return (jsxRuntime.jsx("div", Object.assign({ "data-testid": 'EvmNetworkControl', className: classNames.classNames('evm-network-control__container evm-network-control__container--error', className) }, { children: jsxRuntime.jsx(UnsupportedNetwork.UnsupportedNetwork, { showMsg: showNetworkName }) })));
|
|
45
45
|
}
|
|
@@ -51,20 +51,20 @@ const EvmNetworkControl = ({ evmNetworks, className = '', activeClassName = '',
|
|
|
51
51
|
[activeClassName]: isOpen,
|
|
52
52
|
'evm-network-control__container': Boolean(walletConnector === null || walletConnector === void 0 ? void 0 : walletConnector.supportsNetworkSwitching()),
|
|
53
53
|
});
|
|
54
|
-
if (!
|
|
54
|
+
if (!currentEvmNetwork) {
|
|
55
55
|
return (jsxRuntime.jsxs("button", Object.assign({ "data-testid": 'EvmNetworkControl', type: 'button', onClick: () => setIsOpen(!isOpen), className: unsupportedNetworkClassName }, { children: [jsxRuntime.jsx(UnsupportedNetwork.UnsupportedNetwork, { showMsg: showNetworkName }), jsxRuntime.jsx(Icon.Icon, Object.assign({ color: 'text-primary', size: 'small', className: classNames.classNames('evm-network-control__arrow-icon', {
|
|
56
56
|
'evm-network-control__arrow-icon--active': isOpen,
|
|
57
57
|
}) }, { children: jsxRuntime.jsx(stroke.ReactComponent, {}) }))] })));
|
|
58
58
|
}
|
|
59
59
|
return (jsxRuntime.jsx("div", Object.assign({ "data-testid": 'EvmNetworkControl', onClick: () => network && setIsOpen(!isOpen), className: classNames.classNames('evm-network-control__container', {
|
|
60
60
|
[activeClassName]: isOpen,
|
|
61
|
-
}, className) }, { children:
|
|
61
|
+
}, className) }, { children: currentEvmNetwork.name && ((_a = currentEvmNetwork.iconUrls) === null || _a === void 0 ? void 0 : _a[0]) ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Icon.Icon, Object.assign({ size: 'small' }, { children: jsxRuntime.jsx("img", { src: currentEvmNetwork.iconUrls[0], alt: `${currentEvmNetwork.name} icon` }) })), showNetworkName && (jsxRuntime.jsx(Typography.Typography, Object.assign({ className: 'evm-network-control__network-name', as: 'span', variant: 'body_small' }, { children: currentEvmNetwork.vanityName || currentEvmNetwork.name })))] })) : (jsxRuntime.jsx(UnsupportedNetwork.UnsupportedNetwork, { showMsg: showNetworkName })) })));
|
|
62
62
|
}
|
|
63
63
|
return (jsxRuntime.jsxs("button", Object.assign({ "data-testid": 'EvmNetworkControl', type: 'button', onClick: () => network && setIsOpen(!isOpen), className: classNames.classNames(className, {
|
|
64
64
|
[activeClassName]: isOpen,
|
|
65
65
|
'evm-network-control__container': Boolean(walletConnector === null || walletConnector === void 0 ? void 0 : walletConnector.supportsNetworkSwitching()),
|
|
66
|
-
'evm-network-control__container--error': !(
|
|
67
|
-
}) }, { children: [(
|
|
66
|
+
'evm-network-control__container--error': !(currentEvmNetwork === null || currentEvmNetwork === void 0 ? void 0 : currentEvmNetwork.name),
|
|
67
|
+
}) }, { children: [(currentEvmNetwork === null || currentEvmNetwork === void 0 ? void 0 : currentEvmNetwork.name) && ((_b = currentEvmNetwork === null || currentEvmNetwork === void 0 ? void 0 : currentEvmNetwork.iconUrls) === null || _b === void 0 ? void 0 : _b[0]) ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Icon.Icon, Object.assign({ size: 'small' }, { children: jsxRuntime.jsx("img", { src: currentEvmNetwork.iconUrls[0], alt: `${currentEvmNetwork.name} icon` }) })), showNetworkName && (jsxRuntime.jsx(Typography.Typography, Object.assign({ className: 'evm-network-control__network-name', as: 'span', variant: 'body_small' }, { children: currentEvmNetwork.vanityName || currentEvmNetwork.name })))] })) : (jsxRuntime.jsx(UnsupportedNetwork.UnsupportedNetwork, { showMsg: showNetworkName })), evmNetworks && evmNetworks.length > 1 && (jsxRuntime.jsx(Icon.Icon, Object.assign({ color: 'text-primary', size: 'small', className: classNames.classNames('evm-network-control__arrow-icon', {
|
|
68
68
|
'evm-network-control__arrow-icon--active': isOpen,
|
|
69
69
|
}) }, { children: jsxRuntime.jsx(stroke.ReactComponent, {}) })))] })));
|
|
70
70
|
};
|
|
@@ -35,7 +35,7 @@ import { UnsupportedNetwork } from '../UnsupportedNetwork/UnsupportedNetwork.js'
|
|
|
35
35
|
|
|
36
36
|
const EvmNetworkControl = ({ evmNetworks, className = '', activeClassName = '', network, walletConnector, isOpen, setIsOpen, showNetworkName = false, }) => {
|
|
37
37
|
var _a, _b;
|
|
38
|
-
const
|
|
38
|
+
const currentEvmNetwork = evmNetworks === null || evmNetworks === void 0 ? void 0 : evmNetworks.find((element) => network && element.chainId === parseChainId(network));
|
|
39
39
|
if (evmNetworks && !evmNetworks.length) {
|
|
40
40
|
return (jsx("div", Object.assign({ "data-testid": 'EvmNetworkControl', className: classNames('evm-network-control__container evm-network-control__container--error', className) }, { children: jsx(UnsupportedNetwork, { showMsg: showNetworkName }) })));
|
|
41
41
|
}
|
|
@@ -47,20 +47,20 @@ const EvmNetworkControl = ({ evmNetworks, className = '', activeClassName = '',
|
|
|
47
47
|
[activeClassName]: isOpen,
|
|
48
48
|
'evm-network-control__container': Boolean(walletConnector === null || walletConnector === void 0 ? void 0 : walletConnector.supportsNetworkSwitching()),
|
|
49
49
|
});
|
|
50
|
-
if (!
|
|
50
|
+
if (!currentEvmNetwork) {
|
|
51
51
|
return (jsxs("button", Object.assign({ "data-testid": 'EvmNetworkControl', type: 'button', onClick: () => setIsOpen(!isOpen), className: unsupportedNetworkClassName }, { children: [jsx(UnsupportedNetwork, { showMsg: showNetworkName }), jsx(Icon, Object.assign({ color: 'text-primary', size: 'small', className: classNames('evm-network-control__arrow-icon', {
|
|
52
52
|
'evm-network-control__arrow-icon--active': isOpen,
|
|
53
53
|
}) }, { children: jsx(SvgStroke, {}) }))] })));
|
|
54
54
|
}
|
|
55
55
|
return (jsx("div", Object.assign({ "data-testid": 'EvmNetworkControl', onClick: () => network && setIsOpen(!isOpen), className: classNames('evm-network-control__container', {
|
|
56
56
|
[activeClassName]: isOpen,
|
|
57
|
-
}, className) }, { children:
|
|
57
|
+
}, className) }, { children: currentEvmNetwork.name && ((_a = currentEvmNetwork.iconUrls) === null || _a === void 0 ? void 0 : _a[0]) ? (jsxs(Fragment, { children: [jsx(Icon, Object.assign({ size: 'small' }, { children: jsx("img", { src: currentEvmNetwork.iconUrls[0], alt: `${currentEvmNetwork.name} icon` }) })), showNetworkName && (jsx(Typography, Object.assign({ className: 'evm-network-control__network-name', as: 'span', variant: 'body_small' }, { children: currentEvmNetwork.vanityName || currentEvmNetwork.name })))] })) : (jsx(UnsupportedNetwork, { showMsg: showNetworkName })) })));
|
|
58
58
|
}
|
|
59
59
|
return (jsxs("button", Object.assign({ "data-testid": 'EvmNetworkControl', type: 'button', onClick: () => network && setIsOpen(!isOpen), className: classNames(className, {
|
|
60
60
|
[activeClassName]: isOpen,
|
|
61
61
|
'evm-network-control__container': Boolean(walletConnector === null || walletConnector === void 0 ? void 0 : walletConnector.supportsNetworkSwitching()),
|
|
62
|
-
'evm-network-control__container--error': !(
|
|
63
|
-
}) }, { children: [(
|
|
62
|
+
'evm-network-control__container--error': !(currentEvmNetwork === null || currentEvmNetwork === void 0 ? void 0 : currentEvmNetwork.name),
|
|
63
|
+
}) }, { children: [(currentEvmNetwork === null || currentEvmNetwork === void 0 ? void 0 : currentEvmNetwork.name) && ((_b = currentEvmNetwork === null || currentEvmNetwork === void 0 ? void 0 : currentEvmNetwork.iconUrls) === null || _b === void 0 ? void 0 : _b[0]) ? (jsxs(Fragment, { children: [jsx(Icon, Object.assign({ size: 'small' }, { children: jsx("img", { src: currentEvmNetwork.iconUrls[0], alt: `${currentEvmNetwork.name} icon` }) })), showNetworkName && (jsx(Typography, Object.assign({ className: 'evm-network-control__network-name', as: 'span', variant: 'body_small' }, { children: currentEvmNetwork.vanityName || currentEvmNetwork.name })))] })) : (jsx(UnsupportedNetwork, { showMsg: showNetworkName })), evmNetworks && evmNetworks.length > 1 && (jsx(Icon, Object.assign({ color: 'text-primary', size: 'small', className: classNames('evm-network-control__arrow-icon', {
|
|
64
64
|
'evm-network-control__arrow-icon--active': isOpen,
|
|
65
65
|
}) }, { children: jsx(SvgStroke, {}) })))] })));
|
|
66
66
|
};
|
|
@@ -77,7 +77,7 @@ var useNameService = require('./hooks/useNameService/useNameService.cjs');
|
|
|
77
77
|
|
|
78
78
|
const EMPTY_INITIAL_USER = undefined;
|
|
79
79
|
const DynamicContext = React.createContext(undefined);
|
|
80
|
-
const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, accessDeniedMessageSecondary, apiBaseUrl, appLogoUrl = 'https://demo.dynamic.xyz/assets/dynamic-logo.svg', appName = 'Dynamic Example', cssOverrides, defaultNumberOfWalletsToShow = values.DEFAULT_NUMBER_OF_WALLETS_TO_SHOW, initialAuthenticationMode = 'connect-and-sign', debugError = false, displayTermsOfService = true, newToWeb3WalletChainMap, enableVisitTrackingOnConnectOnly = true, environmentId, eventsCallbacks, evmNetworks, walletsFilter, logLevel = 'WARN', multiWallet = false, notInTheListImageUrl, onboardingImageUrl, policiesConsentInnerComponent, privacyPolicyUrl, signWithEmailWalletName, socialMediaLinkText, socialMediaIconUrl, socialMediaUrl, termsOfServiceUrl, toolkitEnabled, siweStatement, shadowDOMEnabled = true, }, children, theme, }) => {
|
|
80
|
+
const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, accessDeniedMessageSecondary, apiBaseUrl, appLogoUrl = 'https://demo.dynamic.xyz/assets/dynamic-logo.svg', appName = 'Dynamic Example', cssOverrides, defaultNumberOfWalletsToShow = values.DEFAULT_NUMBER_OF_WALLETS_TO_SHOW, initialAuthenticationMode = 'connect-and-sign', debugError = false, displayTermsOfService = true, newToWeb3WalletChainMap, enableVisitTrackingOnConnectOnly = true, environmentId, eventsCallbacks, evmNetworks, walletsFilter, logLevel = 'WARN', multiWallet = false, notInTheListImageUrl, onboardingImageUrl, policiesConsentInnerComponent, privacyPolicyUrl, signWithEmailWalletName, socialMediaLinkText, socialMediaIconUrl, socialMediaUrl, termsOfServiceUrl, toolkitEnabled, siweStatement, shadowDOMEnabled = true, walletConnectors: walletConnectorsProp, }, children, theme, }) => {
|
|
81
81
|
var _a, _b, _c;
|
|
82
82
|
logger.logger.setLogLevel(logLevel);
|
|
83
83
|
walletConnectorCore.logger.setLogLevel(logLevel);
|
|
@@ -115,6 +115,7 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
|
|
|
115
115
|
appName,
|
|
116
116
|
networkConfigurations: serverNetworkConfigurations,
|
|
117
117
|
projectSettings,
|
|
118
|
+
walletConnectorsProp,
|
|
118
119
|
walletUiUtils,
|
|
119
120
|
});
|
|
120
121
|
const [authMode, setAuthMode] = useLocalStorage.useLocalStorage(localStorage$1.AUTH_MODE, initialAuthenticationMode);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Dispatch, SetStateAction, ReactNode } from 'react';
|
|
2
|
-
import { WalletConnector, FetchPublicAddressOpts } from '@dynamic-labs/wallet-connector-core';
|
|
2
|
+
import { WalletConnector, FetchPublicAddressOpts, WalletConnectorsMethod } from '@dynamic-labs/wallet-connector-core';
|
|
3
3
|
import { DynamicJwt, NameServiceData, ProjectSettings } from '@dynamic-labs/sdk-api';
|
|
4
4
|
import { LogLevel } from '@dynamic-labs/logger';
|
|
5
5
|
import { EvmNetwork, NetworkConfigurationMap, WalletUiUtils } from '@dynamic-labs/types';
|
|
@@ -132,9 +132,10 @@ export interface DynamicContextProps {
|
|
|
132
132
|
socialMediaUrl?: string;
|
|
133
133
|
termsOfServiceUrl?: string;
|
|
134
134
|
toolkitEnabled?: boolean;
|
|
135
|
+
walletConnectors?: WalletConnectorsMethod[];
|
|
135
136
|
walletsFilter?: (options: WalletOption[]) => WalletOption[];
|
|
136
137
|
};
|
|
137
138
|
theme?: ThemeData | ThemeSetting;
|
|
138
139
|
}
|
|
139
140
|
export declare const DynamicContext: import("react").Context<IDynamicContext | undefined>;
|
|
140
|
-
export declare const DynamicContextProvider: ({ settings: { accessDeniedMessagePrimary, accessDeniedMessageSecondary, apiBaseUrl, appLogoUrl, appName, cssOverrides, defaultNumberOfWalletsToShow, initialAuthenticationMode, debugError, displayTermsOfService, newToWeb3WalletChainMap, enableVisitTrackingOnConnectOnly, environmentId, eventsCallbacks, evmNetworks, walletsFilter, logLevel, multiWallet, notInTheListImageUrl, onboardingImageUrl, policiesConsentInnerComponent, privacyPolicyUrl, signWithEmailWalletName, socialMediaLinkText, socialMediaIconUrl, socialMediaUrl, termsOfServiceUrl, toolkitEnabled, siweStatement, shadowDOMEnabled, }, children, theme, }: DynamicContextProps) => JSX.Element;
|
|
141
|
+
export declare const DynamicContextProvider: ({ settings: { accessDeniedMessagePrimary, accessDeniedMessageSecondary, apiBaseUrl, appLogoUrl, appName, cssOverrides, defaultNumberOfWalletsToShow, initialAuthenticationMode, debugError, displayTermsOfService, newToWeb3WalletChainMap, enableVisitTrackingOnConnectOnly, environmentId, eventsCallbacks, evmNetworks, walletsFilter, logLevel, multiWallet, notInTheListImageUrl, onboardingImageUrl, policiesConsentInnerComponent, privacyPolicyUrl, signWithEmailWalletName, socialMediaLinkText, socialMediaIconUrl, socialMediaUrl, termsOfServiceUrl, toolkitEnabled, siweStatement, shadowDOMEnabled, walletConnectors: walletConnectorsProp, }, children, theme, }: DynamicContextProps) => JSX.Element;
|
|
@@ -73,7 +73,7 @@ import { useNameService } from './hooks/useNameService/useNameService.js';
|
|
|
73
73
|
|
|
74
74
|
const EMPTY_INITIAL_USER = undefined;
|
|
75
75
|
const DynamicContext = createContext(undefined);
|
|
76
|
-
const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, accessDeniedMessageSecondary, apiBaseUrl, appLogoUrl = 'https://demo.dynamic.xyz/assets/dynamic-logo.svg', appName = 'Dynamic Example', cssOverrides, defaultNumberOfWalletsToShow = DEFAULT_NUMBER_OF_WALLETS_TO_SHOW, initialAuthenticationMode = 'connect-and-sign', debugError = false, displayTermsOfService = true, newToWeb3WalletChainMap, enableVisitTrackingOnConnectOnly = true, environmentId, eventsCallbacks, evmNetworks, walletsFilter, logLevel = 'WARN', multiWallet = false, notInTheListImageUrl, onboardingImageUrl, policiesConsentInnerComponent, privacyPolicyUrl, signWithEmailWalletName, socialMediaLinkText, socialMediaIconUrl, socialMediaUrl, termsOfServiceUrl, toolkitEnabled, siweStatement, shadowDOMEnabled = true, }, children, theme, }) => {
|
|
76
|
+
const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, accessDeniedMessageSecondary, apiBaseUrl, appLogoUrl = 'https://demo.dynamic.xyz/assets/dynamic-logo.svg', appName = 'Dynamic Example', cssOverrides, defaultNumberOfWalletsToShow = DEFAULT_NUMBER_OF_WALLETS_TO_SHOW, initialAuthenticationMode = 'connect-and-sign', debugError = false, displayTermsOfService = true, newToWeb3WalletChainMap, enableVisitTrackingOnConnectOnly = true, environmentId, eventsCallbacks, evmNetworks, walletsFilter, logLevel = 'WARN', multiWallet = false, notInTheListImageUrl, onboardingImageUrl, policiesConsentInnerComponent, privacyPolicyUrl, signWithEmailWalletName, socialMediaLinkText, socialMediaIconUrl, socialMediaUrl, termsOfServiceUrl, toolkitEnabled, siweStatement, shadowDOMEnabled = true, walletConnectors: walletConnectorsProp, }, children, theme, }) => {
|
|
77
77
|
var _a, _b, _c;
|
|
78
78
|
logger.setLogLevel(logLevel);
|
|
79
79
|
logger$1.setLogLevel(logLevel);
|
|
@@ -111,6 +111,7 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
|
|
|
111
111
|
appName,
|
|
112
112
|
networkConfigurations: serverNetworkConfigurations,
|
|
113
113
|
projectSettings,
|
|
114
|
+
walletConnectorsProp,
|
|
114
115
|
walletUiUtils,
|
|
115
116
|
});
|
|
116
117
|
const [authMode, setAuthMode] = useLocalStorage(AUTH_MODE, initialAuthenticationMode);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { isNetworkUnsupported } from './isNetworkUnsupported';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var utils = require('@dynamic-labs/utils');
|
|
6
|
+
|
|
7
|
+
// Network is not supported if:
|
|
8
|
+
// - its undefined
|
|
9
|
+
// - its not in evmNetworks
|
|
10
|
+
const isNetworkUnsupported = (network, evmNetworks) => !(evmNetworks === null || evmNetworks === void 0 ? void 0 : evmNetworks.find((element) => network && element.chainId === utils.parseChainId(network)));
|
|
11
|
+
|
|
12
|
+
exports.isNetworkUnsupported = isNetworkUnsupported;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { parseChainId } from '@dynamic-labs/utils';
|
|
2
|
+
|
|
3
|
+
// Network is not supported if:
|
|
4
|
+
// - its undefined
|
|
5
|
+
// - its not in evmNetworks
|
|
6
|
+
const isNetworkUnsupported = (network, evmNetworks) => !(evmNetworks === null || evmNetworks === void 0 ? void 0 : evmNetworks.find((element) => network && element.chainId === parseChainId(network)));
|
|
7
|
+
|
|
8
|
+
export { isNetworkUnsupported };
|
|
@@ -4,16 +4,39 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var _tslib = require('../../../../../_virtual/_tslib.cjs');
|
|
6
6
|
var React = require('react');
|
|
7
|
+
require('@dynamic-labs/sdk-api');
|
|
8
|
+
require('../../../shared/logger.cjs');
|
|
9
|
+
var getFromLS = require('../../../shared/utils/functions/storage/getFromLS.cjs');
|
|
10
|
+
require('@dynamic-labs/iconic');
|
|
11
|
+
require('@dynamic-labs/wallet-connector-core');
|
|
12
|
+
require('react/jsx-runtime');
|
|
13
|
+
require('../../../context/ViewContext/ViewContext.cjs');
|
|
14
|
+
require('@dynamic-labs/utils');
|
|
15
|
+
var localStorage = require('../../constants/localStorage.cjs');
|
|
16
|
+
require('../../constants/colors.cjs');
|
|
17
|
+
require('ethers');
|
|
18
|
+
require('../../../shared/consts/index.cjs');
|
|
7
19
|
var handleUnlinkHelper = require('../../functions/handleUnlinkHelper/handleUnlinkHelper.cjs');
|
|
8
20
|
var isSameWalletName = require('../../functions/isSameWalletName/isSameWalletName.cjs');
|
|
9
21
|
|
|
10
22
|
const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWalletId, secondaryWallets, setUser, }) => {
|
|
11
23
|
const callback = React.useCallback((walletId) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
12
|
-
|
|
24
|
+
var _a;
|
|
25
|
+
// when we call handleUnlinkWallet on the same execution stack as setPrimaryWallet, the value of
|
|
26
|
+
// primaryWalletId coming from the DynamicContext will be the old one in this callback function
|
|
27
|
+
// so we need to get the latest value from LS
|
|
28
|
+
// e.g. primary wallet id is 1234, and we have a function like this:
|
|
29
|
+
// async function setPrimaryWalletAndUnlink() {
|
|
30
|
+
// await setPrimaryWallet('5678');
|
|
31
|
+
// handleUnlinkWallet('1234');
|
|
32
|
+
// }
|
|
33
|
+
// without fetching from LS, primaryWalletId would still be 1234 when handleUnlinkWallet runs in the example above
|
|
34
|
+
const currentPrimaryWalletId = (_a = getFromLS.getFromLS(localStorage.PRIMARY_WALLET_ID)) !== null && _a !== void 0 ? _a : primaryWalletId;
|
|
35
|
+
if (walletId === currentPrimaryWalletId)
|
|
13
36
|
return;
|
|
14
37
|
const newUser = yield handleUnlinkHelper.handleUnlinkHelper({
|
|
15
38
|
environmentId,
|
|
16
|
-
primaryWalletId,
|
|
39
|
+
primaryWalletId: currentPrimaryWalletId,
|
|
17
40
|
walletId,
|
|
18
41
|
});
|
|
19
42
|
if (newUser) {
|
|
@@ -1,15 +1,38 @@
|
|
|
1
1
|
import { __awaiter } from '../../../../../_virtual/_tslib.js';
|
|
2
2
|
import { useCallback } from 'react';
|
|
3
|
+
import '@dynamic-labs/sdk-api';
|
|
4
|
+
import '../../../shared/logger.js';
|
|
5
|
+
import { getFromLS } from '../../../shared/utils/functions/storage/getFromLS.js';
|
|
6
|
+
import '@dynamic-labs/iconic';
|
|
7
|
+
import '@dynamic-labs/wallet-connector-core';
|
|
8
|
+
import 'react/jsx-runtime';
|
|
9
|
+
import '../../../context/ViewContext/ViewContext.js';
|
|
10
|
+
import '@dynamic-labs/utils';
|
|
11
|
+
import { PRIMARY_WALLET_ID } from '../../constants/localStorage.js';
|
|
12
|
+
import '../../constants/colors.js';
|
|
13
|
+
import 'ethers';
|
|
14
|
+
import '../../../shared/consts/index.js';
|
|
3
15
|
import { handleUnlinkHelper } from '../../functions/handleUnlinkHelper/handleUnlinkHelper.js';
|
|
4
16
|
import { isSameWalletName } from '../../functions/isSameWalletName/isSameWalletName.js';
|
|
5
17
|
|
|
6
18
|
const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWalletId, secondaryWallets, setUser, }) => {
|
|
7
19
|
const callback = useCallback((walletId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
8
|
-
|
|
20
|
+
var _a;
|
|
21
|
+
// when we call handleUnlinkWallet on the same execution stack as setPrimaryWallet, the value of
|
|
22
|
+
// primaryWalletId coming from the DynamicContext will be the old one in this callback function
|
|
23
|
+
// so we need to get the latest value from LS
|
|
24
|
+
// e.g. primary wallet id is 1234, and we have a function like this:
|
|
25
|
+
// async function setPrimaryWalletAndUnlink() {
|
|
26
|
+
// await setPrimaryWallet('5678');
|
|
27
|
+
// handleUnlinkWallet('1234');
|
|
28
|
+
// }
|
|
29
|
+
// without fetching from LS, primaryWalletId would still be 1234 when handleUnlinkWallet runs in the example above
|
|
30
|
+
const currentPrimaryWalletId = (_a = getFromLS(PRIMARY_WALLET_ID)) !== null && _a !== void 0 ? _a : primaryWalletId;
|
|
31
|
+
if (walletId === currentPrimaryWalletId)
|
|
9
32
|
return;
|
|
10
33
|
const newUser = yield handleUnlinkHelper({
|
|
11
34
|
environmentId,
|
|
12
|
-
primaryWalletId,
|
|
35
|
+
primaryWalletId: currentPrimaryWalletId,
|
|
13
36
|
walletId,
|
|
14
37
|
});
|
|
15
38
|
if (newUser) {
|
|
@@ -6,7 +6,7 @@ var _tslib = require('../../../../../_virtual/_tslib.cjs');
|
|
|
6
6
|
var React = require('react');
|
|
7
7
|
var data = require('../../../views/WalletList/data.cjs');
|
|
8
8
|
|
|
9
|
-
const useWallets = ({ projectSettings, appLogoUrl, appName, networkConfigurations, walletUiUtils, }) => {
|
|
9
|
+
const useWallets = ({ projectSettings, appLogoUrl, appName, networkConfigurations, walletUiUtils, walletConnectorsProp, }) => {
|
|
10
10
|
const [wallets, setWallets] = React.useState([]);
|
|
11
11
|
React.useEffect(() => {
|
|
12
12
|
const getWalletList = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -17,6 +17,7 @@ const useWallets = ({ projectSettings, appLogoUrl, appName, networkConfiguration
|
|
|
17
17
|
customerApiProviders: projectSettings.providers || [],
|
|
18
18
|
networkConfigurations,
|
|
19
19
|
skipMemo: true,
|
|
20
|
+
walletConnectorsProp: walletConnectorsProp !== null && walletConnectorsProp !== void 0 ? walletConnectorsProp : [],
|
|
20
21
|
walletUiUtils,
|
|
21
22
|
});
|
|
22
23
|
const notInstalledWallets = yield data.getNotInstalledWallets(projectSettings, {
|
|
@@ -25,14 +26,26 @@ const useWallets = ({ projectSettings, appLogoUrl, appName, networkConfiguration
|
|
|
25
26
|
customerApiProviders: projectSettings.providers || [],
|
|
26
27
|
networkConfigurations,
|
|
27
28
|
skipMemo: true,
|
|
29
|
+
walletConnectorsProp: walletConnectorsProp !== null && walletConnectorsProp !== void 0 ? walletConnectorsProp : [],
|
|
28
30
|
walletUiUtils,
|
|
29
31
|
});
|
|
30
|
-
const unfilteredWallets = [
|
|
32
|
+
const unfilteredWallets = [
|
|
33
|
+
...installedWallets,
|
|
34
|
+
...notInstalledWallets,
|
|
35
|
+
];
|
|
31
36
|
setWallets(unfilteredWallets);
|
|
32
37
|
}
|
|
33
38
|
});
|
|
34
39
|
getWalletList();
|
|
35
|
-
},
|
|
40
|
+
},
|
|
41
|
+
// Cannot include walletUiUtils in the dependency array because it will cause an infinite loop
|
|
42
|
+
[
|
|
43
|
+
projectSettings,
|
|
44
|
+
appLogoUrl,
|
|
45
|
+
appName,
|
|
46
|
+
networkConfigurations,
|
|
47
|
+
walletConnectorsProp,
|
|
48
|
+
]);
|
|
36
49
|
return { wallets };
|
|
37
50
|
};
|
|
38
51
|
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { ProjectSettings } from '@dynamic-labs/sdk-api';
|
|
2
2
|
import { NetworkConfigurationMap, WalletUiUtils } from '@dynamic-labs/types';
|
|
3
|
+
import { WalletConnectorsMethod } from '@dynamic-labs/wallet-connector-core';
|
|
3
4
|
import { WalletOption } from '../../../shared';
|
|
4
5
|
type Props = {
|
|
5
6
|
appLogoUrl?: string;
|
|
6
7
|
appName?: string;
|
|
7
8
|
networkConfigurations: NetworkConfigurationMap | undefined;
|
|
8
9
|
projectSettings: ProjectSettings | undefined;
|
|
10
|
+
walletConnectorsProp?: WalletConnectorsMethod[];
|
|
9
11
|
walletUiUtils: WalletUiUtils;
|
|
10
12
|
};
|
|
11
|
-
export declare const useWallets: ({ projectSettings, appLogoUrl, appName, networkConfigurations, walletUiUtils, }: Props) => {
|
|
13
|
+
export declare const useWallets: ({ projectSettings, appLogoUrl, appName, networkConfigurations, walletUiUtils, walletConnectorsProp, }: Props) => {
|
|
12
14
|
wallets: WalletOption[];
|
|
13
15
|
};
|
|
14
16
|
export {};
|
|
@@ -2,7 +2,7 @@ import { __awaiter } from '../../../../../_virtual/_tslib.js';
|
|
|
2
2
|
import { useState, useEffect } from 'react';
|
|
3
3
|
import { getInstalledWallets, getNotInstalledWallets } from '../../../views/WalletList/data.js';
|
|
4
4
|
|
|
5
|
-
const useWallets = ({ projectSettings, appLogoUrl, appName, networkConfigurations, walletUiUtils, }) => {
|
|
5
|
+
const useWallets = ({ projectSettings, appLogoUrl, appName, networkConfigurations, walletUiUtils, walletConnectorsProp, }) => {
|
|
6
6
|
const [wallets, setWallets] = useState([]);
|
|
7
7
|
useEffect(() => {
|
|
8
8
|
const getWalletList = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -13,6 +13,7 @@ const useWallets = ({ projectSettings, appLogoUrl, appName, networkConfiguration
|
|
|
13
13
|
customerApiProviders: projectSettings.providers || [],
|
|
14
14
|
networkConfigurations,
|
|
15
15
|
skipMemo: true,
|
|
16
|
+
walletConnectorsProp: walletConnectorsProp !== null && walletConnectorsProp !== void 0 ? walletConnectorsProp : [],
|
|
16
17
|
walletUiUtils,
|
|
17
18
|
});
|
|
18
19
|
const notInstalledWallets = yield getNotInstalledWallets(projectSettings, {
|
|
@@ -21,14 +22,26 @@ const useWallets = ({ projectSettings, appLogoUrl, appName, networkConfiguration
|
|
|
21
22
|
customerApiProviders: projectSettings.providers || [],
|
|
22
23
|
networkConfigurations,
|
|
23
24
|
skipMemo: true,
|
|
25
|
+
walletConnectorsProp: walletConnectorsProp !== null && walletConnectorsProp !== void 0 ? walletConnectorsProp : [],
|
|
24
26
|
walletUiUtils,
|
|
25
27
|
});
|
|
26
|
-
const unfilteredWallets = [
|
|
28
|
+
const unfilteredWallets = [
|
|
29
|
+
...installedWallets,
|
|
30
|
+
...notInstalledWallets,
|
|
31
|
+
];
|
|
27
32
|
setWallets(unfilteredWallets);
|
|
28
33
|
}
|
|
29
34
|
});
|
|
30
35
|
getWalletList();
|
|
31
|
-
},
|
|
36
|
+
},
|
|
37
|
+
// Cannot include walletUiUtils in the dependency array because it will cause an infinite loop
|
|
38
|
+
[
|
|
39
|
+
projectSettings,
|
|
40
|
+
appLogoUrl,
|
|
41
|
+
appName,
|
|
42
|
+
networkConfigurations,
|
|
43
|
+
walletConnectorsProp,
|
|
44
|
+
]);
|
|
32
45
|
return { wallets };
|
|
33
46
|
};
|
|
34
47
|
|
|
@@ -68,7 +68,7 @@ const WalletList = ({ isWalletConnectList = false, }) => {
|
|
|
68
68
|
};
|
|
69
69
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("div", Object.assign({ className: 'wallet-list__container' }, { children: [error && jsxRuntime.jsx(ErrorContainer.ErrorContainer, { children: error }), !projectSettings ? (jsxRuntime.jsx(Skeleton.Skeleton, { className: 'wallet-list__search-skeleton' })) : (isSearchEnabled && (jsxRuntime.jsx(Search.Search, { label: `Search through ${numberOfWallets} wallets...`, value: filterValue, onChange: ({ target: { value } }) => setFilterValue(value), onClickClear: () => setFilterValue('') }))), jsxRuntime.jsxs("div", Object.assign({ className: classNames.classNames('wallet-list__scroll-container', {
|
|
70
70
|
'wallet-list__scroll-container--full-height': isSearchEnabled,
|
|
71
|
-
}), "data-testid": 'wallet-list-scroll-container', ref: walletListScrollRef, onScroll: handleScroll }, { children: [!projectSettings ? (jsxRuntime.jsx(Skeleton.Skeleton, { count: 10, className: 'wallet-list__tile-skeleton' })) : (jsxRuntime.
|
|
71
|
+
}), "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: [walletsList.length === 0 && (jsxRuntime.jsx(ErrorContainer.ErrorContainer, { children: "Oops, no login methods have been configured." })), walletsList.map((wallet) => (jsxRuntime.jsx(WalletListItem.WalletListItem, { wallet: wallet, connectedWallets: connectedWallets, usingMultiWallet: isUsingMultiWallet, onResetSearchValue: setFilterValue }, wallet.key)))] })), isSearchEnabled && !filterValue && projectSettings && (jsxRuntime.jsx(SearchInstead.SearchInstead, {}))] }))] })), noDefaultFooter && (jsxRuntime.jsx("div", { className: classNames.classNames('wallet-list__tiny-footer', {
|
|
72
72
|
'wallet-list__tiny-footer--hidden': footerIsVisible,
|
|
73
73
|
}), "data-testid": 'wallet-list-tiny-footer' }))] }));
|
|
74
74
|
};
|
|
@@ -64,7 +64,7 @@ const WalletList = ({ isWalletConnectList = false, }) => {
|
|
|
64
64
|
};
|
|
65
65
|
return (jsxs(Fragment, { children: [jsxs("div", Object.assign({ className: 'wallet-list__container' }, { children: [error && jsx(ErrorContainer, { children: error }), !projectSettings ? (jsx(Skeleton, { className: 'wallet-list__search-skeleton' })) : (isSearchEnabled && (jsx(Search, { label: `Search through ${numberOfWallets} wallets...`, value: filterValue, onChange: ({ target: { value } }) => setFilterValue(value), onClickClear: () => setFilterValue('') }))), jsxs("div", Object.assign({ className: classNames('wallet-list__scroll-container', {
|
|
66
66
|
'wallet-list__scroll-container--full-height': isSearchEnabled,
|
|
67
|
-
}), "data-testid": 'wallet-list-scroll-container', ref: walletListScrollRef, onScroll: handleScroll }, { children: [!projectSettings ? (jsx(Skeleton, { count: 10, className: 'wallet-list__tile-skeleton' })) : (
|
|
67
|
+
}), "data-testid": 'wallet-list-scroll-container', ref: walletListScrollRef, onScroll: handleScroll }, { children: [!projectSettings ? (jsx(Skeleton, { count: 10, className: 'wallet-list__tile-skeleton' })) : (jsxs(Fragment, { children: [walletsList.length === 0 && (jsx(ErrorContainer, { children: "Oops, no login methods have been configured." })), walletsList.map((wallet) => (jsx(WalletListItem, { wallet: wallet, connectedWallets: connectedWallets, usingMultiWallet: isUsingMultiWallet, onResetSearchValue: setFilterValue }, wallet.key)))] })), isSearchEnabled && !filterValue && projectSettings && (jsx(SearchInstead, {}))] }))] })), noDefaultFooter && (jsx("div", { className: classNames('wallet-list__tiny-footer', {
|
|
68
68
|
'wallet-list__tiny-footer--hidden': footerIsVisible,
|
|
69
69
|
}), "data-testid": 'wallet-list-tiny-footer' }))] }));
|
|
70
70
|
};
|