@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
34 lines (30 loc) • 1.11 kB
text/typescript
import { useQueries } from "@tanstack/react-query";
import { fetchCurrency } from "../api";
import { QUERY_KEY } from "../utils/queryKeys";
import { REFETCH_TIME_ONE_MINUTE, BASIC_REFETCH } from "../utils/timers";
import { MarketItemResponse } from "../utils/types";
import { format } from "../utils/currencyFormatter";
type UseLargeMoverCurrenciesParams = {
ids: string[];
counterCurrency: string;
};
export const useLargeMoverCurrencies = ({
ids,
counterCurrency,
}: UseLargeMoverCurrenciesParams) => {
const currencyQueries = useQueries({
queries: ids.map(id => ({
queryKey: [QUERY_KEY.CurrencyDataRaw, id, counterCurrency],
queryFn: () => fetchCurrency({ id, counterCurrency }),
refetchInterval: REFETCH_TIME_ONE_MINUTE * BASIC_REFETCH,
staleTime: REFETCH_TIME_ONE_MINUTE * BASIC_REFETCH,
select: (data: MarketItemResponse) => format(data),
})),
});
return ids.map((id, index) => ({
id,
data: currencyQueries[index]?.data,
isLoading: currencyQueries[index]?.isLoading || false,
isError: currencyQueries[index]?.isError || false,
}));
};