@lido-sdk/react
Version:
This project is being slowly deprecated and may not receive further updates. Check out [modern Lido SDK](https://github.com/lidofinance/lido-ethereum-sdk/pulls) to access latest functionality. It is actively maintained and is built for interacting with Li
48 lines (45 loc) • 1.79 kB
JavaScript
import { jsx } from 'react/jsx-runtime';
import invariant from 'tiny-invariant';
import { getDefaultProvider, getNetwork } from '@ethersproject/providers';
import { memo, createContext, useMemo } from 'react';
const SDKContext = createContext(null);
SDKContext.displayName = 'LidoSDKContext';
const ProviderSDK = (props) => {
const { children, account, chainId, supportedChainIds, providerWeb3, swrConfig, } = props;
invariant(chainId, 'invalid chainId');
invariant(supportedChainIds === null || supportedChainIds === void 0 ? void 0 : supportedChainIds.length, 'Supported chains are required');
const providerRpc = useMemo(() => {
var _a;
return (_a = props.providerRpc) !== null && _a !== void 0 ? _a : getDefaultProvider(getNetwork(chainId));
}, [props.providerRpc, chainId]);
const providerMainnetRpc = useMemo(() => {
var _a;
return (_a = props.providerMainnetRpc) !== null && _a !== void 0 ? _a : getDefaultProvider('mainnet');
}, [props.providerMainnetRpc]);
const onError = useMemo(() => {
var _a;
return (_a = props.onError) !== null && _a !== void 0 ? _a : console.error;
}, [props.onError]);
const value = useMemo(() => ({
account,
chainId,
supportedChainIds,
providerMainnetRpc,
providerRpc,
providerWeb3,
swrConfig,
onError,
}), [
account,
chainId,
supportedChainIds,
providerMainnetRpc,
providerRpc,
providerWeb3,
swrConfig,
onError,
]);
return jsx(SDKContext.Provider, Object.assign({ value: value }, { children: children }), void 0);
};
var SDK = memo(ProviderSDK);
export { SDKContext, SDK as default };