@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
65 lines • 3.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createNetworkConfigurationHook = exports.getRightElement = exports.getLeftElement = void 0;
const useLeftAccounts_1 = require("../hooks/useLeftAccounts");
const useLeftAccountsApy_1 = require("../hooks/useLeftAccountsApy");
const useRightBalanceNetwork_1 = require("../hooks/useRightBalanceNetwork");
const composeHooks_1 = require("../../utils/composeHooks");
const sortByBalance_1 = require("../utils/sortByBalance");
const getLeftElement = (NetworkConfigurationDeps) => (leftElement) => {
switch (leftElement) {
case "undefined":
return undefined;
case "numberOfAccountsAndApy":
return (params) => (0, useLeftAccountsApy_1.useLeftAccountsApyModule)(params, NetworkConfigurationDeps.useAccountData, NetworkConfigurationDeps.accountsCountAndApy, params.networks);
case "numberOfAccounts":
default:
return (0, useLeftAccounts_1.createUseLeftAccountsModule)({
useAccountData: NetworkConfigurationDeps.useAccountData,
accountsCount: NetworkConfigurationDeps.accountsCount,
});
}
};
exports.getLeftElement = getLeftElement;
const getRightElement = (NetworkConfigurationDeps) => (rightElement) => {
switch (rightElement) {
case "undefined":
return undefined;
case "balance":
default:
return (0, useRightBalanceNetwork_1.createUseRightBalanceNetwork)({
useBalanceDeps: NetworkConfigurationDeps.useBalanceDeps,
balanceItem: NetworkConfigurationDeps.balanceItem,
});
}
};
exports.getRightElement = getRightElement;
const createNetworkConfigurationHook = (NetworkConfigurationDeps) => ({ networksConfig, accounts$ }) => {
const { leftElement, rightElement } = networksConfig ?? {};
const leftHook = (0, exports.getLeftElement)(NetworkConfigurationDeps)(leftElement);
const rightHook = (0, exports.getRightElement)(NetworkConfigurationDeps)(rightElement);
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
const hooks = [rightHook, leftHook].filter(Boolean);
return (assets, networks) => {
const composedHook = (0, composeHooks_1.composeHooks)(...hooks.map(hook => () => hook({
assets,
accounts$,
networks,
})));
const result = composedHook(assets);
if (leftElement === "numberOfAccounts" ||
leftElement === "numberOfAccountsAndApy" ||
leftElement === undefined // default
) {
result.sort((a, b) => (b?.count || 0) - (a?.count || 0));
}
if (rightElement === "balance" ||
rightElement === undefined // default
) {
result.sort((a, b) => (0, sortByBalance_1.compareByBalanceThenFiat)(a?.balanceData, b?.balanceData));
}
return result;
};
};
exports.createNetworkConfigurationHook = createNetworkConfigurationHook;
//# sourceMappingURL=createNetworkConfiguration.js.map