@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
40 lines • 1.99 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.useRightBalanceAsset = useRightBalanceAsset;
const react_1 = require("react");
const bignumber_js_1 = __importDefault(require("bignumber.js"));
const index_1 = require("@ledgerhq/asset-aggregation/assetAggregation/index");
const formatProviderResult = (providerCurrency, totalBalance, totalFiatValue) => ({
currency: providerCurrency,
balance: totalBalance,
fiatValue: totalFiatValue.toNumber(),
});
function useRightBalanceAsset(assets, { useBalanceDeps, balanceItem, assetsMap, }) {
const { flattenedAccounts, state, counterValueCurrency } = useBalanceDeps();
const grouped = (0, react_1.useMemo)(() => (0, index_1.groupAccountsByAsset)(flattenedAccounts, state, counterValueCurrency), [flattenedAccounts, state, counterValueCurrency]);
return (0, react_1.useMemo)(() => {
const balanceMap = new Map();
for (const [, { currencies, mainCurrency }] of assetsMap) {
const { totalBalance, totalFiatValue, referenceCurrency } = (0, index_1.calculateProviderTotals)(currencies, grouped);
const currencyToUse = referenceCurrency || mainCurrency;
const balanceData = formatProviderResult(currencyToUse, totalBalance, totalFiatValue);
balanceMap.set(mainCurrency.id, balanceData);
}
return assets.map(asset => {
const balanceData = balanceMap.get(asset.id) || {
currency: asset,
balance: new bignumber_js_1.default(0),
fiatValue: 0,
};
return {
...asset,
balanceData,
rightElement: balanceItem(balanceData),
};
});
}, [assets, assetsMap, balanceItem, grouped]);
}
//# sourceMappingURL=useRightBalanceAsset.js.map