@broxus/evm-connect 1.12.3 → 1.12.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -52,7 +52,8 @@ require("./index.css");
52
52
  exports.EvmConnector = (0, mobx_react_lite_1.observer)((props) => {
53
53
  const intl = (0, react_intl_1.useIntl)();
54
54
  const walletService = (0, context_1.useEvmWalletService)();
55
- const [, setRecentMeta] = (0, hooks_1.useRecentConnectionMeta)();
55
+ const walletProviders = (0, context_1.useEvmWalletProviders)();
56
+ const [, setRecentMeta] = (0, hooks_1.useRecentConnectionMeta)(walletProviders.recentMetaStorageKey);
56
57
  const drop = React.useRef(null);
57
58
  const { changeWalletButtonText = intl.formatMessage(intl_1.default.EVM_CONNECT_CHANGE_WALLET_BTN_TEXT), className, connectButtonShape, connectButtonText = intl.formatMessage(intl_1.default.EVM_CONNECT_CONNECT_BTN_TEXT), connectButtonTrigger, connectButtonType, disconnectButtonText = intl.formatMessage(intl_1.default.EVM_CONNECT_DISCONNECT_BTN_TEXT), network = walletService.network, popupType, suffix, showDropMenu = true, showSubIcon = true, standalone = walletService.providers?.length === 1, warnUnsupportedNetwork = true, } = props;
58
59
  const changeWallet = () => {
@@ -47,9 +47,9 @@ exports.EvmWalletProvidersContext = React.createContext(null);
47
47
  function useEvmWalletProviders() {
48
48
  return (0, react_uikit_1.useContext)(exports.EvmWalletProvidersContext);
49
49
  }
50
- exports.EvmWalletProvidersProvider = (0, mobx_react_lite_1.observer)(({ agreementsNote, children, network, onConnect, }) => {
50
+ exports.EvmWalletProvidersProvider = (0, mobx_react_lite_1.observer)(({ agreementsNote, children, network, recentMetaStorageKey, onConnect, }) => {
51
51
  const walletService = (0, EvmWalletServiceContext_1.useEvmWalletService)();
52
- const [recentMeta, setRecentMeta] = (0, hooks_1.useRecentConnectionMeta)();
52
+ const [recentMeta, setRecentMeta] = (0, hooks_1.useRecentConnectionMeta)(recentMetaStorageKey);
53
53
  const [error, setError] = React.useState(null);
54
54
  const [connectingProvider, setConnectingProvider] = React.useState(null);
55
55
  const connect = React.useCallback(async (providerConfig) => {
@@ -72,13 +72,13 @@ exports.EvmWalletProvidersProvider = (0, mobx_react_lite_1.observer)(({ agreemen
72
72
  disconnected: false,
73
73
  providerId: providerConfig.id,
74
74
  type: providerConfig.connector.type,
75
- });
75
+ }, recentMetaStorageKey);
76
76
  walletService.setState('providerId', providerConfig.id);
77
77
  }
78
78
  catch (e) {
79
79
  setError(e);
80
80
  }
81
- }, [network, onConnect, recentMeta, setRecentMeta, walletService]);
81
+ }, [network, onConnect, recentMeta, recentMetaStorageKey, setRecentMeta, walletService]);
82
82
  const reset = React.useCallback(() => {
83
83
  setError(null);
84
84
  setConnectingProvider(null);
@@ -88,8 +88,9 @@ exports.EvmWalletProvidersProvider = (0, mobx_react_lite_1.observer)(({ agreemen
88
88
  connect,
89
89
  connectingProvider,
90
90
  error,
91
+ recentMetaStorageKey,
91
92
  reset,
92
- }), [agreementsNote, connect, connectingProvider, error, reset]);
93
+ }), [agreementsNote, connect, connectingProvider, error, recentMetaStorageKey, reset]);
93
94
  return React.createElement(exports.EvmWalletProvidersContext.Provider, { value: context }, children);
94
95
  });
