@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
59 lines • 2.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useAssetsData = useAssetsData;
const react_1 = require("react");
const api_1 = require("../state-manager/api");
const errorUtils_1 = require("../utils/errorUtils");
const emptyData = () => ({
cryptoAssets: {},
networks: {},
cryptoOrTokenCurrencies: {},
interestRates: {},
markets: {},
currenciesOrder: {
metaCurrencyIds: [],
key: "",
order: "",
},
pagination: { nextCursor: "" },
});
function useAssetsData({ search, currencyIds, useCase, areCurrenciesFiltered, product, version, isStaging, includeTestNetworks, skip, }) {
const { data, isLoading, error, fetchNextPage, isSuccess, refetch, isFetching, isError, isFetchingNextPage, } = (0, api_1.useGetAssetsDataInfiniteQuery)({
search,
useCase,
currencyIds: areCurrenciesFiltered ? currencyIds : undefined,
product,
version,
isStaging,
includeTestNetworks,
}, { skip });
const joinedPages = (0, react_1.useMemo)(() => {
return data?.pages.reduce((acc, page) => {
Object.assign(acc.cryptoAssets, page.cryptoAssets);
Object.assign(acc.networks, page.networks);
Object.assign(acc.cryptoOrTokenCurrencies, page.cryptoOrTokenCurrencies);
Object.assign(acc.interestRates, page.interestRates);
Object.assign(acc.markets, page.markets);
acc.currenciesOrder.metaCurrencyIds.push(...page.currenciesOrder.metaCurrencyIds);
acc.currenciesOrder.key = page.currenciesOrder.key;
acc.currenciesOrder.order = page.currenciesOrder.order;
acc.pagination.nextCursor = page.pagination.nextCursor;
return acc;
}, emptyData());
}, [data]);
const hasMore = Boolean(joinedPages?.pagination.nextCursor);
const isInitialLoading = isLoading || (isFetching && !isFetchingNextPage);
const errorInfo = (0, react_1.useMemo)(() => (0, errorUtils_1.parseError)(error), [error]);
return {
data: joinedPages,
isLoading: isInitialLoading,
isFetchingNextPage,
error,
errorInfo,
loadNext: hasMore ? fetchNextPage : undefined,
isSuccess,
isError,
refetch,
};
}
//# sourceMappingURL=useAssetsData.js.map