UNPKG

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
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;