@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
34 lines • 1.67 kB
JavaScript
import { useMemo } from "react";
import BigNumber from "bignumber.js";
import { calculateProviderTotals, groupAccountsByAsset, } from "@ledgerhq/asset-aggregation/assetAggregation/index";
const formatProviderResult = (providerCurrency, totalBalance, totalFiatValue) => ({
currency: providerCurrency,
balance: totalBalance,
fiatValue: totalFiatValue.toNumber(),
});
export function useRightBalanceAsset(assets, { useBalanceDeps, balanceItem, assetsMap, }) {
const { flattenedAccounts, state, counterValueCurrency } = useBalanceDeps();
const grouped = useMemo(() => groupAccountsByAsset(flattenedAccounts, state, counterValueCurrency), [flattenedAccounts, state, counterValueCurrency]);
return useMemo(() => {
const balanceMap = new Map();
for (const [, { currencies, mainCurrency }] of assetsMap) {
const { totalBalance, totalFiatValue, referenceCurrency } = 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(0),
fiatValue: 0,
};
return {
...asset,
balanceData,
rightElement: balanceItem(balanceData),
};
});
}, [assets, assetsMap, balanceItem, grouped]);
}
//# sourceMappingURL=useRightBalanceAsset.js.map