@suiware/kit
Version:
Opinionated React components and hooks for building Sui dApps.
80 lines (74 loc) • 2.26 kB
JavaScript
;
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