UNPKG

@knine-sdk/react

Version:

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

35 lines (32 loc) 1.36 kB
import warning from 'tiny-warning'; import { useEffect } from 'react'; import { useSDK } from './useSDK.js'; import { useEthereumSWR } from './useEthereumSWR.js'; import { useDebounceCallback } from './useDebounceCallback.js'; const useEthereumBalance = (account, config, providerWeb3) => { const { providerWeb3: sdkProvider, account: sdkAccount } = useSDK(); const mergedAccount = account !== null && account !== void 0 ? account : sdkAccount; const chosenWeb3Provider = providerWeb3 !== null && providerWeb3 !== void 0 ? providerWeb3 : sdkProvider; const result = useEthereumSWR({ shouldFetch: !!mergedAccount, method: 'getBalance', params: [mergedAccount, 'latest'], config, }); const updateBalanceDebounced = useDebounceCallback(result.update, 1000); useEffect(() => { if (!mergedAccount || !chosenWeb3Provider) return; try { chosenWeb3Provider.on('block', updateBalanceDebounced); return () => { chosenWeb3Provider.off('block', updateBalanceDebounced); }; } catch (error) { return warning(false, 'Cannot subscribe to Block event'); } }, [chosenWeb3Provider, mergedAccount, updateBalanceDebounced]); return result; }; export { useEthereumBalance };