UNPKG

@yoroi/portfolio

Version:

The Portfolio package of Yoroi SDK

76 lines (75 loc) 2.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.toStart = exports.toEnd = exports.sortTokenInfos = exports.sortTokenAmountsByInfo = exports.alpha = void 0; var _types = require("@yoroi/types"); const alpha = transform => (a, b) => transform(a).localeCompare(transform(b)); exports.alpha = alpha; const toEnd = predicate => (a, b) => predicate(a) ? 1 : predicate(b) ? -1 : 0; exports.toEnd = toEnd; const toStart = predicate => (a, b) => predicate(a) ? -1 : predicate(b) ? 1 : 0; exports.toStart = toStart; const sortTokenInfos = _ref => { let { primaryTokenInfo, secondaryTokenInfos } = _ref; return [...secondaryTokenInfos].sort(alpha(tokenInfo => { switch (tokenInfo.type) { case _types.Portfolio.Token.Type.FT: { if (tokenInfo.ticker !== '') return tokenInfo.ticker.toLocaleLowerCase(); return tokenInfo.name.toLocaleLowerCase(); } case _types.Portfolio.Token.Type.NFT: return tokenInfo.name.toLocaleLowerCase(); } })).sort(toEnd(tokenInfo => { switch (tokenInfo.status) { case _types.Portfolio.Token.Status.Unknown: case _types.Portfolio.Token.Status.Invalid: case _types.Portfolio.Token.Status.Scam: return true; } switch (tokenInfo.type) { case _types.Portfolio.Token.Type.FT: return !tokenInfo.ticker && !tokenInfo.name; case _types.Portfolio.Token.Type.NFT: return !tokenInfo.name; } })).sort(toStart(tokenInfo => tokenInfo.id === primaryTokenInfo.id)); }; exports.sortTokenInfos = sortTokenInfos; const sortTokenAmountsByInfo = _ref2 => { let { primaryTokenInfo, amounts } = _ref2; return [...amounts].sort(alpha(tokenBalance => { switch (tokenBalance.info.type) { case _types.Portfolio.Token.Type.FT: { if (tokenBalance.info.ticker !== '') return tokenBalance.info.ticker.toLocaleLowerCase(); return tokenBalance.info.name.toLocaleLowerCase(); } case _types.Portfolio.Token.Type.NFT: return tokenBalance.info.name.toLocaleLowerCase(); } })).sort(toEnd(tokenBalance => { switch (tokenBalance.info.status) { case _types.Portfolio.Token.Status.Unknown: case _types.Portfolio.Token.Status.Invalid: case _types.Portfolio.Token.Status.Scam: return true; } switch (tokenBalance.info.type) { case _types.Portfolio.Token.Type.FT: return !tokenBalance.info.ticker && !tokenBalance.info.name; case _types.Portfolio.Token.Type.NFT: return !tokenBalance.info.name; } })).sort(toStart(tokenBalance => tokenBalance.info.id === primaryTokenInfo.id)); }; exports.sortTokenAmountsByInfo = sortTokenAmountsByInfo; //# sourceMappingURL=sorting.js.map