UNPKG

@suiware/kit

Version:

Opinionated React components and hooks for building Sui dApps.

93 lines (87 loc) 2.73 kB
'use strict'; var themes = require('@radix-ui/themes'); var dappKit = require('@mysten/dapp-kit'); var react = require('react'); var BigNumber = require('bignumber.js'); var jsxRuntime = require('react/jsx-runtime'); 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(null, null, function* () { refetch(); }) }; }; var useBalance_default = useBalance; var Balance = () => { const { balance } = useBalance_default({ autoRefetch: true }); if (balance == null) { return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {}); } return /* @__PURE__ */ jsxRuntime.jsxs(themes.Badge, { variant: "surface", color: "green", className: "sk-balance-badge", children: [ balance, " SUI" ] }); }; var Balance_default = Balance; module.exports = Balance_default; //# sourceMappingURL=Balance.js.map //# sourceMappingURL=Balance.js.map