@broxus/evm-connect 1.13.7 → 1.14.1
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.d.mts +453 -0
- package/dist/index.d.ts +453 -0
- package/dist/index.js +4954 -0
- package/dist/index.mjs +4954 -0
- package/dist/inheritance.min.css +3 -0
- package/dist/react.d.mts +116 -0
- package/dist/react.d.ts +116 -0
- package/dist/react.js +4860 -0
- package/dist/react.mjs +4860 -0
- package/dist/sdk.d.mts +346 -0
- package/dist/sdk.d.ts +346 -0
- package/dist/sdk.js +4860 -0
- package/dist/sdk.mjs +4860 -0
- package/dist/standalone.min.css +1 -0
- package/dist/uikit.min.css +1 -1
- package/lib/cjs/_react.js +25 -0
- package/lib/cjs/_sdk.js +22 -0
- package/lib/cjs/components/{EvmConnectButton/index.js → EvmConnectButton.js} +4 -4
- package/lib/cjs/components/{EvmConnectDialog/index.js → EvmConnectDialog.js} +12 -6
- package/lib/cjs/components/EvmConnectionRequest.js +80 -0
- package/lib/cjs/components/{EvmConnector/index.js → EvmConnector.js} +4 -5
- package/lib/cjs/components/{EvmProvidersDispatcher/ProviderButton/index.js → EvmProviderButton.js} +8 -9
- package/lib/cjs/components/{EvmProvidersDispatcher/index.js → EvmProvidersDispatcher.js} +24 -16
- package/lib/cjs/components/EvmProvidersList.js +49 -0
- package/lib/cjs/context/EvmWalletProvidersContext.js +4 -5
- package/lib/cjs/context/EvmWalletServiceContext.js +4 -4
- package/lib/cjs/hooks/index.js +1 -0
- package/lib/cjs/hooks/useContext.js +44 -0
- package/lib/cjs/hooks/useRecentConnectionMeta.js +7 -35
- package/lib/cjs/intl/index.js +1 -1
- package/lib/cjs/services/EvmWalletService.js +1 -1
- package/lib/cjs/styles/inheritance.css +71 -0
- package/lib/cjs/styles/inheritance.js +4 -0
- package/lib/cjs/styles/standalone.css +68 -0
- package/lib/cjs/styles/standalone.js +4 -0
- package/lib/cjs/styles/style.css +538 -0
- package/lib/cjs/styles/uikit.js +3 -0
- package/lib/cjs/utils/index.js +2 -1
- package/lib/cjs/utils/recent-connection-meta.js +37 -0
- package/lib/cjs/utils/{convert-network-to-chain-params.js → to-chain-params.js} +2 -2
- package/lib/esm/_react.d.ts +9 -0
- package/lib/esm/_react.js +9 -0
- package/lib/esm/_sdk.d.ts +6 -0
- package/lib/esm/_sdk.js +6 -0
- package/lib/esm/components/{EvmConnectButton/index.d.ts → EvmConnectButton.d.ts} +3 -3
- package/lib/esm/components/{EvmConnectButton/index.js → EvmConnectButton.js} +4 -4
- package/lib/esm/components/{EvmConnectDialog/index.d.ts → EvmConnectDialog.d.ts} +0 -1
- package/lib/esm/components/{EvmConnectDialog/index.js → EvmConnectDialog.js} +12 -6
- package/lib/esm/components/EvmConnectionRequest.d.ts +4 -0
- package/lib/esm/components/EvmConnectionRequest.js +41 -0
- package/lib/esm/components/{EvmConnector/index.d.ts → EvmConnector.d.ts} +1 -2
- package/lib/esm/components/{EvmConnector/index.js → EvmConnector.js} +4 -5
- package/lib/esm/components/EvmProviderButton.d.ts +10 -0
- package/lib/esm/components/{EvmProvidersDispatcher/ProviderButton/index.js → EvmProviderButton.js} +7 -8
- package/lib/esm/components/{EvmProvidersDispatcher/index.d.ts → EvmProvidersDispatcher.d.ts} +0 -1
- package/lib/esm/components/EvmProvidersDispatcher.js +40 -0
- package/lib/esm/components/EvmProvidersList.d.ts +4 -0
- package/lib/esm/components/EvmProvidersList.js +13 -0
- package/lib/esm/connectors/EIP6963Connector.d.ts +1 -2
- package/lib/esm/connectors/MetaMask.d.ts +1 -1
- package/lib/esm/context/EvmWalletProvidersContext.js +3 -4
- package/lib/esm/context/EvmWalletServiceContext.js +2 -2
- package/lib/esm/core/EthereumConnector.d.ts +1 -1
- package/lib/esm/hooks/index.d.ts +1 -0
- package/lib/esm/hooks/index.js +1 -0
- package/lib/esm/hooks/useContext.d.ts +2 -0
- package/lib/esm/hooks/useContext.js +8 -0
- package/lib/esm/hooks/useEIP6963Connections.d.ts +1 -1
- package/lib/esm/hooks/useOrderedConnections.d.ts +1 -2
- package/lib/esm/hooks/useRecentConnectionMeta.d.ts +1 -9
- package/lib/esm/hooks/useRecentConnectionMeta.js +5 -31
- package/lib/esm/intl/index.d.ts +115 -0
- package/lib/esm/intl/index.js +1 -1
- package/lib/esm/services/EvmWalletService.js +2 -2
- package/lib/esm/styles/inheritance.css +71 -0
- package/lib/esm/styles/inheritance.d.ts +2 -0
- package/lib/esm/styles/inheritance.js +2 -0
- package/lib/esm/styles/standalone.css +68 -0
- package/lib/esm/styles/standalone.d.ts +2 -0
- package/lib/esm/styles/standalone.js +2 -0
- package/lib/esm/styles/style.css +538 -0
- package/lib/esm/styles/uikit.js +1 -0
- package/lib/esm/types.d.ts +7 -1
- package/lib/esm/utils/index.d.ts +2 -1
- package/lib/esm/utils/index.js +2 -1
- package/lib/esm/utils/recent-connection-meta.d.ts +4 -0
- package/lib/esm/utils/recent-connection-meta.js +32 -0
- package/lib/esm/utils/to-chain-params.d.ts +2 -0
- package/lib/esm/utils/{convert-network-to-chain-params.js → to-chain-params.js} +1 -1
- package/package.json +52 -29
- package/dist/index.cjs.js +0 -2
- package/dist/index.esm.js +0 -2
- package/dist/style.min.css +0 -1
- package/lib/cjs/components/EvmConnectDialog/index.css +0 -142
- package/lib/cjs/components/EvmConnector/index.css +0 -46
- package/lib/cjs/components/EvmProvidersDispatcher/ConnectionRequest/index.css +0 -44
- package/lib/cjs/components/EvmProvidersDispatcher/ConnectionRequest/index.js +0 -75
- package/lib/cjs/components/EvmProvidersDispatcher/ProviderButton/index.css +0 -54
- package/lib/cjs/components/EvmProvidersDispatcher/index.css +0 -13
- package/lib/esm/components/EvmConnectDialog/index.css +0 -142
- package/lib/esm/components/EvmConnector/index.css +0 -46
- package/lib/esm/components/EvmProvidersDispatcher/ConnectionRequest/index.css +0 -44
- package/lib/esm/components/EvmProvidersDispatcher/ConnectionRequest/index.d.ts +0 -5
- package/lib/esm/components/EvmProvidersDispatcher/ConnectionRequest/index.js +0 -36
- package/lib/esm/components/EvmProvidersDispatcher/ProviderButton/index.css +0 -54
- package/lib/esm/components/EvmProvidersDispatcher/ProviderButton/index.d.ts +0 -11
- package/lib/esm/components/EvmProvidersDispatcher/index.css +0 -13
- package/lib/esm/components/EvmProvidersDispatcher/index.js +0 -32
- package/lib/esm/utils/convert-network-to-chain-params.d.ts +0 -2
- /package/lib/esm/{uikit.d.ts → styles/uikit.d.ts} +0 -0
package/lib/esm/_sdk.js
ADDED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type ButtonProps } from '@broxus/react-uikit';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { type EvmConnectDialogProps } from '
|
|
4
|
-
import { type EvmWalletService } from '
|
|
5
|
-
import { type EvmNetworkConfig } from '
|
|
3
|
+
import { type EvmConnectDialogProps } from '../components/EvmConnectDialog';
|
|
4
|
+
import { type EvmWalletService } from '../services';
|
|
5
|
+
import { type EvmNetworkConfig } from '../types';
|
|
6
6
|
interface TriggerProps {
|
|
7
7
|
disabled?: boolean;
|
|
8
8
|
connect: VoidFunction;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Button } from '@broxus/react-uikit';
|
|
2
2
|
import { observer } from 'mobx-react-lite';
|
|
3
3
|
import * as React from 'react';
|
|
4
|
-
import { EvmConnectDialog } from '
|
|
5
|
-
import { EvmWalletProvidersContext, EvmWalletProvidersProvider, useEvmWalletService } from '
|
|
6
|
-
import {
|
|
4
|
+
import { EvmConnectDialog } from '../components/EvmConnectDialog';
|
|
5
|
+
import { EvmWalletProvidersContext, EvmWalletProvidersProvider, useEvmWalletService } from '../context';
|
|
6
|
+
import { toChainParams } from '../utils';
|
|
7
7
|
export const EvmConnectButton = observer(({ disabled, network, popupClassName, popupType, trigger, onClose, onConnect, onOpen, ...props }) => {
|
|
8
8
|
const walletService = useEvmWalletService();
|
|
9
9
|
const walletProviders = React.useContext(EvmWalletProvidersContext);
|
|
@@ -19,7 +19,7 @@ export const EvmConnectButton = observer(({ disabled, network, popupClassName, p
|
|
|
19
19
|
}, [onOpen]);
|
|
20
20
|
const connect = React.useCallback(async () => {
|
|
21
21
|
setModalVisibility(false);
|
|
22
|
-
const networkParams = network?.chainId ?
|
|
22
|
+
const networkParams = network?.chainId ? toChainParams(network) : undefined;
|
|
23
23
|
await Promise.allSettled([
|
|
24
24
|
onConnect?.(walletService),
|
|
25
25
|
walletService.connect(networkParams).catch(() => {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
+
import { getScrollWidth } from '@broxus/js-utils';
|
|
1
2
|
import { Close } from '@broxus/react-components';
|
|
2
3
|
import { Component, Drawer, Modal, Text, addModalMode, removeModalMode } from '@broxus/react-uikit';
|
|
3
4
|
import classNames from 'classnames';
|
|
4
5
|
import { observer } from 'mobx-react-lite';
|
|
5
6
|
import * as React from 'react';
|
|
6
7
|
import { useIntl } from 'react-intl';
|
|
7
|
-
import { EvmProvidersDispatcher } from '
|
|
8
|
-
import { useEvmWalletProviders } from '
|
|
9
|
-
import messages from '
|
|
10
|
-
import './index.css';
|
|
8
|
+
import { EvmProvidersDispatcher } from '../components';
|
|
9
|
+
import { useEvmWalletProviders } from '../context';
|
|
10
|
+
import messages from '../intl';
|
|
11
11
|
export const EvmConnectDialog = observer(({ className, open, type, onClose }) => {
|
|
12
12
|
const intl = useIntl();
|
|
13
13
|
const walletProviders = useEvmWalletProviders();
|
|
@@ -28,7 +28,10 @@ export const EvmConnectDialog = observer(({ className, open, type, onClose }) =>
|
|
|
28
28
|
removeOnLeave: true,
|
|
29
29
|
// eslint-disable-next-line sort-keys
|
|
30
30
|
onLeaveEnd: onClosed,
|
|
31
|
-
}, open: open, placement: "bottom", push: false, rootClassName: "evm-connect-drawer",
|
|
31
|
+
}, open: open, placement: "bottom", push: false, rootClassName: "evm-connect-drawer", style: {
|
|
32
|
+
// @ts-ignore
|
|
33
|
+
'--global-scroll-width': `${getScrollWidth()}px`,
|
|
34
|
+
}, onClose: onClose },
|
|
32
35
|
React.createElement(Close, { kind: "drawer", ratio: 0.9, onClick: onClose }),
|
|
33
36
|
React.createElement(Component, { className: "uk-drawer-header" },
|
|
34
37
|
React.createElement(Component, { className: "uk-drawer-title" }, intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_TITLE))),
|
|
@@ -36,6 +39,9 @@ export const EvmConnectDialog = observer(({ className, open, type, onClose }) =>
|
|
|
36
39
|
React.createElement(EvmProvidersDispatcher, null)),
|
|
37
40
|
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)))));
|
|
38
41
|
}
|
|
39
|
-
return (React.createElement(Modal, { centered: true, className: classNames('evm-connect-modal', className), closeIcon: React.createElement(Close, { kind: "modal", ratio: 0.9, onClick: onClose }), destroyOnHidden: 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,
|
|
42
|
+
return (React.createElement(Modal, { centered: true, className: classNames('evm-connect-modal', className), closeIcon: React.createElement(Close, { kind: "modal", ratio: 0.9, onClick: onClose }), destroyOnHidden: 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, style: {
|
|
43
|
+
// @ts-ignore
|
|
44
|
+
'--global-scroll-width': `${getScrollWidth()}px`,
|
|
45
|
+
}, onClose: onClose, onClosed: onClosed },
|
|
40
46
|
React.createElement(EvmProvidersDispatcher, null)));
|
|
41
47
|
});
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Icon } from '@broxus/react-components';
|
|
2
|
+
import { Button, Grid, Text } from '@broxus/react-uikit';
|
|
3
|
+
import classNames from 'classnames';
|
|
4
|
+
import { observer } from 'mobx-react-lite';
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
import { useIntl } from 'react-intl';
|
|
7
|
+
import { useEvmWalletProviders } from '../context';
|
|
8
|
+
import messages from '../intl';
|
|
9
|
+
export const EvmConnectionRequest = observer(() => {
|
|
10
|
+
const intl = useIntl();
|
|
11
|
+
const walletProviders = useEvmWalletProviders();
|
|
12
|
+
const tryAgain = async () => {
|
|
13
|
+
if (walletProviders.connectingProvider) {
|
|
14
|
+
await walletProviders.connect(walletProviders.connectingProvider);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
return (React.createElement(React.Fragment, null,
|
|
18
|
+
React.createElement(Button, { className: "evm-connect-back-button uk-position-top-left", type: "text", onClick: walletProviders.reset },
|
|
19
|
+
React.createElement(Icon, { icon: "arrowLeft", ratio: 0.9 })),
|
|
20
|
+
React.createElement("div", { className: "tvm-connect-provider-content uk-animation-fade", style: {
|
|
21
|
+
animationDelay: 'var(--animation-medium-fast-duration)',
|
|
22
|
+
animationDuration: 'var(--animation-fast-duration)',
|
|
23
|
+
animationTimingFunction: 'var(--ease-in)',
|
|
24
|
+
} },
|
|
25
|
+
React.createElement(Grid, { childWidth: 1, gap: "collapse" },
|
|
26
|
+
walletProviders.connectingProvider?.info.icon && (React.createElement(Text, { align: "center", className: classNames('uk-margin-top', {
|
|
27
|
+
'uk-margin-bottom': walletProviders.connectingProvider?.info.description,
|
|
28
|
+
'uk-margin-medium-bottom': !walletProviders.connectingProvider?.info.description,
|
|
29
|
+
}), component: "div" },
|
|
30
|
+
React.createElement("img", { src: walletProviders.connectingProvider.info.icon, alt: walletProviders.connectingProvider.info.name, height: 60, width: 60 }))),
|
|
31
|
+
walletProviders.connectingProvider?.info.description && (React.createElement(Text, { align: "center", className: "uk-margin-medium-bottom", component: "div", kind: "meta" }, walletProviders.connectingProvider.info.description)),
|
|
32
|
+
!walletProviders.error ? (React.createElement("div", { className: "uk-text-center" },
|
|
33
|
+
React.createElement(Text, { className: "evm-connect-connection-request-title", component: "h4" }, intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_TITLE, {
|
|
34
|
+
title: walletProviders.connectingProvider?.info.name ?? 'wallet',
|
|
35
|
+
})),
|
|
36
|
+
React.createElement(Text, { className: "uk-margin-small-bottom", component: "div", size: "small" }, intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_NOTE)))) : (React.createElement("div", { className: "uk-text-center" },
|
|
37
|
+
React.createElement(Text, { className: "evm-connect-connection-request-title", component: "h4" }, intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_FAILED_TITLE)),
|
|
38
|
+
React.createElement(Text, { className: "uk-margin-small-bottom", color: "danger", component: "div", size: "small" }, walletProviders.error.message
|
|
39
|
+
?? intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_FAILED_NOTE)),
|
|
40
|
+
React.createElement(Button, { type: "link", onClick: tryAgain }, intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_TRY_AGAIN_BTN_TEXT))))))));
|
|
41
|
+
});
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { type ButtonProps } from '@broxus/react-uikit';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { type EvmNetworkConfig } from '
|
|
4
|
-
import './index.css';
|
|
3
|
+
import { type EvmNetworkConfig } from '../types';
|
|
5
4
|
export interface EvmConnectorProps {
|
|
6
5
|
changeWalletButtonText?: React.ReactNode;
|
|
7
6
|
className?: string;
|
|
@@ -5,11 +5,10 @@ import classNames from 'classnames';
|
|
|
5
5
|
import { observer } from 'mobx-react-lite';
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import { useIntl } from 'react-intl';
|
|
8
|
-
import { EvmConnectButton } from '
|
|
9
|
-
import { useEvmWalletService } from '
|
|
10
|
-
import { useRecentConnectionMeta } from '
|
|
11
|
-
import messages from '
|
|
12
|
-
import './index.css';
|
|
8
|
+
import { EvmConnectButton } from '../components/EvmConnectButton';
|
|
9
|
+
import { useEvmWalletService } from '../context';
|
|
10
|
+
import { useRecentConnectionMeta } from '../hooks';
|
|
11
|
+
import messages from '../intl';
|
|
13
12
|
export const EvmConnector = observer((props) => {
|
|
14
13
|
const intl = useIntl();
|
|
15
14
|
const walletService = useEvmWalletService();
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type EvmWalletProviderConfig } from '../types';
|
|
3
|
+
interface EvmProviderButtonProps {
|
|
4
|
+
providerConfig: EvmWalletProviderConfig;
|
|
5
|
+
onSelect?: (providerConfig: EvmWalletProviderConfig) => Promise<void> | void;
|
|
6
|
+
}
|
|
7
|
+
export declare const EvmProviderButton: (({ providerConfig, onSelect: onSelectProvider }: EvmProviderButtonProps) => React.JSX.Element) & {
|
|
8
|
+
displayName: string;
|
|
9
|
+
};
|
|
10
|
+
export {};
|
package/lib/esm/components/{EvmProvidersDispatcher/ProviderButton/index.js → EvmProviderButton.js}
RENAMED
|
@@ -5,12 +5,11 @@ import { reaction } from 'mobx';
|
|
|
5
5
|
import { observer } from 'mobx-react-lite';
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import { useIntl } from 'react-intl';
|
|
8
|
-
import { useEvmWalletProviders, useEvmWalletService } from '
|
|
9
|
-
import messages from '
|
|
10
|
-
import { EthereumConnectionType } from '
|
|
11
|
-
import { getEvmProviderPlatformLink } from '
|
|
12
|
-
|
|
13
|
-
export const ProviderButton = observer(({ providerConfig, onSelect: onSelectProvider }) => {
|
|
8
|
+
import { useEvmWalletProviders, useEvmWalletService } from '../context';
|
|
9
|
+
import messages from '../intl';
|
|
10
|
+
import { EthereumConnectionType } from '../types';
|
|
11
|
+
import { getEvmProviderPlatformLink } from '../utils';
|
|
12
|
+
export const EvmProviderButton = observer(({ providerConfig, onSelect: onSelectProvider }) => {
|
|
14
13
|
const intl = useIntl();
|
|
15
14
|
const walletService = useEvmWalletService();
|
|
16
15
|
const walletProviders = useEvmWalletProviders();
|
|
@@ -35,8 +34,8 @@ export const ProviderButton = observer(({ providerConfig, onSelect: onSelectProv
|
|
|
35
34
|
}, { fireImmediately: true }), [providerConfig.connector]);
|
|
36
35
|
if (!hasProvider && isInitializing) {
|
|
37
36
|
return (React.createElement(Button, { className: "evm-connect-provider-button", disabled: true },
|
|
38
|
-
React.createElement("span", { className: "
|
|
39
|
-
React.createElement("span", { className: "
|
|
37
|
+
React.createElement("span", { className: "evm-connect-provider-icon" }, typeof providerConfig.info.icon === 'string' ? (React.createElement(TokenIcon, { iconUrl: providerConfig.info.icon, size: 28 })) : providerConfig.info.icon),
|
|
38
|
+
React.createElement("span", { className: "evm-connect-provider-title" }, intl.formatMessage(messages.EVM_CONNECT_INITIALIZING_HINT)),
|
|
40
39
|
React.createElement("span", null,
|
|
41
40
|
React.createElement(Spinner, { ratio: 0.8 }))));
|
|
42
41
|
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Grid, Text, useMounted } from '@broxus/react-uikit';
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import { observer } from 'mobx-react-lite';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { useIntl } from 'react-intl';
|
|
6
|
+
import { EvmConnectionRequest } from '../components/EvmConnectionRequest';
|
|
7
|
+
import { EvmProvidersList } from '../components/EvmProvidersList';
|
|
8
|
+
import { useEvmWalletProviders, useEvmWalletService } from '../context';
|
|
9
|
+
import messages from '../intl';
|
|
10
|
+
export const EvmProvidersDispatcher = observer(() => {
|
|
11
|
+
const intl = useIntl();
|
|
12
|
+
const walletService = useEvmWalletService();
|
|
13
|
+
const walletProviders = useEvmWalletProviders();
|
|
14
|
+
const isMounted = useMounted();
|
|
15
|
+
const container = React.useRef(null);
|
|
16
|
+
const content = React.useRef(null);
|
|
17
|
+
React.useLayoutEffect(() => {
|
|
18
|
+
if (container.current) {
|
|
19
|
+
const height = content.current?.clientHeight;
|
|
20
|
+
container.current.style.height = height ? `${Math.ceil(height) + 1}px` : '';
|
|
21
|
+
}
|
|
22
|
+
}, [walletProviders.connectingProvider, walletProviders.error]);
|
|
23
|
+
if (walletService.providers.length === 0) {
|
|
24
|
+
return (React.createElement("div", { ref: container, className: "evm-connect-providers-dispatcher" },
|
|
25
|
+
React.createElement("div", { className: "uk-text-left uk-padding-large uk-padding-remove-horizontal" }, intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_NO_PROVIDERS_HINT))));
|
|
26
|
+
}
|
|
27
|
+
return (React.createElement("div", { ref: container, className: "evm-connect-providers-dispatcher" },
|
|
28
|
+
React.createElement("div", { ref: content }, walletProviders.connectingProvider ? (React.createElement(EvmConnectionRequest, null)) : (React.createElement("div", { className: classNames('tvm-connect-provider-content', {
|
|
29
|
+
'uk-animation-fade': isMounted,
|
|
30
|
+
}), style: isMounted ? {
|
|
31
|
+
animationDelay: 'var(--animation-medium-fast-duration)',
|
|
32
|
+
animationDuration: 'var(--animation-fast-duration)',
|
|
33
|
+
animationTimingFunction: 'var(--ease-in)',
|
|
34
|
+
} : undefined },
|
|
35
|
+
React.createElement(Grid, { childWidth: 1 },
|
|
36
|
+
React.createElement("div", null,
|
|
37
|
+
React.createElement(Text, { align: "center", component: "div", kind: "meta" }, intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_NOTE))),
|
|
38
|
+
React.createElement("div", null,
|
|
39
|
+
React.createElement(EvmProvidersList, null))))))));
|
|
40
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { List } from '@broxus/react-uikit';
|
|
2
|
+
import { observer } from 'mobx-react-lite';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { EvmProviderButton } from '../components/EvmProviderButton';
|
|
5
|
+
import { useEvmWalletService } from '../context';
|
|
6
|
+
import { useOrderedConnections, useRecentConnectionMeta } from '../hooks';
|
|
7
|
+
export const EvmProvidersList = observer(() => {
|
|
8
|
+
const service = useEvmWalletService();
|
|
9
|
+
const [recentMeta] = useRecentConnectionMeta();
|
|
10
|
+
const orderedProviders = useOrderedConnections(service.providers ?? [], recentMeta);
|
|
11
|
+
return (React.createElement(List, { className: "evm-connect-providers-list" }, orderedProviders.map(providerConfig => (React.createElement(List.Item, { key: providerConfig.id },
|
|
12
|
+
React.createElement(EvmProviderButton, { providerConfig: providerConfig }))))));
|
|
13
|
+
});
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { type EIP6963ProviderInfo } from 'web3
|
|
2
|
-
import { type EthExecutionAPI, type ProviderConnectInfo } from 'web3-types';
|
|
1
|
+
import { type EIP6963ProviderInfo, type EthExecutionAPI, type ProviderConnectInfo } from 'web3';
|
|
3
2
|
import { EthereumConnector, type EthereumConnectorCtorParams } from '../core';
|
|
4
3
|
import { type AddEthereumChainParams, EthereumConnectionType, type SupportedProviders } from '../types';
|
|
5
4
|
export interface EIP6963ConnectorCtorParams extends EthereumConnectorCtorParams {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import detectEthereumProvider from '@metamask/detect-provider';
|
|
2
|
-
import { type EthExecutionAPI, type MetaMaskProvider, type ProviderConnectInfo } from 'web3
|
|
2
|
+
import { type EthExecutionAPI, type MetaMaskProvider, type ProviderConnectInfo } from 'web3';
|
|
3
3
|
import { EthereumConnector, type EthereumConnectorCtorParams } from '../core';
|
|
4
4
|
import { type AddEthereumChainParams, EthereumConnectionType } from '../types';
|
|
5
5
|
interface MetaMaskEthereumProvider extends MetaMaskProvider<EthExecutionAPI> {
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { debug } from '@broxus/js-utils';
|
|
3
|
-
import { useContext } from '@broxus/react-uikit';
|
|
4
3
|
import { observer } from 'mobx-react-lite';
|
|
5
4
|
import * as React from 'react';
|
|
6
5
|
import { useEvmWalletService } from '../context/EvmWalletServiceContext';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
6
|
+
import { useContext } from '../hooks';
|
|
7
|
+
import { getRecentConnectionMeta, storeRecentConnectionMeta, toChainParams } from '../utils';
|
|
9
8
|
export const EvmWalletProvidersContext = React.createContext(null);
|
|
10
9
|
export function useEvmWalletProviders() {
|
|
11
10
|
return useContext(EvmWalletProvidersContext);
|
|
@@ -27,7 +26,7 @@ export const EvmWalletProvidersProvider = observer(({ agreementsNote, children,
|
|
|
27
26
|
debug(`Try to activate ${providerConfig.info.name} connection with chain`, typeof networkParams === 'number' ? networkParams : networkParams?.chainId);
|
|
28
27
|
await providerConfig.connector?.connect(typeof networkParams === 'number'
|
|
29
28
|
? networkParams
|
|
30
|
-
: networkParams &&
|
|
29
|
+
: networkParams && toChainParams(networkParams), { onConnect });
|
|
31
30
|
if (walletService.providerId && providerConfig.id !== walletService.providerId) {
|
|
32
31
|
await prevConnector?.disconnect({ force: true });
|
|
33
32
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { useContext } from '@broxus/react-uikit';
|
|
3
2
|
import { reaction } from 'mobx';
|
|
4
3
|
import * as React from 'react';
|
|
5
4
|
import { EvmWalletProvidersProvider } from '../context/EvmWalletProvidersContext';
|
|
6
|
-
import {
|
|
5
|
+
import { useContext } from '../hooks';
|
|
7
6
|
import { EvmWalletService } from '../services';
|
|
7
|
+
import { getRecentConnectionMeta, storeRecentConnectionMeta } from '../utils';
|
|
8
8
|
export const EvmWalletServiceContext = React.createContext(null);
|
|
9
9
|
export function useEvmWalletService() {
|
|
10
10
|
return useContext(EvmWalletServiceContext);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AbstractStore } from '@broxus/js-core';
|
|
2
|
-
import { type EthExecutionAPI, type ProviderRpcError } from 'web3
|
|
2
|
+
import { type EthExecutionAPI, type ProviderRpcError } from 'web3';
|
|
3
3
|
import { type AddEthereumChainParams, type EthereumConnectionType, type SupportedProviders, type WatchAssetParameters } from '../types';
|
|
4
4
|
export interface EthereumConnectorCtorParams {
|
|
5
5
|
onDisconnect?: (err: ProviderRpcError) => Promise<void> | void;
|
package/lib/esm/hooks/index.d.ts
CHANGED
package/lib/esm/hooks/index.js
CHANGED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export function useContext(Context) {
|
|
3
|
+
const context = React.useContext(Context);
|
|
4
|
+
if (context == null) {
|
|
5
|
+
throw new Error(`use${Context.displayName || Context.constructor.name || 'Unknown'} must be used within a ${Context.displayName || Context.constructor.name || 'Unknown'}.Provider`);
|
|
6
|
+
}
|
|
7
|
+
return context;
|
|
8
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type EIP6963ProviderDetail } from 'web3
|
|
1
|
+
import { type EIP6963ProviderDetail } from 'web3';
|
|
2
2
|
export declare const store: {
|
|
3
3
|
readonly subscribe: (callback: () => void) => () => void;
|
|
4
4
|
readonly value: () => EIP6963ProviderDetail<unknown>[];
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import { type RecentConnectionMeta } from '../
|
|
2
|
-
import { type EvmWalletProviderConfig } from '../types';
|
|
1
|
+
import { type EvmWalletProviderConfig, type RecentConnectionMeta } from '../types';
|
|
3
2
|
export declare function useOrderedConnections(providers: Readonly<EvmWalletProviderConfig[]>, recentMeta?: RecentConnectionMeta): EvmWalletProviderConfig[];
|
|
@@ -1,12 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export interface RecentConnectionMeta {
|
|
3
|
-
chainId?: string;
|
|
4
|
-
disconnected?: boolean;
|
|
5
|
-
providerId: string;
|
|
6
|
-
type?: EthereumConnectionType;
|
|
7
|
-
}
|
|
8
|
-
export declare function storeRecentConnectionMeta(meta: RecentConnectionMeta | undefined, storageKey?: string): void;
|
|
9
|
-
export declare function getRecentConnectionMeta(storageKey?: string): RecentConnectionMeta | undefined;
|
|
1
|
+
import { type RecentConnectionMeta } from '../types';
|
|
10
2
|
type UseRecentConnectionMeta = [
|
|
11
3
|
value: RecentConnectionMeta | undefined,
|
|
12
4
|
setValue: (meta: RecentConnectionMeta | undefined) => void
|
|
@@ -1,37 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isBrowser } from '@broxus/js-utils';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { EVM_RECENT_CONNECTION } from '../constants';
|
|
4
4
|
import { useEvmWalletProviders } from '../context';
|
|
5
|
-
import {
|
|
6
|
-
function isRecentConnectionMeta(value) {
|
|
7
|
-
const meta = { providerId: value.providerId, type: value.type };
|
|
8
|
-
return Boolean(meta.type && EthereumConnectionType[meta.type] && !!meta.providerId);
|
|
9
|
-
}
|
|
10
|
-
export function storeRecentConnectionMeta(meta, storageKey = EVM_RECENT_CONNECTION) {
|
|
11
|
-
if (!meta) {
|
|
12
|
-
storage.remove(storageKey);
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
debug('Store EVM recent connection', meta);
|
|
16
|
-
storage.set(storageKey, JSON.stringify(meta));
|
|
17
|
-
}
|
|
18
|
-
export function getRecentConnectionMeta(storageKey = EVM_RECENT_CONNECTION) {
|
|
19
|
-
const value = storage.get(storageKey);
|
|
20
|
-
if (!value) {
|
|
21
|
-
return undefined;
|
|
22
|
-
}
|
|
23
|
-
try {
|
|
24
|
-
const json = JSON.parse(value);
|
|
25
|
-
if (isRecentConnectionMeta(json)) {
|
|
26
|
-
return json;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
catch (e) {
|
|
30
|
-
debug(e);
|
|
31
|
-
}
|
|
32
|
-
storeRecentConnectionMeta(undefined, storageKey);
|
|
33
|
-
return undefined;
|
|
34
|
-
}
|
|
5
|
+
import { getRecentConnectionMeta, isRecentConnectionMeta, storeRecentConnectionMeta } from '../utils';
|
|
35
6
|
export function useRecentConnectionMeta() {
|
|
36
7
|
const walletProviders = useEvmWalletProviders();
|
|
37
8
|
const storageKey = walletProviders.recentMetaStorageKey ?? EVM_RECENT_CONNECTION;
|
|
@@ -57,5 +28,8 @@ export function useRecentConnectionMeta() {
|
|
|
57
28
|
}
|
|
58
29
|
};
|
|
59
30
|
}, [storageKey]);
|
|
31
|
+
React.useEffect(() => {
|
|
32
|
+
setRecentMeta(getRecentConnectionMeta(storageKey));
|
|
33
|
+
}, [storageKey]);
|
|
60
34
|
return [recentMeta, setMeta];
|
|
61
35
|
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
EVM_CONNECT_AGREEMENTS_NOTE: {
|
|
3
|
+
defaultMessage: string;
|
|
4
|
+
id: string;
|
|
5
|
+
};
|
|
6
|
+
EVM_CONNECT_NOT_CONNECTED_HINT: {
|
|
7
|
+
defaultMessage: string;
|
|
8
|
+
id: string;
|
|
9
|
+
};
|
|
10
|
+
EVM_CONNECT_INITIALIZING_HINT: {
|
|
11
|
+
defaultMessage: string;
|
|
12
|
+
id: string;
|
|
13
|
+
};
|
|
14
|
+
EVM_CONNECT_CONNECT_BTN_TEXT: {
|
|
15
|
+
defaultMessage: string;
|
|
16
|
+
id: string;
|
|
17
|
+
};
|
|
18
|
+
EVM_CONNECT_DISCONNECT_BTN_TEXT: {
|
|
19
|
+
defaultMessage: string;
|
|
20
|
+
id: string;
|
|
21
|
+
};
|
|
22
|
+
EVM_CONNECT_CHANGE_WALLET_BTN_TEXT: {
|
|
23
|
+
defaultMessage: string;
|
|
24
|
+
id: string;
|
|
25
|
+
};
|
|
26
|
+
EVM_CONNECT_UNSUPPORTED_NETWORK_WARNING: {
|
|
27
|
+
defaultMessage: string;
|
|
28
|
+
id: string;
|
|
29
|
+
};
|
|
30
|
+
EVM_CONNECT_CONNECTOR_BLOCKCHAIN_NAME: {
|
|
31
|
+
defaultMessage: string;
|
|
32
|
+
id: string;
|
|
33
|
+
};
|
|
34
|
+
EVM_CONNECT_CONNECTOR_EXPLORER_HINT: {
|
|
35
|
+
defaultMessage: string;
|
|
36
|
+
id: string;
|
|
37
|
+
};
|
|
38
|
+
EVM_CONNECT_INSTALL_PROVIDER: {
|
|
39
|
+
defaultMessage: string;
|
|
40
|
+
id: string;
|
|
41
|
+
};
|
|
42
|
+
EVM_CONNECT_INSTALL_ANDROID_PLATFORM: {
|
|
43
|
+
defaultMessage: string;
|
|
44
|
+
id: string;
|
|
45
|
+
};
|
|
46
|
+
EVM_CONNECT_INSTALL_IOS_PLATFORM: {
|
|
47
|
+
defaultMessage: string;
|
|
48
|
+
id: string;
|
|
49
|
+
};
|
|
50
|
+
EVM_CONNECT_INSTALL_CHROME_EXTENSION_PLATFORM: {
|
|
51
|
+
defaultMessage: string;
|
|
52
|
+
id: string;
|
|
53
|
+
};
|
|
54
|
+
EVM_CONNECT_INSTALL_FIREFOX_EXTENSION_PLATFORM: {
|
|
55
|
+
defaultMessage: string;
|
|
56
|
+
id: string;
|
|
57
|
+
};
|
|
58
|
+
EVM_CONNECT_INSTALL_SAFARI_EXTENSION_PLATFORM: {
|
|
59
|
+
defaultMessage: string;
|
|
60
|
+
id: string;
|
|
61
|
+
};
|
|
62
|
+
EVM_CONNECT_INSTALL_UNKNOWN_PLATFORM: {
|
|
63
|
+
defaultMessage: string;
|
|
64
|
+
id: string;
|
|
65
|
+
};
|
|
66
|
+
EVM_CONNECT_PROVIDER_HOMEPAGE: {
|
|
67
|
+
defaultMessage: string;
|
|
68
|
+
id: string;
|
|
69
|
+
};
|
|
70
|
+
EVM_CONNECT_PROVIDER_HOMEPAGE_NOTE: {
|
|
71
|
+
defaultMessage: string;
|
|
72
|
+
id: string;
|
|
73
|
+
};
|
|
74
|
+
EVM_CONNECT_DISPATCHER_POPUP_TITLE: {
|
|
75
|
+
defaultMessage: string;
|
|
76
|
+
id: string;
|
|
77
|
+
};
|
|
78
|
+
EVM_CONNECT_DISPATCHER_POPUP_NOTE: {
|
|
79
|
+
defaultMessage: string;
|
|
80
|
+
id: string;
|
|
81
|
+
};
|
|
82
|
+
EVM_CONNECT_DISPATCHER_POPUP_REQUEST_TITLE: {
|
|
83
|
+
defaultMessage: string;
|
|
84
|
+
id: string;
|
|
85
|
+
};
|
|
86
|
+
EVM_CONNECT_DISPATCHER_POPUP_REQUEST_NOTE: {
|
|
87
|
+
defaultMessage: string;
|
|
88
|
+
id: string;
|
|
89
|
+
};
|
|
90
|
+
EVM_CONNECT_DISPATCHER_POPUP_REQUEST_FAILED_TITLE: {
|
|
91
|
+
defaultMessage: string;
|
|
92
|
+
id: string;
|
|
93
|
+
};
|
|
94
|
+
EVM_CONNECT_DISPATCHER_POPUP_REQUEST_FAILED_NOTE: {
|
|
95
|
+
defaultMessage: string;
|
|
96
|
+
id: string;
|
|
97
|
+
};
|
|
98
|
+
EVM_CONNECT_DISPATCHER_POPUP_REQUEST_TRY_AGAIN_BTN_TEXT: {
|
|
99
|
+
defaultMessage: string;
|
|
100
|
+
id: string;
|
|
101
|
+
};
|
|
102
|
+
EVM_CONNECT_DISPATCHER_POPUP_CONNECTED_HINT: {
|
|
103
|
+
defaultMessage: string;
|
|
104
|
+
id: string;
|
|
105
|
+
};
|
|
106
|
+
EVM_CONNECT_DISPATCHER_POPUP_RECENT_HINT: {
|
|
107
|
+
defaultMessage: string;
|
|
108
|
+
id: string;
|
|
109
|
+
};
|
|
110
|
+
EVM_CONNECT_DISPATCHER_POPUP_NO_PROVIDERS_HINT: {
|
|
111
|
+
defaultMessage: string;
|
|
112
|
+
id: string;
|
|
113
|
+
};
|
|
114
|
+
};
|
|
115
|
+
export default _default;
|
package/lib/esm/intl/index.js
CHANGED
|
@@ -78,7 +78,7 @@ export default defineMessages({
|
|
|
78
78
|
id: 'EVM_CONNECT_DISPATCHER_POPUP_TITLE',
|
|
79
79
|
},
|
|
80
80
|
EVM_CONNECT_DISPATCHER_POPUP_NOTE: {
|
|
81
|
-
defaultMessage: '
|
|
81
|
+
defaultMessage: 'Please, connect your preferred wallet.',
|
|
82
82
|
id: 'EVM_CONNECT_DISPATCHER_POPUP_NOTE',
|
|
83
83
|
},
|
|
84
84
|
EVM_CONNECT_DISPATCHER_POPUP_REQUEST_TITLE: {
|
|
@@ -11,7 +11,7 @@ import { AbstractStore } from '@broxus/js-core';
|
|
|
11
11
|
import { debounce, debug, error } from '@broxus/js-utils';
|
|
12
12
|
import { action, computed, makeObservable, reaction } from 'mobx';
|
|
13
13
|
import Web3 from 'web3';
|
|
14
|
-
import {
|
|
14
|
+
import { toChainParams } from '../utils';
|
|
15
15
|
export class EvmWalletService extends AbstractStore {
|
|
16
16
|
params;
|
|
17
17
|
name = 'EvmWalletService';
|
|
@@ -60,7 +60,7 @@ export class EvmWalletService extends AbstractStore {
|
|
|
60
60
|
// eslint-disable-next-line no-nested-ternary
|
|
61
61
|
const networkParams = typeof networkIdOParams === 'object'
|
|
62
62
|
? networkIdOParams
|
|
63
|
-
: network ?
|
|
63
|
+
: network ? toChainParams(network) : undefined;
|
|
64
64
|
await this.connector?.connect(networkParams ?? 1);
|
|
65
65
|
}
|
|
66
66
|
catch (e) {
|