@broxus/evm-connect 1.12.8 → 1.12.9
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/dist/index.cjs.js +2 -2
- package/dist/index.esm.js +2 -2
- package/lib/cjs/components/EvmConnectDialog/index.js +4 -7
- package/lib/cjs/components/EvmConnector/index.js +2 -2
- package/lib/cjs/components/EvmProvidersDispatcher/ConnectionRequest/index.js +5 -4
- package/lib/cjs/components/EvmProvidersDispatcher/ProviderButton/index.js +8 -2
- package/lib/cjs/components/EvmProvidersDispatcher/index.js +10 -0
- package/lib/cjs/context/EvmWalletProvidersContext.js +7 -6
- package/lib/cjs/intl/index.js +4 -0
- package/lib/esm/components/EvmConnectButton/index.d.ts +0 -1
- package/lib/esm/components/EvmConnectDialog/index.js +4 -7
- package/lib/esm/components/EvmConnector/index.js +2 -2
- package/lib/esm/components/EvmProvidersDispatcher/ConnectionRequest/index.d.ts +3 -1
- package/lib/esm/components/EvmProvidersDispatcher/ConnectionRequest/index.js +4 -3
- package/lib/esm/components/EvmProvidersDispatcher/ProviderButton/index.js +9 -3
- package/lib/esm/components/EvmProvidersDispatcher/index.js +7 -0
- package/lib/esm/context/EvmWalletProvidersContext.d.ts +5 -4
- package/lib/esm/context/EvmWalletProvidersContext.js +7 -6
- package/lib/esm/intl/index.js +4 -0
- package/package.json +2 -2
|
@@ -54,30 +54,27 @@ exports.EvmConnectDialog = (0, mobx_react_lite_1.observer)(({ className, open, t
|
|
|
54
54
|
(0, react_uikit_1.removeModalMode)('evm-modal-page');
|
|
55
55
|
walletProviders.reset();
|
|
56
56
|
};
|
|
57
|
-
const close = () => {
|
|
58
|
-
onClose?.();
|
|
59
|
-
};
|
|
60
57
|
React.useEffect(() => {
|
|
61
58
|
if (open) {
|
|
62
59
|
(0, react_uikit_1.addModalMode)('evm-modal-page');
|
|
63
60
|
}
|
|
64
61
|
}, [open]);
|
|
65
62
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
66
|
-
React.useEffect(() =>
|
|
63
|
+
React.useEffect(() => onClosed, []);
|
|
67
64
|
if (type === 'drawer') {
|
|
68
65
|
return (React.createElement(react_uikit_1.Drawer, { className: className, destroyOnClose: true, keyboard: !walletProviders.connectingProvider, maskClosable: !walletProviders.connectingProvider, motion: {
|
|
69
66
|
motionLeave: true,
|
|
70
67
|
removeOnLeave: true,
|
|
71
68
|
// eslint-disable-next-line sort-keys
|
|
72
69
|
onLeaveEnd: onClosed,
|
|
73
|
-
}, open: open, placement: "bottom", push: false, rootClassName: "evm-connect-drawer", onClose:
|
|
70
|
+
}, open: open, placement: "bottom", push: false, rootClassName: "evm-connect-drawer", onClose: onClose },
|
|
74
71
|
React.createElement(react_components_1.Close, { kind: "drawer", ratio: 0.9, onClick: onClose }),
|
|
75
72
|
React.createElement(react_uikit_1.Component, { className: "uk-drawer-header" },
|
|
76
73
|
React.createElement(react_uikit_1.Component, { className: "uk-drawer-title" }, intl.formatMessage(intl_1.default.EVM_CONNECT_DISPATCHER_POPUP_TITLE))),
|
|
77
74
|
React.createElement("div", { className: "uk-drawer-body" },
|
|
78
75
|
React.createElement(components_1.EvmProvidersDispatcher, null)),
|
|
79
|
-
React.createElement(react_uikit_1.Text, { align: "center", className: "uk-drawer-footer uk-margin-top", component: "footer", kind: "meta" }, walletProviders.agreementsNote || intl.formatMessage(intl_1.default.EVM_CONNECT_AGREEMENTS_NOTE))));
|
|
76
|
+
walletProviders.agreementsNote !== false && (React.createElement(react_uikit_1.Text, { align: "center", className: "uk-drawer-footer uk-margin-top", component: "footer", kind: "meta" }, walletProviders.agreementsNote || intl.formatMessage(intl_1.default.EVM_CONNECT_AGREEMENTS_NOTE)))));
|
|
80
77
|
}
|
|
81
|
-
return (React.createElement(react_uikit_1.Modal, { centered: true, className: (0, classnames_1.default)('evm-connect-modal', className), closeIcon: React.createElement(react_components_1.Close, { kind: "modal", ratio: 0.9, onClick:
|
|
78
|
+
return (React.createElement(react_uikit_1.Modal, { centered: true, className: (0, classnames_1.default)('evm-connect-modal', className), closeIcon: React.createElement(react_components_1.Close, { kind: "modal", ratio: 0.9, onClick: onClose }), destroyOnClose: true, footer: walletProviders.agreementsNote !== false && (React.createElement(react_uikit_1.Text, { align: "center", component: "div", kind: "meta" }, walletProviders.agreementsNote || intl.formatMessage(intl_1.default.EVM_CONNECT_AGREEMENTS_NOTE))), keyboard: !walletProviders.connectingProvider, maskClosable: !walletProviders.connectingProvider, title: intl.formatMessage(intl_1.default.EVM_CONNECT_DISPATCHER_POPUP_TITLE), visible: open, width: 380, onClose: onClose, onClosed: onClosed },
|
|
82
79
|
React.createElement(components_1.EvmProvidersDispatcher, null)));
|
|
83
80
|
});
|
|
@@ -64,7 +64,7 @@ exports.EvmConnector = (0, mobx_react_lite_1.observer)((props) => {
|
|
|
64
64
|
drop.current?.close();
|
|
65
65
|
await walletService.disconnect();
|
|
66
66
|
if (recentMeta) {
|
|
67
|
-
setRecentMeta({ ...recentMeta, disconnected: true });
|
|
67
|
+
setRecentMeta({ ...recentMeta, disconnected: true }, walletProviders.recentMetaStorageKey);
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
};
|
|
@@ -104,7 +104,7 @@ exports.EvmConnector = (0, mobx_react_lite_1.observer)((props) => {
|
|
|
104
104
|
}) })) })),
|
|
105
105
|
React.createElement(react_uikit_1.Flex, { alignItems: "center", className: "evm-connect-connector-suffix" },
|
|
106
106
|
suffix,
|
|
107
|
-
|
|
107
|
+
!isDisconnected && showDropMenu && (React.createElement(react_uikit_1.Dropdown, { ref: drop, action: ['click'], hideAction: ['click'], overlayClassName: "evm-connect-dropdown", overlay: (React.createElement(react_uikit_1.List, { className: "uk-margin-remove", size: "large" },
|
|
108
108
|
!standalone && (React.createElement(react_uikit_1.List.Item, { key: "connect-wallet" },
|
|
109
109
|
React.createElement(EvmConnectButton_1.EvmConnectButton, { className: "evm-connect-change-wallet", network: network, popupType: popupType, type: "link", onOpen: changeWallet }, changeWalletButtonText))),
|
|
110
110
|
React.createElement(react_uikit_1.List.Item, null,
|
|
@@ -36,16 +36,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.ConnectionRequest =
|
|
39
|
+
exports.ConnectionRequest = void 0;
|
|
40
40
|
const react_components_1 = require("@broxus/react-components");
|
|
41
41
|
const react_uikit_1 = require("@broxus/react-uikit");
|
|
42
42
|
const classnames_1 = __importDefault(require("classnames"));
|
|
43
|
+
const mobx_react_lite_1 = require("mobx-react-lite");
|
|
43
44
|
const React = __importStar(require("react"));
|
|
44
45
|
const react_intl_1 = require("react-intl");
|
|
45
46
|
const context_1 = require("../../../context");
|
|
46
47
|
const intl_1 = __importDefault(require("../../../intl"));
|
|
47
48
|
require("./index.css");
|
|
48
|
-
|
|
49
|
+
exports.ConnectionRequest = (0, mobx_react_lite_1.observer)(() => {
|
|
49
50
|
const intl = (0, react_intl_1.useIntl)();
|
|
50
51
|
const walletProviders = (0, context_1.useEvmWalletProviders)();
|
|
51
52
|
const tryAgain = async () => {
|
|
@@ -69,6 +70,6 @@ function ConnectionRequest() {
|
|
|
69
70
|
})),
|
|
70
71
|
React.createElement("div", null, intl.formatMessage(intl_1.default.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_NOTE)))) : (React.createElement(react_uikit_1.Text, { align: "center" },
|
|
71
72
|
React.createElement("h4", { className: "evm-connect-connection-request-title uk-text-danger" }, intl.formatMessage(intl_1.default.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_FAILED_TITLE)),
|
|
72
|
-
React.createElement("div", { className: "uk-margin-small-bottom" }, walletProviders.error.message ? (React.createElement(react_uikit_1.Text, { color: "danger" }, walletProviders.error.message)) : intl.formatMessage(intl_1.default.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_FAILED_NOTE)),
|
|
73
|
+
React.createElement("div", { className: "uk-margin-small-bottom" }, walletProviders.error.message ? (React.createElement(react_uikit_1.Text, { color: "danger" }, walletProviders.error.message)) : (intl.formatMessage(intl_1.default.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_FAILED_NOTE))),
|
|
73
74
|
React.createElement(react_uikit_1.Button, { className: "evm-connect-connection-request-button", type: "default", onClick: tryAgain }, intl.formatMessage(intl_1.default.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_TRY_AGAIN_BTN_TEXT)))))));
|
|
74
|
-
}
|
|
75
|
+
});
|
|
@@ -66,13 +66,19 @@ exports.ProviderButton = (0, mobx_react_lite_1.observer)((props) => {
|
|
|
66
66
|
onSelectProvider?.(providerConfig);
|
|
67
67
|
}
|
|
68
68
|
};
|
|
69
|
+
// eslint-disable-next-line max-len
|
|
70
|
+
const isInitializing = providerConfig.connector.isInitializing === undefined || providerConfig.connector.isInitializing;
|
|
69
71
|
React.useEffect(() => (0, mobx_1.reaction)(() => providerConfig.connector, connector => {
|
|
70
72
|
if (connector.type !== types_1.EthereumConnectionType.WALLET_CONNECT_V2) {
|
|
71
73
|
setHasProvider(connector.provider != null);
|
|
72
74
|
}
|
|
73
75
|
}, { fireImmediately: true }), [providerConfig.connector]);
|
|
74
|
-
if (hasProvider
|
|
75
|
-
return (React.createElement(react_uikit_1.Button, { className: "evm-connect-provider-button", disabled: true },
|
|
76
|
+
if (!hasProvider && isInitializing) {
|
|
77
|
+
return (React.createElement(react_uikit_1.Button, { className: "evm-connect-provider-button", disabled: true },
|
|
78
|
+
React.createElement("span", { className: "tvm-connect-provider-icon" }, typeof providerConfig.info.icon === 'string' ? (React.createElement(react_components_1.TokenIcon, { iconUrl: providerConfig.info.icon, size: 28 })) : providerConfig.info.icon),
|
|
79
|
+
React.createElement("span", { className: "tvm-connect-provider-title" }, intl.formatMessage(intl_1.default.EVM_CONNECT_INITIALIZING_HINT)),
|
|
80
|
+
React.createElement("span", null,
|
|
81
|
+
React.createElement(react_uikit_1.Spinner, { ratio: 0.8 }))));
|
|
76
82
|
}
|
|
77
83
|
const ua = (0, js_utils_1.getUserAgent)();
|
|
78
84
|
const homepage = providerConfig.info.links?.homepage;
|
|
@@ -32,17 +32,23 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
32
|
return result;
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
35
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
39
|
exports.EvmProvidersDispatcher = void 0;
|
|
37
40
|
const react_uikit_1 = require("@broxus/react-uikit");
|
|
38
41
|
const mobx_react_lite_1 = require("mobx-react-lite");
|
|
39
42
|
const React = __importStar(require("react"));
|
|
43
|
+
const react_intl_1 = require("react-intl");
|
|
40
44
|
const ConnectionRequest_1 = require("../../components/EvmProvidersDispatcher/ConnectionRequest");
|
|
41
45
|
const ProviderButton_1 = require("../../components/EvmProvidersDispatcher/ProviderButton");
|
|
42
46
|
const context_1 = require("../../context");
|
|
43
47
|
const hooks_1 = require("../../hooks");
|
|
48
|
+
const intl_1 = __importDefault(require("../../intl"));
|
|
44
49
|
require("./index.css");
|
|
45
50
|
exports.EvmProvidersDispatcher = (0, mobx_react_lite_1.observer)(() => {
|
|
51
|
+
const intl = (0, react_intl_1.useIntl)();
|
|
46
52
|
const walletService = (0, context_1.useEvmWalletService)();
|
|
47
53
|
const walletProviders = (0, context_1.useEvmWalletProviders)();
|
|
48
54
|
const orderedProviders = (0, hooks_1.useOrderedConnections)(walletService.providers ?? []);
|
|
@@ -54,6 +60,10 @@ exports.EvmProvidersDispatcher = (0, mobx_react_lite_1.observer)(() => {
|
|
|
54
60
|
dispatcher.current.style.height = height ? `${height}px` : '';
|
|
55
61
|
}
|
|
56
62
|
}, [walletProviders.connectingProvider, walletProviders.error]);
|
|
63
|
+
if (walletService.providers.length === 0) {
|
|
64
|
+
return (React.createElement("div", { ref: dispatcher, className: "tvm-connect-providers-dispatcher" },
|
|
65
|
+
React.createElement("div", { className: "uk-padding-large" }, intl.formatMessage(intl_1.default.EVM_CONNECT_DISPATCHER_POPUP_NO_PROVIDERS_HINT))));
|
|
66
|
+
}
|
|
57
67
|
return (React.createElement("div", { ref: dispatcher, className: "evm-connect-providers-dispatcher" },
|
|
58
68
|
React.createElement("div", { ref: content }, walletProviders.connectingProvider ? (React.createElement(ConnectionRequest_1.ConnectionRequest, null)) : (React.createElement(react_uikit_1.List, { className: "evm-connect-providers-list" }, orderedProviders.map(providerConfig => (React.createElement(react_uikit_1.List.Item, { key: providerConfig.id },
|
|
59
69
|
React.createElement(ProviderButton_1.ProviderButton, { providerConfig: providerConfig })))))))));
|
|
@@ -58,15 +58,16 @@ exports.EvmWalletProvidersProvider = (0, mobx_react_lite_1.observer)(({ agreemen
|
|
|
58
58
|
const prevConnector = walletService.connector;
|
|
59
59
|
const recentMeta = (0, hooks_1.getRecentConnectionMeta)(recentMetaStorageKey);
|
|
60
60
|
// eslint-disable-next-line no-nested-ternary
|
|
61
|
-
const
|
|
61
|
+
const networkParams = network ?? (recentMeta?.chainId
|
|
62
62
|
? walletService.networks.find(_network => _network.chainId === recentMeta.chainId) ?? 1
|
|
63
63
|
: 1);
|
|
64
|
-
(0, js_utils_1.debug)(`Try to activate ${providerConfig.info.name} connection with chain`, typeof
|
|
65
|
-
await providerConfig.connector?.connect(typeof
|
|
66
|
-
|
|
67
|
-
|
|
64
|
+
(0, js_utils_1.debug)(`Try to activate ${providerConfig.info.name} connection with chain`, typeof networkParams === 'number' ? networkParams : networkParams?.chainId);
|
|
65
|
+
await providerConfig.connector?.connect(typeof networkParams === 'number'
|
|
66
|
+
? networkParams
|
|
67
|
+
: networkParams && (0, utils_1.convertNetworkToChainParams)(networkParams), { onConnect });
|
|
68
|
+
if (walletService.providerId && providerConfig.id !== walletService.providerId) {
|
|
69
|
+
await prevConnector?.disconnect({ force: true });
|
|
68
70
|
}
|
|
69
|
-
await onConnect?.(providerConfig.connector);
|
|
70
71
|
(0, hooks_1.storeRecentConnectionMeta)({
|
|
71
72
|
chainId: providerConfig.connector.chainId?.toString(),
|
|
72
73
|
disconnected: false,
|
package/lib/cjs/intl/index.js
CHANGED
|
@@ -111,4 +111,8 @@ exports.default = (0, react_intl_1.defineMessages)({
|
|
|
111
111
|
defaultMessage: 'Recent',
|
|
112
112
|
id: 'EVM_CONNECT_DISPATCHER_POPUP_RECENT_HINT',
|
|
113
113
|
},
|
|
114
|
+
EVM_CONNECT_DISPATCHER_POPUP_NO_PROVIDERS_HINT: {
|
|
115
|
+
defaultMessage: 'It seems that no provider was configured. Please ensure the service settings are correct.',
|
|
116
|
+
id: 'EVM_CONNECT_DISPATCHER_POPUP_NO_PROVIDERS_HINT',
|
|
117
|
+
},
|
|
114
118
|
});
|
|
@@ -15,30 +15,27 @@ export const EvmConnectDialog = observer(({ className, open, type, onClose }) =>
|
|
|
15
15
|
removeModalMode('evm-modal-page');
|
|
16
16
|
walletProviders.reset();
|
|
17
17
|
};
|
|
18
|
-
const close = () => {
|
|
19
|
-
onClose?.();
|
|
20
|
-
};
|
|
21
18
|
React.useEffect(() => {
|
|
22
19
|
if (open) {
|
|
23
20
|
addModalMode('evm-modal-page');
|
|
24
21
|
}
|
|
25
22
|
}, [open]);
|
|
26
23
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
27
|
-
React.useEffect(() =>
|
|
24
|
+
React.useEffect(() => onClosed, []);
|
|
28
25
|
if (type === 'drawer') {
|
|
29
26
|
return (React.createElement(Drawer, { className: className, destroyOnClose: true, keyboard: !walletProviders.connectingProvider, maskClosable: !walletProviders.connectingProvider, motion: {
|
|
30
27
|
motionLeave: true,
|
|
31
28
|
removeOnLeave: true,
|
|
32
29
|
// eslint-disable-next-line sort-keys
|
|
33
30
|
onLeaveEnd: onClosed,
|
|
34
|
-
}, open: open, placement: "bottom", push: false, rootClassName: "evm-connect-drawer", onClose:
|
|
31
|
+
}, open: open, placement: "bottom", push: false, rootClassName: "evm-connect-drawer", onClose: onClose },
|
|
35
32
|
React.createElement(Close, { kind: "drawer", ratio: 0.9, onClick: onClose }),
|
|
36
33
|
React.createElement(Component, { className: "uk-drawer-header" },
|
|
37
34
|
React.createElement(Component, { className: "uk-drawer-title" }, intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_TITLE))),
|
|
38
35
|
React.createElement("div", { className: "uk-drawer-body" },
|
|
39
36
|
React.createElement(EvmProvidersDispatcher, null)),
|
|
40
|
-
React.createElement(Text, { align: "center", className: "uk-drawer-footer uk-margin-top", component: "footer", kind: "meta" }, walletProviders.agreementsNote || intl.formatMessage(messages.EVM_CONNECT_AGREEMENTS_NOTE))));
|
|
37
|
+
walletProviders.agreementsNote !== false && (React.createElement(Text, { align: "center", className: "uk-drawer-footer uk-margin-top", component: "footer", kind: "meta" }, walletProviders.agreementsNote || intl.formatMessage(messages.EVM_CONNECT_AGREEMENTS_NOTE)))));
|
|
41
38
|
}
|
|
42
|
-
return (React.createElement(Modal, { centered: true, className: classNames('evm-connect-modal', className), closeIcon: React.createElement(Close, { kind: "modal", ratio: 0.9, onClick:
|
|
39
|
+
return (React.createElement(Modal, { centered: true, className: classNames('evm-connect-modal', className), closeIcon: React.createElement(Close, { kind: "modal", ratio: 0.9, onClick: onClose }), destroyOnClose: true, footer: walletProviders.agreementsNote !== false && (React.createElement(Text, { align: "center", component: "div", kind: "meta" }, walletProviders.agreementsNote || intl.formatMessage(messages.EVM_CONNECT_AGREEMENTS_NOTE))), keyboard: !walletProviders.connectingProvider, maskClosable: !walletProviders.connectingProvider, title: intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_TITLE), visible: open, width: 380, onClose: onClose, onClosed: onClosed },
|
|
43
40
|
React.createElement(EvmProvidersDispatcher, null)));
|
|
44
41
|
});
|
|
@@ -25,7 +25,7 @@ export const EvmConnector = observer((props) => {
|
|
|
25
25
|
drop.current?.close();
|
|
26
26
|
await walletService.disconnect();
|
|
27
27
|
if (recentMeta) {
|
|
28
|
-
setRecentMeta({ ...recentMeta, disconnected: true });
|
|
28
|
+
setRecentMeta({ ...recentMeta, disconnected: true }, walletProviders.recentMetaStorageKey);
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
};
|
|
@@ -65,7 +65,7 @@ export const EvmConnector = observer((props) => {
|
|
|
65
65
|
}) })) })),
|
|
66
66
|
React.createElement(Flex, { alignItems: "center", className: "evm-connect-connector-suffix" },
|
|
67
67
|
suffix,
|
|
68
|
-
|
|
68
|
+
!isDisconnected && showDropMenu && (React.createElement(Dropdown, { ref: drop, action: ['click'], hideAction: ['click'], overlayClassName: "evm-connect-dropdown", overlay: (React.createElement(List, { className: "uk-margin-remove", size: "large" },
|
|
69
69
|
!standalone && (React.createElement(List.Item, { key: "connect-wallet" },
|
|
70
70
|
React.createElement(EvmConnectButton, { className: "evm-connect-change-wallet", network: network, popupType: popupType, type: "link", onOpen: changeWallet }, changeWalletButtonText))),
|
|
71
71
|
React.createElement(List.Item, null,
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { Icon } from '@broxus/react-components';
|
|
2
2
|
import { Button, Grid, Text } from '@broxus/react-uikit';
|
|
3
3
|
import classNames from 'classnames';
|
|
4
|
+
import { observer } from 'mobx-react-lite';
|
|
4
5
|
import * as React from 'react';
|
|
5
6
|
import { useIntl } from 'react-intl';
|
|
6
7
|
import { useEvmWalletProviders } from '../../../context';
|
|
7
8
|
import messages from '../../../intl';
|
|
8
9
|
import './index.css';
|
|
9
|
-
export
|
|
10
|
+
export const ConnectionRequest = observer(() => {
|
|
10
11
|
const intl = useIntl();
|
|
11
12
|
const walletProviders = useEvmWalletProviders();
|
|
12
13
|
const tryAgain = async () => {
|
|
@@ -30,6 +31,6 @@ export function ConnectionRequest() {
|
|
|
30
31
|
})),
|
|
31
32
|
React.createElement("div", null, intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_NOTE)))) : (React.createElement(Text, { align: "center" },
|
|
32
33
|
React.createElement("h4", { className: "evm-connect-connection-request-title uk-text-danger" }, intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_FAILED_TITLE)),
|
|
33
|
-
React.createElement("div", { className: "uk-margin-small-bottom" }, walletProviders.error.message ? (React.createElement(Text, { color: "danger" }, walletProviders.error.message)) : intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_FAILED_NOTE)),
|
|
34
|
+
React.createElement("div", { className: "uk-margin-small-bottom" }, walletProviders.error.message ? (React.createElement(Text, { color: "danger" }, walletProviders.error.message)) : (intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_FAILED_NOTE))),
|
|
34
35
|
React.createElement(Button, { className: "evm-connect-connection-request-button", type: "default", onClick: tryAgain }, intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_TRY_AGAIN_BTN_TEXT)))))));
|
|
35
|
-
}
|
|
36
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { camelToSnake, getUserAgent, isMobile } from '@broxus/js-utils';
|
|
2
2
|
import { TokenIcon } from '@broxus/react-components';
|
|
3
|
-
import { Button, Text } from '@broxus/react-uikit';
|
|
3
|
+
import { Button, Spinner, Text } from '@broxus/react-uikit';
|
|
4
4
|
import { reaction } from 'mobx';
|
|
5
5
|
import { observer } from 'mobx-react-lite';
|
|
6
6
|
import * as React from 'react';
|
|
@@ -27,13 +27,19 @@ export const ProviderButton = observer((props) => {
|
|
|
27
27
|
onSelectProvider?.(providerConfig);
|
|
28
28
|
}
|
|
29
29
|
};
|
|
30
|
+
// eslint-disable-next-line max-len
|
|
31
|
+
const isInitializing = providerConfig.connector.isInitializing === undefined || providerConfig.connector.isInitializing;
|
|
30
32
|
React.useEffect(() => reaction(() => providerConfig.connector, connector => {
|
|
31
33
|
if (connector.type !== EthereumConnectionType.WALLET_CONNECT_V2) {
|
|
32
34
|
setHasProvider(connector.provider != null);
|
|
33
35
|
}
|
|
34
36
|
}, { fireImmediately: true }), [providerConfig.connector]);
|
|
35
|
-
if (hasProvider
|
|
36
|
-
return (React.createElement(Button, { className: "evm-connect-provider-button", disabled: true },
|
|
37
|
+
if (!hasProvider && isInitializing) {
|
|
38
|
+
return (React.createElement(Button, { className: "evm-connect-provider-button", disabled: true },
|
|
39
|
+
React.createElement("span", { className: "tvm-connect-provider-icon" }, typeof providerConfig.info.icon === 'string' ? (React.createElement(TokenIcon, { iconUrl: providerConfig.info.icon, size: 28 })) : providerConfig.info.icon),
|
|
40
|
+
React.createElement("span", { className: "tvm-connect-provider-title" }, intl.formatMessage(messages.EVM_CONNECT_INITIALIZING_HINT)),
|
|
41
|
+
React.createElement("span", null,
|
|
42
|
+
React.createElement(Spinner, { ratio: 0.8 }))));
|
|
37
43
|
}
|
|
38
44
|
const ua = getUserAgent();
|
|
39
45
|
const homepage = providerConfig.info.links?.homepage;
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { List } from '@broxus/react-uikit';
|
|
2
2
|
import { observer } from 'mobx-react-lite';
|
|
3
3
|
import * as React from 'react';
|
|
4
|
+
import { useIntl } from 'react-intl';
|
|
4
5
|
import { ConnectionRequest } from '../../components/EvmProvidersDispatcher/ConnectionRequest';
|
|
5
6
|
import { ProviderButton } from '../../components/EvmProvidersDispatcher/ProviderButton';
|
|
6
7
|
import { useEvmWalletProviders, useEvmWalletService } from '../../context';
|
|
7
8
|
import { useOrderedConnections } from '../../hooks';
|
|
9
|
+
import messages from '../../intl';
|
|
8
10
|
import './index.css';
|
|
9
11
|
export const EvmProvidersDispatcher = observer(() => {
|
|
12
|
+
const intl = useIntl();
|
|
10
13
|
const walletService = useEvmWalletService();
|
|
11
14
|
const walletProviders = useEvmWalletProviders();
|
|
12
15
|
const orderedProviders = useOrderedConnections(walletService.providers ?? []);
|
|
@@ -18,6 +21,10 @@ export const EvmProvidersDispatcher = observer(() => {
|
|
|
18
21
|
dispatcher.current.style.height = height ? `${height}px` : '';
|
|
19
22
|
}
|
|
20
23
|
}, [walletProviders.connectingProvider, walletProviders.error]);
|
|
24
|
+
if (walletService.providers.length === 0) {
|
|
25
|
+
return (React.createElement("div", { ref: dispatcher, className: "tvm-connect-providers-dispatcher" },
|
|
26
|
+
React.createElement("div", { className: "uk-padding-large" }, intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_NO_PROVIDERS_HINT))));
|
|
27
|
+
}
|
|
21
28
|
return (React.createElement("div", { ref: dispatcher, className: "evm-connect-providers-dispatcher" },
|
|
22
29
|
React.createElement("div", { ref: content }, walletProviders.connectingProvider ? (React.createElement(ConnectionRequest, null)) : (React.createElement(List, { className: "evm-connect-providers-list" }, orderedProviders.map(providerConfig => (React.createElement(List.Item, { key: providerConfig.id },
|
|
23
30
|
React.createElement(ProviderButton, { providerConfig: providerConfig })))))))));
|
|
@@ -2,7 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import { type EthereumConnector } from '../core';
|
|
3
3
|
import { type EvmNetworkConfig, type EvmWalletProviderConfig } from '../types';
|
|
4
4
|
export interface EvmWalletProvidersContextConsumer {
|
|
5
|
-
agreementsNote?: React.ReactNode;
|
|
5
|
+
agreementsNote?: React.ReactNode | false;
|
|
6
6
|
connect: (providerConfig: EvmWalletProviderConfig) => Promise<void>;
|
|
7
7
|
connectingProvider?: EvmWalletProviderConfig | null;
|
|
8
8
|
error?: Error | null;
|
|
@@ -11,12 +11,13 @@ export interface EvmWalletProvidersContextConsumer {
|
|
|
11
11
|
}
|
|
12
12
|
export declare const EvmWalletProvidersContext: React.Context<EvmWalletProvidersContextConsumer | null>;
|
|
13
13
|
export declare function useEvmWalletProviders(): EvmWalletProvidersContextConsumer;
|
|
14
|
-
|
|
14
|
+
interface EvmWalletProvidersProviderProps {
|
|
15
15
|
agreementsNote?: React.ReactNode;
|
|
16
16
|
network?: EvmNetworkConfig;
|
|
17
17
|
recentMetaStorageKey?: string;
|
|
18
18
|
onConnect?: (connector?: EthereumConnector) => Promise<void> | void;
|
|
19
|
-
}
|
|
20
|
-
export declare const EvmWalletProvidersProvider: (({ agreementsNote, children, network, recentMetaStorageKey, onConnect, }: EvmWalletProvidersProviderProps) => React.JSX.Element) & {
|
|
19
|
+
}
|
|
20
|
+
export declare const EvmWalletProvidersProvider: (({ agreementsNote, children, network, recentMetaStorageKey, onConnect, }: React.PropsWithChildren<EvmWalletProvidersProviderProps>) => React.JSX.Element) & {
|
|
21
21
|
displayName: string;
|
|
22
22
|
};
|
|
23
|
+
export {};
|
|
@@ -21,15 +21,16 @@ export const EvmWalletProvidersProvider = observer(({ agreementsNote, children,
|
|
|
21
21
|
const prevConnector = walletService.connector;
|
|
22
22
|
const recentMeta = getRecentConnectionMeta(recentMetaStorageKey);
|
|
23
23
|
// eslint-disable-next-line no-nested-ternary
|
|
24
|
-
const
|
|
24
|
+
const networkParams = network ?? (recentMeta?.chainId
|
|
25
25
|
? walletService.networks.find(_network => _network.chainId === recentMeta.chainId) ?? 1
|
|
26
26
|
: 1);
|
|
27
|
-
debug(`Try to activate ${providerConfig.info.name} connection with chain`, typeof
|
|
28
|
-
await providerConfig.connector?.connect(typeof
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
debug(`Try to activate ${providerConfig.info.name} connection with chain`, typeof networkParams === 'number' ? networkParams : networkParams?.chainId);
|
|
28
|
+
await providerConfig.connector?.connect(typeof networkParams === 'number'
|
|
29
|
+
? networkParams
|
|
30
|
+
: networkParams && convertNetworkToChainParams(networkParams), { onConnect });
|
|
31
|
+
if (walletService.providerId && providerConfig.id !== walletService.providerId) {
|
|
32
|
+
await prevConnector?.disconnect({ force: true });
|
|
31
33
|
}
|
|
32
|
-
await onConnect?.(providerConfig.connector);
|
|
33
34
|
storeRecentConnectionMeta({
|
|
34
35
|
chainId: providerConfig.connector.chainId?.toString(),
|
|
35
36
|
disconnected: false,
|
package/lib/esm/intl/index.js
CHANGED
|
@@ -109,4 +109,8 @@ export default defineMessages({
|
|
|
109
109
|
defaultMessage: 'Recent',
|
|
110
110
|
id: 'EVM_CONNECT_DISPATCHER_POPUP_RECENT_HINT',
|
|
111
111
|
},
|
|
112
|
+
EVM_CONNECT_DISPATCHER_POPUP_NO_PROVIDERS_HINT: {
|
|
113
|
+
defaultMessage: 'It seems that no provider was configured. Please ensure the service settings are correct.',
|
|
114
|
+
id: 'EVM_CONNECT_DISPATCHER_POPUP_NO_PROVIDERS_HINT',
|
|
115
|
+
},
|
|
112
116
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@broxus/evm-connect",
|
|
3
|
-
"version": "1.12.
|
|
3
|
+
"version": "1.12.9",
|
|
4
4
|
"description": "Ethereum wallets connector.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
|
@@ -96,5 +96,5 @@
|
|
|
96
96
|
"web3-types": "^1.x",
|
|
97
97
|
"web3-utils": "^4.x"
|
|
98
98
|
},
|
|
99
|
-
"gitHead": "
|
|
99
|
+
"gitHead": "0d38ed5de484717a5fcbc4c831055da0e43a81b7"
|
|
100
100
|
}
|