95
96
  if (process.env.NODE_ENV !== 'production') {
@@ -47,8 +47,8 @@ exports.EvmWalletServiceContext = React.createContext(null);
47
47
  function useEvmWalletService() {
48
48
  return (0, react_uikit_1.useContext)(exports.EvmWalletServiceContext);
49
49
  }
50
- function EvmWalletServiceProvider({ agreementsNote, children, params, wallet, }) {
51
- const [, setRecentMeta] = (0, hooks_1.useRecentConnectionMeta)();
50
+ function EvmWalletServiceProvider({ agreementsNote, children, params, recentMetaStorageKey, wallet, }) {
51
+ const [, setRecentMeta] = (0, hooks_1.useRecentConnectionMeta)(recentMetaStorageKey);
52
52
  const context = React.useMemo(() => {
53
53
  if (wallet instanceof services_1.EvmWalletService) {
54
54
  return wallet;
@@ -57,12 +57,12 @@ function EvmWalletServiceProvider({ agreementsNote, children, params, wallet, })
57
57
  }, [params, wallet]);
58
58
  React.useEffect(() => (0, mobx_1.reaction)(() => context.chainId, chainId => {
59
59
  if (chainId) {
60
- const recentMeta = (0, hooks_1.getRecentConnectionMeta)();
60
+ const recentMeta = (0, hooks_1.getRecentConnectionMeta)(recentMetaStorageKey);
61
61
  setRecentMeta({ ...recentMeta, chainId: chainId.toString() });
62
62
  }
63
- }, { delay: 10, fireImmediately: context.isReady }), [context, setRecentMeta]);
63
+ }, { delay: 10, fireImmediately: context.isReady }), [context, recentMetaStorageKey, setRecentMeta]);
64
64
  return (React.createElement(exports.EvmWalletServiceContext.Provider, { value: context },
65
- React.createElement(EvmWalletProvidersContext_1.EvmWalletProvidersProvider, { agreementsNote: agreementsNote }, children)));
65
+ React.createElement(EvmWalletProvidersContext_1.EvmWalletProvidersProvider, { agreementsNote: agreementsNote, recentMetaStorageKey: recentMetaStorageKey }, children)));
66
66
  }
