UNPKG

@suiware/kit

Version:

Opinionated React components and hooks for building Sui dApps.

80 lines (74 loc) 2.26 kB
'use strict'; var dappKit = require('@mysten/dapp-kit'); var react = require('react'); var BigNumber = require('bignumber.js'); function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; } var BigNumber__default = /*#__PURE__*/_interopDefault(BigNumber); var __async = (__this, __arguments, generator) => { return new Promise((resolve, reject) => { var fulfilled = (value) => { try { step(generator.next(value)); } catch (e) { reject(e); } }; var rejected = (value) => { try { step(generator.throw(value)); } catch (e) { reject(e); } }; var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); step((generator = generator.apply(__this, __arguments)).next()); }); }; var formatAmount = (amount) => { if (amount == null) { return void 0; } let bn = new BigNumber__default.default(amount.toString()); bn = bn.shiftedBy(-9); return bn.decimalPlaces(2, BigNumber__default.default.ROUND_DOWN).toFormat(2); }; // src/hooks/useBalance.tsx var DEFAULT_REFETCH_INTERVAL = 3e3; var useBalance = ({ autoRefetch, autoRefetchInterval } = {}) => { const currentAccount = dappKit.useCurrentAccount(); const { data, refetch, error } = dappKit.useSuiClientQuery("getBalance", { owner: currentAccount == null ? void 0 : currentAccount.address }); react.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; module.exports = useBalance_default; //# sourceMappingURL=useBalance.js.map //# sourceMappingURL=useBalance.js.map