Skip to content

Commit

Permalink
add account exclusions to stats
Browse files Browse the repository at this point in the history
  • Loading branch information
eonwarped committed Jan 21, 2020
1 parent 97d326b commit 184be50
Show file tree
Hide file tree
Showing 2 changed files with 117 additions and 49 deletions.
1 change: 1 addition & 0 deletions src/app/client_config.js
Original file line number Diff line number Diff line change
Expand Up @@ -110,3 +110,4 @@ export const SHOW_AUTHOR_RECENT_POSTS = false;
export const POSTED_VIA_NITROUS_ICON = ''; // put corresponding svg in src/app/assets/icons/___.svg
export const COMMUNITY_CATEGORY = '';
export const SHOW_TOKEN_STATS = true;
export const TOKEN_STATS_EXCLUDE_ACCOUNTS = [];
165 changes: 116 additions & 49 deletions src/server/utils/ScotConfig.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
import * as config from 'config';
import NodeCache from 'node-cache';

import { LIQUID_TOKEN_UPPERCASE, SCOT_DENOM } from 'app/client_config';
import {
LIQUID_TOKEN_UPPERCASE,
SCOT_DENOM,
TOKEN_STATS_EXCLUDE_ACCOUNTS,
} from 'app/client_config';
import { getScotDataAsync } from 'app/utils/steemApi';
import SSC from 'sscjs';
const ssc = new SSC('https://api.steem-engine.com/rpc');
Expand Down Expand Up @@ -79,63 +83,126 @@ ScotConfig.prototype.refresh = async function() {
JSON.parse(scotConfig.miner_tokens)
);

