UNPKG

@ledgerhq/live-common

Version:
37 lines 1.91 kB
import { LoadingStatus } from "./type"; import { useEffect, useMemo, useState } from "react"; import { isCurrencySupported, listSupportedCurrencies, listTokens } from "../currencies"; import { loadCurrenciesByProvider } from "./helper"; import { useCurrenciesUnderFeatureFlag } from "../modularDrawer/hooks/useCurrenciesUnderFeatureFlag"; // FIXME(LIVE-10505): bad performane & shared utility to move to coin-framework const listSupportedTokens = () => listTokens().filter(t => isCurrencySupported(t.parentCurrency)); const initialResult = { sortedCryptoCurrencies: [], currenciesByProvider: [], }; export const useGroupedCurrenciesByProvider = (withLoading) => { const [result, setResult] = useState(initialResult); // the import is from MAD but as this hook will be removed, it's fine to keep it here const { deactivatedCurrencyIds } = useCurrenciesUnderFeatureFlag(); const [loadingStatus, setLoadingStatus] = useState(LoadingStatus.Idle); const coinsAndTokensSupported = useMemo(() => listSupportedCurrencies() .concat(listSupportedTokens()) .filter(c => !deactivatedCurrencyIds.has(c.id)), [deactivatedCurrencyIds]); // Get mapped assets filtered by supported & sorted currencies, grouped by provider id useEffect(() => { if (withLoading) { setLoadingStatus(LoadingStatus.Idle); loadCurrenciesByProvider(coinsAndTokensSupported) .then(data => { setResult(data); setLoadingStatus(LoadingStatus.Success); }) .catch(() => setLoadingStatus(LoadingStatus.Error)); } else { loadCurrenciesByProvider(coinsAndTokensSupported).then(setResult); } }, [coinsAndTokensSupported, withLoading]); return withLoading ? { result, loadingStatus } : result; }; //# sourceMappingURL=useGroupedCurrenciesByProvider.hook.js.map