UNPKG

@ledgerhq/live-common

Version:
59 lines 2.65 kB
import { createUseLeftAccountsModule } from "../hooks/useLeftAccounts"; import { useLeftAccountsApyModule } from "../hooks/useLeftAccountsApy"; import { createUseRightBalanceNetwork } from "../hooks/useRightBalanceNetwork"; import { composeHooks } from "../../utils/composeHooks"; import { compareByBalanceThenFiat } from "../utils/sortByBalance"; export const getLeftElement = (NetworkConfigurationDeps) => (leftElement) => { switch (leftElement) { case "undefined": return undefined; case "numberOfAccountsAndApy": return (params) => useLeftAccountsApyModule(params, NetworkConfigurationDeps.useAccountData, NetworkConfigurationDeps.accountsCountAndApy, params.networks); case "numberOfAccounts": default: return createUseLeftAccountsModule({ useAccountData: NetworkConfigurationDeps.useAccountData, accountsCount: NetworkConfigurationDeps.accountsCount, }); } }; export const getRightElement = (NetworkConfigurationDeps) => (rightElement) => { switch (rightElement) { case "undefined": return undefined; case "balance": default: return createUseRightBalanceNetwork({ useBalanceDeps: NetworkConfigurationDeps.useBalanceDeps, balanceItem: NetworkConfigurationDeps.balanceItem, }); } }; export const createNetworkConfigurationHook = (NetworkConfigurationDeps) => ({ networksConfig, accounts$ }) => { const { leftElement, rightElement } = networksConfig ?? {}; const leftHook = getLeftElement(NetworkConfigurationDeps)(leftElement); const rightHook = getRightElement(NetworkConfigurationDeps)(rightElement); // eslint-disable-next-line @typescript-eslint/consistent-type-assertions const hooks = [rightHook, leftHook].filter(Boolean); return (assets, networks) => { const composedHook = 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) => compareByBalanceThenFiat(a?.balanceData, b?.balanceData)); } return result; }; }; //# sourceMappingURL=createNetworkConfiguration.js.map