const [
totalTokenBalance,
tokenBurnBalance,
totalTokenMinerBalance,
tokenMinerBurnBalance,
totalTokenMegaMinerBalance,
tokenMegaMinerBurnBalance,
] = await Promise.all([
ssc.findOne('tokens', 'tokens', {
symbol: scotConfig.tokenStats.scotToken,
const tokenList = [scotConfig.tokenStats.scotToken].concat(
scotConfig.tokenStats.scotMinerTokens
);

const [totalTokenBalances, tokenBalances] = await Promise.all([
ssc.find('tokens', 'tokens', {
symbol: { $in: tokenList },
}),
ssc.findOne('tokens', 'balances', {
account: 'null',
symbol: scotConfig.tokenStats.scotToken,
ssc.find('tokens', 'balances', {
account: { $in: ['null'].concat(TOKEN_STATS_EXCLUDE_ACCOUNTS) },
symbol: { $in: tokenList },
}),
scotConfig.tokenStats.scotMinerTokens.length > 0
? ssc.findOne('tokens', 'tokens', {
symbol: scotConfig.tokenStats.scotMinerTokens[0],
})
: Promise.resolve(null),
scotConfig.tokenStats.scotMinerTokens.length > 0
? ssc.findOne('tokens', 'balances', {
account: 'null',
symbol: scotConfig.tokenStats.scotMinerTokens[0],
})
: Promise.resolve(null),
scotConfig.tokenStats.scotMinerTokens.length > 1
? ssc.findOne('tokens', 'tokens', {
symbol: scotConfig.tokenStats.scotMinerTokens[1],
})
: Promise.resolve(null),
scotConfig.tokenStats.scotMinerTokens.length > 1
? ssc.findOne('tokens', 'balances', {
account: 'null',
symbol: scotConfig.tokenStats.scotMinerTokens[1],
})
: Promise.resolve(null),
]);

if (totalTokenBalance) {
scotConfig.tokenStats.total_token_balance = totalTokenBalance;
}
if (tokenBurnBalance) {
scotConfig.tokenStats.token_burn_balance = tokenBurnBalance;
let circulating = 0;
let burn = 0;
let staking = 0;
let circulatingMiner = 0;
let burnMiner = 0;
let stakingMiner = 0;
let circulatingMegaMiner = 0;
let burnMegaMiner = 0;
let stakingMegaMiner = 0;
for (const totalTokenBalance of totalTokenBalances) {
if (
totalTokenBalance['symbol'] == scotConfig.tokenStats.scotToken
) {
scotConfig.tokenStats.total_token_balance = totalTokenBalance;
circulating += parseFloat(totalTokenBalance.circulatingSupply);
staking += parseFloat(totalTokenBalance.totalStaked);
} else if (
totalTokenBalance['symbol'] ==
scotConfig.tokenStats.scotMinerTokens[0]
) {
scotConfig.tokenStats.total_token_miner_balance = totalTokenBalance;
circulatingMiner += parseFloat(
totalTokenBalance.circulatingSupply
);
stakingMiner += parseFloat(totalTokenBalance.totalStaked);
} else if (
totalTokenBalance['symbol'] ==
scotConfig.tokenStats.scotMinerTokens[1]
) {
scotConfig.tokenStats.total_token_mega_miner_balance = totalTokenBalance;
circulatingMegaMiner += parseFloat(
totalTokenBalance.circulatingSupply
);
stakingMegaMiner += parseFloat(totalTokenBalance.totalStaked);
}
}
if (totalTokenMinerBalance) {
scotConfig.tokenStats.total_token_miner_balance = totalTokenMinerBalance;
for (const tokenBalance of tokenBalances) {
if (tokenBalance['symbol'] == scotConfig.tokenStats.scotToken) {
if (tokenBalance['account'] === 'null') {
scotConfig.tokenStats.token_burn_balance = tokenBalance;
burn += parseFloat(tokenBalance.balance);
} else {
circulating -= parseFloat(tokenBalance.balance);
staking -= parseFloat(tokenBalance.stake);
}
} else if (
tokenBalance['symbol'] ==
scotConfig.tokenStats.scotMinerTokens[0]
) {
if (tokenBalance['account'] === 'null') {
scotConfig.tokenStats.token_miner_burn_balance = tokenBalance;
burnMiner += parseFloat(tokenBalance.balance);
} else {
circulatingMiner -= parseFloat(tokenBalance.balance);
stakingMiner -= parseFloat(tokenBalance.stake);
}
} else if (
tokenBalance['symbol'] ==
scotConfig.tokenStats.scotMinerTokens[1]
) {
if (tokenBalance['account'] === 'null') {
scotConfig.tokenStats.token_mega_miner_burn_balance = tokenBalance;
burnMegaMiner += parseFloat(tokenBalance.balance);
} else {
circulatingMegaMiner -= parseFloat(tokenBalance.balance);
stakingMegaMiner -= parseFloat(tokenBalance.stake);
}
}
}
if (tokenMinerBurnBalance) {
scotConfig.tokenStats.token_miner_burn_balance = tokenMinerBurnBalance;

if (scotConfig.tokenStats.total_token_balance) {
scotConfig.tokenStats.total_token_balance.circulatingSupply = circulating.toFixed(
scotConfig.tokenStats.total_token_balance.precision
);
scotConfig.tokenStats.total_token_balance.totalStaked = staking.toFixed(
scotConfig.tokenStats.total_token_balance.precision
);
scotConfig.tokenStats.token_burn_balance.balance = burn.toFixed(
scotConfig.tokenStats.total_token_balance.precision
);
}
if (totalTokenMegaMinerBalance) {
scotConfig.tokenStats.total_token_mega_miner_balance = totalTokenMegaMinerBalance;

if (scotConfig.tokenStats.total_token_miner_balance) {
scotConfig.tokenStats.total_token_miner_balance.circulatingSupply = circulatingMiner.toFixed(
scotConfig.tokenStats.total_token_miner_balance.precision
);
scotConfig.tokenStats.total_token_miner_balance.totalStaked = stakingMiner.toFixed(
scotConfig.tokenStats.total_token_miner_balance.precision
);
scotConfig.tokenStats.token_miner_burn_balance.balance = burnMiner.toFixed(
scotConfig.tokenStats.total_token_miner_balance.precision
);
}
if (totalTokenMegaMinerBalance) {
scotConfig.tokenStats.token_mega_miner_burn_balance = tokenMegaMinerBurnBalance;

if (scotConfig.tokenStats.total_token_mega_miner_balance) {
scotConfig.tokenStats.total_token_mega_miner_balance.circulatingSupply = circulatingMegaMiner.toFixed(
scotConfig.tokenStats.total_token_mega_miner_balance.precision
);
scotConfig.tokenStats.total_token_mega_miner_balance.totalStaked = stakingMegaMiner.toFixed(
scotConfig.tokenStats.total_token_mega_miner_balance.precision
);
scotConfig.tokenStats.token_mega_miner_burn_balance.balance = burnMegaMiner.toFixed(
scotConfig.tokenStats.total_token_mega_miner_balance.precision
);
}

this.cache.set(key, { info: scotInfo, config: scotConfig });
console.info('Scot Config refreshed...');
} catch (err) {
Expand Down

0 comments on commit 184be50

Please sign in to comment.