parsec-node
Version:
https://parseclabs.readthedocs.io/en/latest/
38 lines (32 loc) • 1.02 kB
JavaScript
const { NFT_COLOR_BASE } = require('./constants');
const { range } = require('../../utils');
let erc20Tokens = [];
let nftTokens = [];
const getTokensRange = (bridgeState, from, to) => {
return Promise.all(
range(from, to - 1).map(i => bridgeState.contract.methods.tokens(i).call())
).then(tokens => tokens.map(o => o.addr.toLowerCase()));
};
const getColors = async (bridgeState, nft = false) => {
if (nft) {
const tokenCount = Number(
await bridgeState.contract.methods.nftTokenCount().call()
);
if (tokenCount !== nftTokens.length) {
nftTokens = await getTokensRange(
bridgeState,
NFT_COLOR_BASE,
NFT_COLOR_BASE + tokenCount
);
}
} else {
const tokenCount = Number(
await bridgeState.contract.methods.erc20TokenCount().call()
);
if (tokenCount !== erc20Tokens.length) {
erc20Tokens = await getTokensRange(bridgeState, 0, tokenCount);
}
}
return nft ? nftTokens : erc20Tokens;
};
module.exports = getColors;