@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
92 lines • 3.46 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSortParam = void 0;
exports.isAvailableForTrading = isAvailableForTrading;
exports.filterMarketPerformersByAvailability = filterMarketPerformersByAvailability;
exports.getChangePercentage = getChangePercentage;
exports.getRange = getRange;
const types_1 = require("./types");
// Export all types from types.ts
__exportStar(require("./types"), exports);
// Export fixtures for testing
__exportStar(require("./fixtures"), exports);
/**
* Check if a currency is available for trading (buy/sell/swap)
*/
function isAvailableForTrading(id, ledgerIds, isCurrencyAvailable, currenciesForSwapAllSet) {
const canBuy = isCurrencyAvailable(id, "onRamp");
const canSwap = currenciesForSwapAllSet.has(id);
const canBuyOrSwapViaLedgerIds = ledgerIds.some(lrId => isCurrencyAvailable(lrId, "onRamp") || currenciesForSwapAllSet.has(lrId));
return canBuy || canSwap || canBuyOrSwapViaLedgerIds;
}
/**
* Filter market performers by availability for trading, with fallback to original list
*/
function filterMarketPerformersByAvailability(data, isCurrencyAvailable, currenciesForSwapAllSet, limit) {
const availableItems = data.filter(item => isAvailableForTrading(item.id, item.ledgerIds, isCurrencyAvailable, currenciesForSwapAllSet));
// Fallback to original list if no items match
if (availableItems.length === 0) {
return data.slice(0, limit);
}
return availableItems.slice(0, limit);
}
function getChangePercentage(data, range) {
switch (range) {
case "day":
return data.priceChangePercentage24h ?? 0;
case "week":
return data.priceChangePercentage7d ?? 0;
case "month":
return data.priceChangePercentage30d ?? 0;
case "year":
case "all":
default:
return data.priceChangePercentage1y ?? 0;
}
}
function getRange(range) {
switch (range) {
case "day":
case "24h":
return "1d";
case "7d":
case "week":
return "1w";
case "30d":
case "month":
return "1m";
case "1y":
case "year":
case "all":
return "1y";
}
}
const getSortParam = (order, range) => {
switch (order) {
default:
case types_1.Order.MarketCapDesc:
return "market-cap-rank";
case types_1.Order.MarketCapAsc:
return "market-cap-rank-desc";
case types_1.Order.topLosers:
return `negative-price-change-${getRange(range)}`;
case types_1.Order.topGainers:
return `positive-price-change-${getRange(range)}`;
}
};
exports.getSortParam = getSortParam;
//# sourceMappingURL=index.js.map