UNPKG

@knine-sdk/react

Version:

React helpers for Knine Finance projects. Part of Knine JS SDK

67 lines (64 loc) 2.53 kB
import { jsx } from 'react/jsx-runtime'; import invariant from 'tiny-invariant'; import { getDefaultProvider, getNetwork } from '@ethersproject/providers'; import { memo, createContext, useMemo, useCallback } from 'react'; const SDKContext = createContext(null); SDKContext.displayName = 'KnineSDKContext'; const ProviderSDK = (props) => { const { children, account, chainId, supportedChainIds, providerWeb3, providersRpcSupportedChains, 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 findProviderByChainId = useCallback((chainId) => { if (providersRpcSupportedChains && chainId in providersRpcSupportedChains) { return { chainId, provider: providersRpcSupportedChains === null || providersRpcSupportedChains === void 0 ? void 0 : providersRpcSupportedChains[chainId], }; } else { return { chainId, provider: undefined, }; } }, [providersRpcSupportedChains]); const value = useMemo(() => ({ account, chainId, supportedChainIds, providerMainnetRpc, providerRpc, providerWeb3, providersRpcSupportedChains, swrConfig, onError, findProviderByChainId, }), [ account, chainId, supportedChainIds, providerMainnetRpc, providerRpc, providerWeb3, providersRpcSupportedChains, swrConfig, onError, findProviderByChainId, ]); return jsx(SDKContext.Provider, Object.assign({ value: value }, { children: children }), void 0); }; var SDK = memo(ProviderSDK); export { SDKContext, SDK as default };