UNPKG

@ledgerhq/live-common

Version:
65 lines 2.58 kB
import { getTokenOrCryptoCurrencyById } from "../../deposit/helper"; import { isTokenCurrency } from "../../currencies"; export const safeCurrencyLookup = (id) => { try { return getTokenOrCryptoCurrencyById(id); } catch { return null; } }; export const isProviderToken = (currency, providerId) => { return isTokenCurrency(currency) && currency.id.toLowerCase().includes(providerId.toLowerCase()); }; export const getProviderCurrency = (provider) => { const providerToken = provider.currenciesByNetwork.find(currency => { return isProviderToken(currency, provider.providerId); }); if (providerToken) { return providerToken; } return safeCurrencyLookup(provider.providerId) ?? provider.currenciesByNetwork[0]; }; export const buildProviderCoverageMap = (providers) => { const providerIdToCoveringProviders = new Map(); for (const { providerId, currenciesByNetwork } of providers) { for (const { id } of currenciesByNetwork) { if (!providerIdToCoveringProviders.has(id)) { providerIdToCoveringProviders.set(id, new Set()); } providerIdToCoveringProviders.get(id).add(providerId); } } return providerIdToCoveringProviders; }; export const filterProvidersByIds = (providers, currencyIdsSet, providerCoverageMap) => { const filtered = []; for (const provider of providers) { const filteredCurrencies = provider.currenciesByNetwork.filter(currency => currencyIdsSet.has(currency.id)); if (filteredCurrencies.length === 0) continue; const providerHasOwnCurrency = provider.currenciesByNetwork.some(currency => currency.id === provider.providerId); if (!providerHasOwnCurrency) { const coveringProviders = providerCoverageMap.get(provider.providerId); const isProviderIdCoveredElsewhere = coveringProviders && coveringProviders.size > 1; if (isProviderIdCoveredElsewhere) continue; } if (filteredCurrencies.length === provider.currenciesByNetwork.length) { filtered.push(provider); } else { filtered.push({ ...provider, currenciesByNetwork: filteredCurrencies, }); } } return filtered; }; export const extractProviderCurrencies = (providers) => { return providers .map(provider => getProviderCurrency(provider)) .filter((currency) => currency !== null); }; //# sourceMappingURL=currencyUtils.js.map