67
67
  if (process.env.NODE_ENV !== 'production') {
68
68
  exports.EvmWalletServiceContext.displayName = 'EvmWalletServiceContext';
@@ -35,9 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.useOrderedConnections = useOrderedConnections;
37
37
  const React = __importStar(require("react"));
38
- const useRecentConnectionMeta_1 = require("../hooks/useRecentConnectionMeta");
39
- function useOrderedConnections(providers) {
40
- const [recentMeta] = (0, useRecentConnectionMeta_1.useRecentConnectionMeta)();
38
+ function useOrderedConnections(providers, recentMeta) {
41
39
  return React.useMemo(() => providers.reduce((acc, provider) => {
42
40
  if (provider.id === recentMeta?.providerId) {
43
41
  acc.unshift({ ...provider, isRecent: true });
@@ -44,16 +44,16 @@ function isRecentConnectionMeta(value) {
44
44
  const meta = { providerId: value.providerId, type: value.type };
45
45
  return Boolean(meta.type && types_1.EthereumConnectionType[meta.type] && !!meta.providerId);
46
46
  }
47
- function storeRecentConnectionMeta(meta) {
47
+ function storeRecentConnectionMeta(meta, storageKey = constants_1.EVM_RECENT_CONNECTION) {
48
48
  if (!meta) {
49
- js_utils_1.storage.remove(constants_1.EVM_RECENT_CONNECTION);
49
+ js_utils_1.storage.remove(storageKey);
50
50
  return;
51
51
  }
52
52
  (0, js_utils_1.debug)('Store EVM recent connection', meta);
53
- js_utils_1.storage.set(constants_1.EVM_RECENT_CONNECTION, JSON.stringify(meta));
53
+ js_utils_1.storage.set(storageKey, JSON.stringify(meta));
54
54
  }
55
- function getRecentConnectionMeta() {
56
- const value = js_utils_1.storage.get(constants_1.EVM_RECENT_CONNECTION);
55
+ function getRecentConnectionMeta(storageKey = constants_1.EVM_RECENT_CONNECTION) {
56
+ const value = js_utils_1.storage.get(storageKey);
57
57
  if (!value) {
58
58
  return undefined;
59
59
  }
@@ -66,14 +66,14 @@ function getRecentConnectionMeta() {
66
66
  catch (e) {
67
67
  (0, js_utils_1.debug)(e);
68
68
  }
69
- storeRecentConnectionMeta(undefined);
69
+ storeRecentConnectionMeta(undefined, storageKey);
70
70
  return undefined;
71
71
  }
72
- function useRecentConnectionMeta() {
73
- const [meta, setMeta] = React.useState(getRecentConnectionMeta());
72
+ function useRecentConnectionMeta(storageKey = constants_1.EVM_RECENT_CONNECTION) {
73
+ const [meta, setMeta] = React.useState(getRecentConnectionMeta(storageKey));
74
74
  React.useEffect(() => {
75
75
  const onStorage = (event) => {
76
- if (event.key === constants_1.EVM_RECENT_CONNECTION && event.newValue) {
76
+ if (event.key === storageKey && event.newValue) {
77
77
  const json = JSON.parse(event.newValue);
78
78
  if (isRecentConnectionMeta(json)) {
79
79
  setMeta(json);
@@ -88,6 +88,6 @@ function useRecentConnectionMeta() {
88
88
  window.removeEventListener('storage', onStorage);
89
89
  }
90
90
  };
91
- }, []);
91
+ }, [storageKey]);
92
92
  return [meta, storeRecentConnectionMeta];
93
93
  }
@@ -6,14 +6,15 @@ import { observer } from 'mobx-react-lite';
6
6
  import * as React from 'react';
7
7
  import { useIntl } from 'react-intl';
8
8
  import { EvmConnectButton } from '../../components/EvmConnectButton';
9
- import { useEvmWalletService } from '../../context';
9
+ import { useEvmWalletProviders, useEvmWalletService } from '../../context';
10
10
  import { getRecentConnectionMeta, useRecentConnectionMeta } from '../../hooks';
11
11
  import messages from '../../intl';
12
12
  import './index.css';
13
13
  export const EvmConnector = observer((props) => {
14
14
  const intl = useIntl();
15
15
  const walletService = useEvmWalletService();
16
- const [, setRecentMeta] = useRecentConnectionMeta();
16
+ const walletProviders = useEvmWalletProviders();
17
+ const [, setRecentMeta] = useRecentConnectionMeta(walletProviders.recentMetaStorageKey);
17
18
  const drop = React.useRef(null);
18
19
  const { changeWalletButtonText = intl.formatMessage(messages.EVM_CONNECT_CHANGE_WALLET_BTN_TEXT), className, connectButtonShape, connectButtonText = intl.formatMessage(messages.EVM_CONNECT_CONNECT_BTN_TEXT), connectButtonTrigger, connectButtonType, disconnectButtonText = intl.formatMessage(messages.EVM_CONNECT_DISCONNECT_BTN_TEXT), network = walletService.network, popupType, suffix, showDropMenu = true, showSubIcon = true, standalone = walletService.providers?.length === 1, warnUnsupportedNetwork = true, } = props;
19
20
  const changeWallet = () => {
@@ -6,6 +6,7 @@ export interface EvmWalletProvidersContextConsumer {
6
6
  connect: (providerConfig: EvmWalletProviderConfig) => Promise<void>;
7
7
  connectingProvider?: EvmWalletProviderConfig | null;
8
8
  error?: Error | null;
9
+ recentMetaStorageKey?: string;
9
10
  reset: VoidFunction;
10
11
  }
11
12
  export declare const EvmWalletProvidersContext: React.Context<EvmWalletProvidersContextConsumer | null>;
@@ -13,8 +14,9 @@ export declare function useEvmWalletProviders(): EvmWalletProvidersContextConsum
13
14
  export type EvmWalletProvidersProviderProps = React.PropsWithChildren<{
14
15
  agreementsNote?: React.ReactNode;
15
16
  network?: EvmNetworkConfig;
17
+ recentMetaStorageKey?: string;
16
18
  onConnect?: (connector?: EthereumConnector) => Promise<void> | void;
17
19
  }>;
18
- export declare const EvmWalletProvidersProvider: (({ agreementsNote, children, network, onConnect, }: EvmWalletProvidersProviderProps) => React.JSX.Element) & {
20
+ export declare const EvmWalletProvidersProvider: (({ agreementsNote, children, network, recentMetaStorageKey, onConnect, }: EvmWalletProvidersProviderProps) => React.JSX.Element) & {
19
21
  displayName: string;
20
22
  };
@@ -10,9 +10,9 @@ export const EvmWalletProvidersContext = React.createContext(null);
10
10
  export function useEvmWalletProviders() {
11
11
  return useContext(EvmWalletProvidersContext);
12
12
  }
13
- export const EvmWalletProvidersProvider = observer(({ agreementsNote, children, network, onConnect, }) => {
13
+ export const EvmWalletProvidersProvider = observer(({ agreementsNote, children, network, recentMetaStorageKey, onConnect, }) => {
14
14
  const walletService = useEvmWalletService();
15
- const [recentMeta, setRecentMeta] = useRecentConnectionMeta();
15
+ const [recentMeta, setRecentMeta] = useRecentConnectionMeta(recentMetaStorageKey);
16
16
  const [error, setError] = React.useState(null);
17
17
  const [connectingProvider, setConnectingProvider] = React.useState(null);
18
18
  const connect = React.useCallback(async (providerConfig) => {
@@ -35,13 +35,13 @@ export const EvmWalletProvidersProvider = observer(({ agreementsNote, children,
35
35
  disconnected: false,
36
36
  providerId: providerConfig.id,
37
37
  type: providerConfig.connector.type,
38
- });
38
+ }, recentMetaStorageKey);
39
39
  walletService.setState('providerId', providerConfig.id);
40
40
  }
41
41
  catch (e) {
42
42
  setError(e);
43
43
  }
44
- }, [network, onConnect, recentMeta, setRecentMeta, walletService]);
44
+ }, [network, onConnect, recentMeta, recentMetaStorageKey, setRecentMeta, walletService]);
45
45
  const reset = React.useCallback(() => {
46
46
  setError(null);
47
47
  setConnectingProvider(null);
@@ -51,8 +51,9 @@ export const EvmWalletProvidersProvider = observer(({ agreementsNote, children,
51
51
  connect,
52
52
  connectingProvider,
53
53
  error,
54
+ recentMetaStorageKey,
54
55
  reset,
55
- }), [agreementsNote, connect, connectingProvider, error, reset]);
56
+ }), [agreementsNote, connect, connectingProvider, error, recentMetaStorageKey, reset]);
56
57
  return React.createElement(EvmWalletProvidersContext.Provider, { value: context }, children);
57
58
  });
58
59
  if (process.env.NODE_ENV !== 'production') {
@@ -5,7 +5,8 @@ export declare function useEvmWalletService(): EvmWalletService;
5
5
  interface EvmWalletProviderProps {
6
6
  agreementsNote?: React.ReactNode;
7
7
  params?: EvmWalletServiceCtorParams;
8
+ recentMetaStorageKey?: string;
8
9
  wallet?: EvmWalletService;
9
10
  }
10
- export declare function EvmWalletServiceProvider({ agreementsNote, children, params, wallet, }: React.PropsWithChildren<EvmWalletProviderProps>): React.JSX.Element;
11
+ export declare function EvmWalletServiceProvider({ agreementsNote, children, params, recentMetaStorageKey, wallet, }: React.PropsWithChildren<EvmWalletProviderProps>): React.JSX.Element;
11
12
  export {};
@@ -9,8 +9,8 @@ export const EvmWalletServiceContext = React.createContext(null);
9
9
  export function useEvmWalletService() {
10
10
  return useContext(EvmWalletServiceContext);
11
11
  }
12
- export function EvmWalletServiceProvider({ agreementsNote, children, params, wallet, }) {
13
- const [, setRecentMeta] = useRecentConnectionMeta();
12
+ export function EvmWalletServiceProvider({ agreementsNote, children, params, recentMetaStorageKey, wallet, }) {
13
+ const [, setRecentMeta] = useRecentConnectionMeta(recentMetaStorageKey);
14
14
  const context = React.useMemo(() => {
15
15
  if (wallet instanceof EvmWalletService) {
16
16
  return wallet;
@@ -19,12 +19,12 @@ export function EvmWalletServiceProvider({ agreementsNote, children, params, wal
19
19
  }, [params, wallet]);
20
20
  React.useEffect(() => reaction(() => context.chainId, chainId => {
21
21
  if (chainId) {
22
- const recentMeta = getRecentConnectionMeta();
22
+ const recentMeta = getRecentConnectionMeta(recentMetaStorageKey);
23
23
  setRecentMeta({ ...recentMeta, chainId: chainId.toString() });
24
24
  }
25
- }, { delay: 10, fireImmediately: context.isReady }), [context, setRecentMeta]);
25
+ }, { delay: 10, fireImmediately: context.isReady }), [context, recentMetaStorageKey, setRecentMeta]);
26
26
  return (React.createElement(EvmWalletServiceContext.Provider, { value: context },
27
- React.createElement(EvmWalletProvidersProvider, { agreementsNote: agreementsNote }, children)));
27
+ React.createElement(EvmWalletProvidersProvider, { agreementsNote: agreementsNote, recentMetaStorageKey: recentMetaStorageKey }, children)));
28
28
  }
29
29
  if (process.env.NODE_ENV !== 'production') {
30
30
  EvmWalletServiceContext.displayName = 'EvmWalletServiceContext';
@@ -1,2 +1,3 @@
1
+ import { type RecentConnectionMeta } from '../hooks/useRecentConnectionMeta';
1
2
  import { type EvmWalletProviderConfig } from '../types';
2
- export declare function useOrderedConnections(providers: Readonly<EvmWalletProviderConfig[]>): EvmWalletProviderConfig[];
3
+ export declare function useOrderedConnections(providers: Readonly<EvmWalletProviderConfig[]>, recentMeta?: RecentConnectionMeta): EvmWalletProviderConfig[];
@@ -1,7 +1,5 @@
1
1
  import * as React from 'react';
2
- import { useRecentConnectionMeta } from '../hooks/useRecentConnectionMeta';
3
- export function useOrderedConnections(providers) {
4
- const [recentMeta] = useRecentConnectionMeta();
2
+ export function useOrderedConnections(providers, recentMeta) {
5
3
  return React.useMemo(() => providers.reduce((acc, provider) => {
6
4
  if (provider.id === recentMeta?.providerId) {
7
5
  acc.unshift({ ...provider, isRecent: true });
@@ -5,11 +5,11 @@ export interface RecentConnectionMeta {
5
5
  providerId: string;
6
6
  type?: EthereumConnectionType;
7
7
  }
8
- export declare function storeRecentConnectionMeta(meta: RecentConnectionMeta | undefined): void;
9
- export declare function getRecentConnectionMeta(): RecentConnectionMeta | undefined;
8
+ export declare function storeRecentConnectionMeta(meta: RecentConnectionMeta | undefined, storageKey?: string): void;
9
+ export declare function getRecentConnectionMeta(storageKey?: string): RecentConnectionMeta | undefined;
10
10
  type UseRecentConnectionMeta = [
11
11
  value: RecentConnectionMeta | undefined,
12
- setValue: (meta: RecentConnectionMeta | undefined) => void
12
+ setValue: (meta: RecentConnectionMeta | undefined, storageKey?: string) => void
13
13
  ];
14
- export declare function useRecentConnectionMeta(): UseRecentConnectionMeta;
14
+ export declare function useRecentConnectionMeta(storageKey?: string): UseRecentConnectionMeta;
15
15
  export {};
@@ -6,16 +6,16 @@ function isRecentConnectionMeta(value) {
6
6
  const meta = { providerId: value.providerId, type: value.type };
7
7
  return Boolean(meta.type && EthereumConnectionType[meta.type] && !!meta.providerId);
8
8
  }
9
- export function storeRecentConnectionMeta(meta) {
9
+ export function storeRecentConnectionMeta(meta, storageKey = EVM_RECENT_CONNECTION) {
10
10
  if (!meta) {
11
- storage.remove(EVM_RECENT_CONNECTION);
11
+ storage.remove(storageKey);
12
12
  return;
13
13
  }
14
14
  debug('Store EVM recent connection', meta);
15
- storage.set(EVM_RECENT_CONNECTION, JSON.stringify(meta));
15
+ storage.set(storageKey, JSON.stringify(meta));
16
16
  }
17
- export function getRecentConnectionMeta() {
18
- const value = storage.get(EVM_RECENT_CONNECTION);
17
+ export function getRecentConnectionMeta(storageKey = EVM_RECENT_CONNECTION) {
18
+ const value = storage.get(storageKey);
19
19
  if (!value) {
20
20
  return undefined;
21
21
  }
@@ -28,14 +28,14 @@ export function getRecentConnectionMeta() {
28
28
  catch (e) {
29
29
  debug(e);
30
30
  }
31
- storeRecentConnectionMeta(undefined);
31
+ storeRecentConnectionMeta(undefined, storageKey);
32
32
  return undefined;
33
33
  }
34
- export function useRecentConnectionMeta() {
35
- const [meta, setMeta] = React.useState(getRecentConnectionMeta());
34
+ export function useRecentConnectionMeta(storageKey = EVM_RECENT_CONNECTION) {
35
+ const [meta, setMeta] = React.useState(getRecentConnectionMeta(storageKey));
36
36
  React.useEffect(() => {
37
37
  const onStorage = (event) => {
38
- if (event.key === EVM_RECENT_CONNECTION && event.newValue) {
38
+ if (event.key === storageKey && event.newValue) {
39
39
  const json = JSON.parse(event.newValue);
40
40
  if (isRecentConnectionMeta(json)) {
41
41
  setMeta(json);
@@ -50,6 +50,6 @@ export function useRecentConnectionMeta() {
50
50
  window.removeEventListener('storage', onStorage);
51
51
  }
52
52
  };
53
- }, []);
53
+ }, [storageKey]);
54
54
  return [meta, storeRecentConnectionMeta];
55
55
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@broxus/evm-connect",
3
- "version": "1.12.3",
3
+ "version": "1.12.5",
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": "d6a9cf57bc7a032f8afff930e16e018b09d250b1"
99
+ "gitHead": "7ac22e228c35e0140f251e2103fa6d4af1ff8679"
100
100
  }