@knine-sdk/react
Version:
React helpers for Knine Finance projects. Part of Knine JS SDK
35 lines (32 loc) • 1.36 kB
JavaScript
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 };