@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
49 lines • 2.08 kB
JavaScript
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";
import { getEnv } from "@ledgerhq/live-env";
import { getRange } from "../utils";
import { REFETCH_TIME_ONE_MINUTE, BASIC_REFETCH } from "../utils/timers";
import { MarketDataTags } from "./types";
import { format, formatPerformer } from "../utils/currencyFormatter";
export const marketApi = createApi({
reducerPath: "marketApi",
baseQuery: fetchBaseQuery({
baseUrl: getEnv("LEDGER_COUNTERVALUES_API"),
}),
tagTypes: [MarketDataTags.Performers, MarketDataTags.CurrencyData],
endpoints: build => ({
getMarketPerformers: build.query({
query: ({ counterCurrency, range, limit = 5, top = 50, sort, supported }) => {
const sortParam = `${sort === "asc" ? "positive" : "negative"}-price-change-${getRange(range)}`;
return {
url: "/v3/markets",
params: {
to: counterCurrency,
limit,
top,
sort: sortParam,
supported,
},
};
},
providesTags: [MarketDataTags.Performers],
transformResponse: (response) => response.map(formatPerformer),
keepUnusedDataFor: REFETCH_TIME_ONE_MINUTE / 1000,
}),
getCurrencyData: build.query({
query: ({ id, counterCurrency }) => ({
url: "/v3/markets",
params: {
to: counterCurrency,
ids: id,
pageSize: 1,
limit: 1,
},
}),
providesTags: [MarketDataTags.CurrencyData],
transformResponse: (response) => response?.[0] ? format(response[0]) : undefined,
keepUnusedDataFor: (REFETCH_TIME_ONE_MINUTE * BASIC_REFETCH) / 1000,
}),
}),
});
export const { useGetMarketPerformersQuery, useGetCurrencyDataQuery } = marketApi;
//# sourceMappingURL=marketApi.js.map