@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
88 lines • 3.06 kB
JavaScript
import network from "@ledgerhq/live-network/network";
import { getEnv } from "@ledgerhq/live-env";
import { Order, } from "../utils/types";
import { rangeDataTable } from "../utils/rangeDataTable";
import URL from "url";
import { getRange, getSortParam } from "../utils";
const baseURL = () => getEnv("LEDGER_COUNTERVALUES_API");
const ROOT_PATH = getEnv("MARKET_API_URL");
export async function getSupportedCoinsList() {
const url = `${ROOT_PATH}/coins/list`;
const { data } = await network({ method: "GET", url });
return data;
}
// fetches currencies data for selected currencies ids
export async function fetchList({ counterCurrency, limit = 50, page = 1, order = Order.MarketCapDesc, search = "", liveCoinsList = [], starred = [], range = "24", }) {
const url = URL.format({
pathname: `${baseURL()}/v3/markets`,
query: {
page: page,
pageSize: limit,
to: counterCurrency,
sort: getSortParam(order, range),
...(search.length >= 2 && { filter: search }),
...(starred.length > 0 && { ids: starred.sort().join(",") }),
...(liveCoinsList.length > 1 && { ids: liveCoinsList.sort().join(",") }),
...([Order.topLosers, Order.topGainers].includes(order) && { top: 100 }),
},
});
const { data } = await network({
method: "GET",
url,
});
return data;
}
// Fetches list of supported counterCurrencies
export async function supportedCounterCurrencies() {
const url = `${ROOT_PATH}/simple/supported_vs_currencies`;
const { data } = await network({
method: "GET",
url,
});
return data;
}
export async function fetchCurrencyChartData({ id, counterCurrency, range = "24h", }) {
const { days, interval } = rangeDataTable[range];
const url = URL.format({
pathname: `${ROOT_PATH}/coins/${id}/market_chart`,
query: {
vs_currency: counterCurrency,
days,
interval,
},
});
const { data } = await network({
method: "GET",
url,
});
return { [range]: data.prices };
}
export async function fetchCurrency({ counterCurrency, id, }) {
const url = URL.format({
pathname: `${baseURL()}/v3/markets`,
query: {
to: counterCurrency,
ids: id,
pageSize: 1,
limit: 1,
},
});
const { data } = await network({ method: "GET", url });
return data[0];
}
export async function fetchMarketPerformers({ counterCurrency, range, limit = 5, top = 50, sort, supported, }) {
const sortParam = `${sort === "asc" ? "positive" : "negative"}-price-change-${getRange(range)}`;
const url = URL.format({
pathname: `${baseURL()}/v3/markets`,
query: {
to: counterCurrency,
limit,
top,
sort: sortParam,
supported,
},
});
const { data } = await network({ method: "GET", url });
return data;
}
//# sourceMappingURL=index.js.map