import React from 'react'; import { translate } from '../../translate/translate'; import { toggleSyncOnlyModal, stopInterval, stopIguanaFork, restartIguanaInstance, addCoin } from '../../actions/actionCreators'; import Store from '../../store'; class SyncOnly extends React.Component { constructor(props) { super(props); this.state = { autoRestartedForks: {} }; this.closeSyncOnlyModal = this.closeSyncOnlyModal.bind(this); } isFullySynced(fork) { if (fork.balances && ((Number(fork.balances) + Number(fork.validated) + Number(fork.bundles) + Number(fork.utxo)) / 4 === 100)) { return true; } else { return false; } } renderCoinName(coin) { let coinlogo; let coinname; switch (coin) { case 'BTC': coinlogo = 'bitcoin'; coinname = 'Bitcoin'; break; case 'BTCD': coinlogo = 'bitcoindark'; coinname = 'BitcoinDark'; break; case 'LTC': coinlogo = 'litecoin'; coinname = 'Litecoin'; break; case 'VPN': coinlogo = 'vpncoin'; coinname = 'VPNcoin'; break; case 'SYS': coinlogo = 'syscoin'; coinname = 'Syscoin'; break; case 'ZEC': coinlogo = 'zcash'; coinname = 'Zcash'; break; case 'NMC': coinlogo = 'namecoin'; coinname = 'Namecoin'; break; case 'DEX': coinlogo = 'dex'; coinname = 'InstantDEX'; break; case 'DOGE': coinlogo = 'dogecoin'; coinname = 'Dogecoin'; break; case 'DGB': coinlogo = 'digibyte'; coinname = 'Digibyte'; break; case 'MZC': coinlogo = 'mazacoin'; coinname = 'Mazacoin'; break; case 'UNO': coinlogo = 'unobtanium'; coinname = 'Unobtanium'; break; case 'ZET': coinlogo = 'zetacoin'; coinname = 'Zetacoin'; break; case 'KMD': coinlogo = 'komodo'; coinname = 'Komodo'; break; case 'BTM': coinlogo = 'bitmark'; coinname = 'Bitmark'; break; case 'CARB': coinlogo = 'carboncoin'; coinname = 'Carboncoin'; break; case 'ANC': coinlogo = 'anoncoin'; coinname = 'AnonCoin'; break; case 'FRK': coinlogo = 'franko'; coinname = 'Franko'; break; case 'GAME': coinlogo = 'GAME'; coinname = 'GameCredits'; break; } return { 'logo': coinlogo, 'name': coinname }; } componentWillReceiveProps(props) { // console.log('SyncOnly', props); if (props.SyncOnly) { for (let port in this.props.SyncOnly.forks) { const forkInfo = this.props.SyncOnly.forks[port]; if (!this.state.autoRestartedForks[port] && forkInfo && forkInfo.registry && forkInfo.getinfo && forkInfo.getinfo.error && forkInfo.getinfo.error === 'bitcoinrpc needs coin that is active') { console.log('fork add coin required'); let _autoRestartedForks = Object.assign({}, this.state.autoRestartedForks); _autoRestartedForks[port] = true; this.setState({ autoRestartedForks: _autoRestartedForks, }); Store.dispatch(addCoin(forkInfo.registry.coin, '1', null, port)); setTimeout(function() { let _autoRestartedForks = Object.assign({}, this.state.autoRestartedForks); _autoRestartedForks[port] = false; this.setState({ autoRestartedForks: _autoRestartedForks, }); }.bind(this), 10000); } } } } closeSyncOnlyModal() { Store.dispatch(stopInterval('syncOnly', this.props.Interval.interval)); Store.dispatch(toggleSyncOnlyModal(false)); } _stopIguanaFork(pmid) { Store.dispatch(stopIguanaFork(pmid)); } _restartIguanaFork(coin, pmid, port) { restartIguanaInstance(pmid) .then(function(json) { setTimeout(function() { Store.dispatch(addCoin(coin, '1', null, port)); console.log('restartSyncOnlyInstance', json); }, 2000); }); } renderProgress(fork) { return (