@knine-sdk/react
Version:
React helpers for Knine Finance projects. Part of Knine JS SDK
76 lines (69 loc) • 2.89 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var jsxRuntime = require('react/jsx-runtime');
var invariant = require('tiny-invariant');
var providers = require('@ethersproject/providers');
var react = require('react');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var invariant__default = /*#__PURE__*/_interopDefaultLegacy(invariant);
const SDKContext = react.createContext(null);
SDKContext.displayName = 'KnineSDKContext';
const ProviderSDK = (props) => {
const { children, account, chainId, supportedChainIds, providerWeb3, providersRpcSupportedChains, swrConfig, } = props;
invariant__default["default"](chainId, 'invalid chainId');
invariant__default["default"](supportedChainIds === null || supportedChainIds === void 0 ? void 0 : supportedChainIds.length, 'Supported chains are required');
const providerRpc = react.useMemo(() => {
var _a;
return (_a = props.providerRpc) !== null && _a !== void 0 ? _a : providers.getDefaultProvider(providers.getNetwork(chainId));
}, [props.providerRpc, chainId]);
const providerMainnetRpc = react.useMemo(() => {
var _a;
return (_a = props.providerMainnetRpc) !== null && _a !== void 0 ? _a : providers.getDefaultProvider('mainnet');
}, [props.providerMainnetRpc]);
const onError = react.useMemo(() => {
var _a;
return (_a = props.onError) !== null && _a !== void 0 ? _a : console.error;
}, [props.onError]);
const findProviderByChainId = react.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 = react.useMemo(() => ({
account,
chainId,
supportedChainIds,
providerMainnetRpc,
providerRpc,
providerWeb3,
providersRpcSupportedChains,
swrConfig,
onError,
findProviderByChainId,
}), [
account,
chainId,
supportedChainIds,
providerMainnetRpc,
providerRpc,
providerWeb3,
providersRpcSupportedChains,
swrConfig,
onError,
findProviderByChainId,
]);
return jsxRuntime.jsx(SDKContext.Provider, Object.assign({ value: value }, { children: children }), void 0);
};
var SDK = react.memo(ProviderSDK);
exports.SDKContext = SDKContext;
exports["default"] = SDK;