coctohug-web
Version:
- Nice localization with support of dozens of languages: [English](https://github.com/raingggg/coctohug/blob/main/readme_en.md), [العربية](https://github.com/raingggg/coctohug/blob/main/readme_ar.md), [Bulgarian](https://github.com/raingggg/coctohug/blob/
97 lines (80 loc) • 2.87 kB
JavaScript
var i18n = require('i18n');
const express = require('express');
const router = express.Router();
const MobileDetect = require('mobile-detect');
const { Op } = require("sequelize");
const { AllInOne, Wallet } = require('../models');
const { isWebControllerMode, getCoctohugWebVersion } = require('../utils/chiaConfig');
const { getTotalBalance, getETWHours } = require('../utils/blockUtil');
const { logger } = require('../utils/logger');
const isWebController = isWebControllerMode();
const UNSYNC_THRESHHOLD = 30 * 60 * 1000; // 30 mins
const webVersion = getCoctohugWebVersion();
router.get('/', async (req, res, next) => {
if (isWebController) {
let data = [];
const { pageType } = req.query;
const md = new MobileDetect(req.headers['user-agent']);
const isMobile = !!md.mobile();
let allCoinsDollars = 0;
try {
data = await AllInOne.findAll({
where: {
mode: { [Op.in]: ['fullnode', 'farmer', 'wallet', 'standard_wallet'] },
},
order: [
['blockchain', 'ASC'],
]
});
data.forEach(dt => {
dt.expected_hours_to_win = getETWHours(dt.expected_time_to_win);
dt.isValidETW = (dt.expected_hours_to_win > 0 && dt.ext_num_2 > 0) ? (dt.ext_num_2 * 24 / dt.expected_hours_to_win) <= 4 : true;
if (dt.total_price) {
allCoinsDollars += dt.total_price;
}
})
} catch (e) {
logger.error('review-web', e);
}
let pageName = '';
if (['reviewMobile', 'reviewDesktop'].includes(pageType)) pageName = pageType;
else pageName = isMobile ? 'reviewMobile' : 'reviewDesktop';
res.render('index', { data, webVersion, allCoinsDollars, pageName });
} else {
res.render('index', { pageName: 'api' });
}
});
router.get('/old', async (req, res, next) => {
if (isWebController) {
const data = await Farm.findAll({
order: [
['blockchain', 'ASC'],
]
});
const walletData = await Wallet.findAll({
order: [
['blockchain', 'ASC'],
]
});
const now = new Date().getTime();
data.forEach(dt => {
const lastReview = new Date(dt.updatedAt).getTime();
if (now - lastReview > UNSYNC_THRESHHOLD) {
Object.assign(dt, { status: 'Sync Error' });
}
let total_coins = dt.total_coins;
if (total_coins > 0) total_coins = parseFloat(total_coins.toFixed(6));
Object.assign(dt, { total_coins });
const wd = walletData.find(w => w.blockchain === dt.blockchain);
if (wd) {
let balance = getTotalBalance(wd.details);
if (balance > 0) balance = parseFloat(balance.toFixed(6));
Object.assign(dt, { balance });
}
})
res.render('index', { data, webVersion, pageName: 'review' });
} else {
res.render('index', { pageName: 'api' });
}
});
module.exports = router;