@yoroi/portfolio
Version:
The Portfolio package of Yoroi SDK
76 lines (75 loc) • 2.78 kB
JavaScript
;
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