Browse Source

Fetch data from our API

pull/15/head
Luke Childs 5 years ago
parent
commit
8bfa1e7af1
  1. 61
      js/get-coin-data.js
  2. 5
      js/index.js

61
js/get-coin-data.js

@ -1,61 +0,0 @@
import coinBlacklist from './coin-blacklist';
const SECONDS = 1;
const MINUTES = SECONDS * 60;
const HOURS = MINUTES * 60;
const getCoinData = async () => {
// Fetch coin data
const response = await fetch('https://api.crypto51.app/coins.json');
let {coins} = await response.json();
// Format
coins = coins
.filter(coin => {
return (
typeof coin.attack_hourly_cost === 'number' &&
!coinBlacklist.includes(coin.symbol)
);
})
.map(coin => ({
symbol: coin.symbol,
name: coin.name,
hashRateCostPerSecond: (coin.attack_hourly_cost / HOURS),
algorithm: coin.algorithm,
hashRate: coin.hash_rate,
hashRateFormatted: coin.hash_rate_pretty,
marketCap: coin.market_cap,
marketCapFormatted: coin.market_cap_pretty,
blockTimeInSeconds: coin.block_time
}))
.sort((a, b) => b.marketCap - a.marketCap);
// Calculate confirmation data
const referenceCoinSymbol = 'BTC';
const referenceConfirmations = 6;
const referenceCoin = coins.find(coin => coin.symbol === referenceCoinSymbol);
if (!referenceCoin) {
return [];
}
const referenceCoinWorkTime = (referenceConfirmations * referenceCoin.blockTimeInSeconds);
coins = coins.map(coin => {
const multiplier = (referenceCoin.hashRateCostPerSecond / coin.hashRateCostPerSecond);
const workTime = (referenceCoinWorkTime * multiplier);
const confirmations = Math.ceil(workTime / coin.blockTimeInSeconds);
const estimatedTimeForConfs = (coin.blockTimeInSeconds * confirmations);
return {
...coin,
multiplier,
workTime,
confirmations,
estimatedTimeForConfs
};
});
return coins;
};
export default getCoinData;

5
js/index.js

@ -1,7 +1,6 @@
import 'babel-polyfill'; // eslint-disable-line import/no-unassigned-import
import escapeHTML from 'escape-html';
import {version} from '../package';
import getCoinData from './get-coin-data';
import getCoinSVGPath from './get-coin-svg-path';
import getCoinName from './get-coin-name';
import formatSeconds from './format-seconds';
@ -75,7 +74,9 @@ const render = (coins, sortBy) => {
document.dispatchEvent(new Event('prerender-trigger'));
};
getCoinData().then(coins => {
fetch('/api/data')
.then(response => response.json())
.then(coins => {
render(coins);
table.addEventListener('click', ({target}) => {

Loading…
Cancel
Save