@suiware/kit
Version:
Opinionated React components and hooks for building Sui dApps.
55 lines (52 loc) • 1.58 kB
JavaScript
import { __async } from './chunk-IQXHJV5O.mjs';
import { useCurrentAccount, useSuiClientQuery } from '@mysten/dapp-kit';
import { useEffect } from 'react';
import BigNumber from 'bignumber.js';
var formatAmount = (amount) => {
if (amount == null) {
return void 0;
}
let bn = new BigNumber(amount.toString());
bn = bn.shiftedBy(-9);
return bn.decimalPlaces(2, BigNumber.ROUND_DOWN).toFormat(2);
};
// src/hooks/useBalance.tsx
var DEFAULT_REFETCH_INTERVAL = 3e3;
var useBalance = ({
autoRefetch,
autoRefetchInterval
} = {}) => {
const currentAccount = useCurrentAccount();
const { data, refetch, error } = useSuiClientQuery("getBalance", {
owner: currentAccount == null ? void 0 : currentAccount.address
});
useEffect(() => {
if (autoRefetch == null || autoRefetch === false) {
return;
}
const interval = setInterval(
() => {
if (currentAccount == null || !autoRefetch) {
clearInterval(interval);
return;
}
refetch();
},
autoRefetch && autoRefetchInterval != null ? autoRefetchInterval : DEFAULT_REFETCH_INTERVAL
);
return () => {
clearTimeout(interval);
};
}, [refetch, autoRefetch, autoRefetchInterval, currentAccount]);
return {
balance: data ? formatAmount(data.totalBalance) : void 0,
error,
refetch: () => __async(void 0, null, function* () {
refetch();
})
};
};
var useBalance_default = useBalance;
export { useBalance_default };
//# sourceMappingURL=chunk-VHHQEKW7.mjs.map
//# sourceMappingURL=chunk-VHHQEKW7.mjs.map