@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
38 lines (32 loc) • 1.23 kB
text/typescript
import { useQueries } from "@tanstack/react-query";
import { fetchCurrencyChartData } from "../../cg-client/api";
import { QUERY_KEY } from "../utils/queryKeys";
import { REFETCH_TIME_ONE_MINUTE, BASIC_REFETCH } from "../utils/timers";
type UseLargeMoverChartDataParams = {
ids: string[];
counterCurrency: string;
range: string;
};
export const useLargeMoverChartData = ({
ids,
counterCurrency,
range,
}: UseLargeMoverChartDataParams) => {
const chartQueries = useQueries({
queries: ids.map(id => ({
queryKey: [QUERY_KEY.CurrencyChartData, id, counterCurrency, range],
queryFn: () => fetchCurrencyChartData({ id, counterCurrency, range }),
refetchInterval: REFETCH_TIME_ONE_MINUTE * BASIC_REFETCH,
staleTime: REFETCH_TIME_ONE_MINUTE * BASIC_REFETCH,
})),
});
const loadingChart = chartQueries.some(query => query.isLoading);
const errorChart = chartQueries.every(query => query.isError);
const chartDataArray = ids.map((id, index) => ({
idChartData: id,
chartData: chartQueries[index]?.data,
isLoading: chartQueries[index]?.isLoading || false,
isError: chartQueries[index]?.isError || false,
}));
return { chartDataArray, loadingChart, errorChart };
};