UNPKG

@knine-sdk/react

Version:

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

43 lines (36 loc) 1.71 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var warning = require('tiny-warning'); var react = require('react'); var useSDK = require('./useSDK.js'); var useEthereumSWR = require('./useEthereumSWR.js'); var useDebounceCallback = require('./useDebounceCallback.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var warning__default = /*#__PURE__*/_interopDefaultLegacy(warning); const useEthereumBalance = (account, config, providerWeb3) => { const { providerWeb3: sdkProvider, account: sdkAccount } = useSDK.useSDK(); const mergedAccount = account !== null && account !== void 0 ? account : sdkAccount; const chosenWeb3Provider = providerWeb3 !== null && providerWeb3 !== void 0 ? providerWeb3 : sdkProvider; const result = useEthereumSWR.useEthereumSWR({ shouldFetch: !!mergedAccount, method: 'getBalance', params: [mergedAccount, 'latest'], config, }); const updateBalanceDebounced = useDebounceCallback.useDebounceCallback(result.update, 1000); react.useEffect(() => { if (!mergedAccount || !chosenWeb3Provider) return; try { chosenWeb3Provider.on('block', updateBalanceDebounced); return () => { chosenWeb3Provider.off('block', updateBalanceDebounced); }; } catch (error) { return warning__default["default"](false, 'Cannot subscribe to Block event'); } }, [chosenWeb3Provider, mergedAccount, updateBalanceDebounced]); return result; }; exports.useEthereumBalance = useEthereumBalance;