Browse Source

Merge branch 'redux' into feature/settings-refactor

all-modes^2
Miika Turunen 8 years ago
parent
commit
ef76732416
  1. 65
      react/src/actions/actions/nativeSyncInfo.js
  2. 5
      react/src/actions/storeType.js
  3. 6
      react/src/components/dashboard/coindDownModal/coindDownModal.js
  4. 25
      react/src/components/dashboard/walletsProgress/walletsProgress.js
  5. 4
      react/src/components/dashboard/walletsProgress/walletsProgress.render.js
  6. 8
      react/src/reducers/activeCoin.js
  7. 4
      react/src/translate/en.js
  8. 2
      react/src/util/coinHelper.js

65
react/src/actions/actions/nativeSyncInfo.js

@ -1,4 +1,7 @@
import { SYNCING_NATIVE_MODE } from '../storeType'; import {
SYNCING_NATIVE_MODE,
DASHBOARD_ACTIVE_COIN_GETINFO_FAILURE
} from '../storeType';
import { import {
triggerToaster, triggerToaster,
getPassthruAgent, getPassthruAgent,
@ -7,8 +10,16 @@ import {
} from '../actionCreators'; } from '../actionCreators';
import Config from '../../config'; import Config from '../../config';
export function nativeGetinfoFailureState() {
return {
type: DASHBOARD_ACTIVE_COIN_GETINFO_FAILURE,
}
}
// TODO: use debug.log instead // TODO: use debug.log instead
export function getSyncInfoNativeKMD(skipDebug, json, skipRemote) { export function getSyncInfoNativeKMD(skipDebug, json, skipRemote) {
let _json = json;
if (skipRemote) { if (skipRemote) {
return dispatch => { return dispatch => {
dispatch(getSyncInfoNativeState(Config.iguanaLessMode ? json.info : json )); dispatch(getSyncInfoNativeState(Config.iguanaLessMode ? json.info : json ));
@ -35,11 +46,15 @@ export function getSyncInfoNativeKMD(skipDebug, json, skipRemote) {
) )
);*/ );*/
console.warn('remote kmd node fetch failed', true); console.warn('remote kmd node fetch failed', true);
dispatch(getSyncInfoNativeState({ remoteKMDNode: null })); _json = _json.error;
_json['remoteKMDNode'] = null;
dispatch(getSyncInfoNativeState(_json));
}) })
.then(response => response.json()) .then(response => response.json())
.then(json => { .then(json => {
dispatch(getSyncInfoNativeState({ remoteKMDNode: Config.iguanaLessMode ? json.info : json })); _json = _json.error;
_json['remoteKMDNode'] = json.info;
dispatch(getSyncInfoNativeState(_json));
}) })
.then(function() { .then(function() {
if (!skipDebug) { if (!skipDebug) {
@ -51,23 +66,34 @@ export function getSyncInfoNativeKMD(skipDebug, json, skipRemote) {
} }
function getSyncInfoNativeState(json, coin, skipDebug, skipRemote) { function getSyncInfoNativeState(json, coin, skipDebug, skipRemote) {
if (coin === 'KMD' && /*if (!json.remoteKMDNode) {
json && json = { error: { code: -28, message: 'Activating best chain...' } };
json.error && }*/
json.error.message.indexOf('Activating best') === -1) {
return getSyncInfoNativeKMD(skipDebug, json, skipRemote); if (json.remoteKMDNode) {
return {
type: SYNCING_NATIVE_MODE,
progress: json,
}
} else { } else {
if (json && if (coin === 'KMD' &&
json &&
json.error && json.error &&
Config.cli.default) { json.error.message.indexOf('Activating best') > -1) {
return { return getSyncInfoNativeKMD(skipDebug, json, skipRemote);
type: SYNCING_NATIVE_MODE,
progress: json.error,
}
} else { } else {
return { if (json &&
type: SYNCING_NATIVE_MODE, json.error &&
progress: json.result ? json.result : json, Config.cli.default) {
return {
type: SYNCING_NATIVE_MODE,
progress: json.error,
}
} else {
return {
type: SYNCING_NATIVE_MODE,
progress: json.result ? json.result : json,
}
} }
} }
} }
@ -156,14 +182,15 @@ export function getSyncInfoNative(coin, skipDebug, skipRemote, suppressErrors) {
} catch (e) {} } catch (e) {}
if (!_kmdMainPassiveMode) { if (!_kmdMainPassiveMode) {
dispatch( dispatch(nativeGetinfoFailureState());
/* dispatch(
triggerToaster( triggerToaster(
'Komodod is down', 'Komodod is down',
'Critical Error', 'Critical Error',
'error', 'error',
true true
) )
); ); */
} else { } else {
dispatch( dispatch(
triggerToaster( triggerToaster(

5
react/src/actions/storeType.js

@ -20,8 +20,8 @@ export const BASILISK_CONNECTION = 'BASILISK_CONNECTION';
export const SYNCING_FULL_MODE = 'SYNCING_FULL_MODE'; export const SYNCING_FULL_MODE = 'SYNCING_FULL_MODE';
export const SYNCING_NATIVE_MODE = 'SYNCING_NATIVE_MODE'; export const SYNCING_NATIVE_MODE = 'SYNCING_NATIVE_MODE';
export const ACTIVE_COIN_GET_ADDRESSES = 'ACTIVE_COIN_GET_ADDRESSES'; export const ACTIVE_COIN_GET_ADDRESSES = 'ACTIVE_COIN_GET_ADDRESSES';
export const START_INTERVAL= 'START_INTERVAL'; export const START_INTERVAL = 'START_INTERVAL';
export const STOP_INTERVAL= 'STOP_INTERVAL'; export const STOP_INTERVAL = 'STOP_INTERVAL';
export const DASHBOARD_ACTIVE_SECTION = 'DASHBOARD_ACTIVE_SECTION'; export const DASHBOARD_ACTIVE_SECTION = 'DASHBOARD_ACTIVE_SECTION';
export const DASHBOARD_ACTIVE_TXINFO_MODAL = 'DASHBOARD_ACTIVE_TXINFO_MODAL'; export const DASHBOARD_ACTIVE_TXINFO_MODAL = 'DASHBOARD_ACTIVE_TXINFO_MODAL';
export const DASHBOARD_ACTIVE_COIN_NATIVE_BALANCE = 'DASHBOARD_ACTIVE_COIN_NATIVE_BALANCE'; export const DASHBOARD_ACTIVE_COIN_NATIVE_BALANCE = 'DASHBOARD_ACTIVE_COIN_NATIVE_BALANCE';
@ -30,6 +30,7 @@ export const DASHBOARD_ACTIVE_COIN_NATIVE_OPIDS = 'DASHBOARD_ACTIVE_COIN_NATIVE_
export const DASHBOARD_ACTIVE_COIN_SENDTO = 'DASHBOARD_ACTIVE_COIN_SENDTO'; export const DASHBOARD_ACTIVE_COIN_SENDTO = 'DASHBOARD_ACTIVE_COIN_SENDTO';
export const DASHBOARD_ACTIVE_COIN_GET_CACHE = 'DASHBOARD_ACTIVE_COIN_GET_CACHE'; export const DASHBOARD_ACTIVE_COIN_GET_CACHE = 'DASHBOARD_ACTIVE_COIN_GET_CACHE';
export const DASHBOARD_ACTIVE_COIN_MAIN_BASILISK_ADDR = 'DASHBOARD_ACTIVE_COIN_MAIN_BASILISK_ADDR'; export const DASHBOARD_ACTIVE_COIN_MAIN_BASILISK_ADDR = 'DASHBOARD_ACTIVE_COIN_MAIN_BASILISK_ADDR';
export const DASHBOARD_ACTIVE_COIN_GETINFO_FAILURE = 'DASHBOARD_ACTIVE_COIN_GETINFO_FAILURE';
export const DASHBOARD_UPDATE = 'DASHBOARD_UPDATE'; export const DASHBOARD_UPDATE = 'DASHBOARD_UPDATE';
export const DASHBOARD_SYNC_ONLY_UPDATE = 'DASHBOARD_SYNC_ONLY_UPDATE'; export const DASHBOARD_SYNC_ONLY_UPDATE = 'DASHBOARD_SYNC_ONLY_UPDATE';
export const VIEW_CACHE_DATA = 'VIEW_CACHE_DATA'; export const VIEW_CACHE_DATA = 'VIEW_CACHE_DATA';

6
react/src/components/dashboard/coindDownModal/coindDownModal.js

@ -5,6 +5,8 @@ import Store from '../../../store';
import CoindDownModalRender from './coindDownModal.render'; import CoindDownModalRender from './coindDownModal.render';
const COIND_DOWN_MODAL_FETCH_FAILURES_THRESHOLD = 5;
class CoindDownModal extends React.Component { class CoindDownModal extends React.Component {
constructor() { constructor() {
super(); super();
@ -42,7 +44,8 @@ class CoindDownModal extends React.Component {
render() { render() {
if (this.state.display && if (this.state.display &&
!this.state.kmdMainPassiveMode) { !this.state.kmdMainPassiveMode &&
this.props.ActiveCoin.getinfoFetchFailures >= COIND_DOWN_MODAL_FETCH_FAILURES_THRESHOLD) {
return CoindDownModalRender.call(this); return CoindDownModalRender.call(this);
} }
@ -55,6 +58,7 @@ const mapStateToProps = (state) => {
ActiveCoin: { ActiveCoin: {
mode: state.ActiveCoin.mode, mode: state.ActiveCoin.mode,
coin: state.ActiveCoin.coin, coin: state.ActiveCoin.coin,
getinfoFetchFailures: state.ActiveCoin.getinfoFetchFailures,
}, },
displayCoindDownModal: state.Dashboard.displayCoindDownModal, displayCoindDownModal: state.Dashboard.displayCoindDownModal,
debugLog: state.Settings.debugLog, debugLog: state.Settings.debugLog,

25
react/src/components/dashboard/walletsProgress/walletsProgress.js

@ -107,14 +107,27 @@ class WalletsProgress extends React.Component {
} }
if (temp[i].indexOf('progress=') > -1) { if (temp[i].indexOf('progress=') > -1) {
currentProgress = Number(temp[i].replace('progress=', '')) * 1000; currentProgress = Number(temp[i].replace('progress=', '')) * 1000;
currentProgress = currentProgress >= 100 ? 100 : currentProgress; if (currentProgress > 100) {
currentProgress = Number(temp[i].replace('progress=', '')) * 100;
}
} }
} }
return [ if (this.props.ActiveCoin.progress.remoteKMDNode &&
currentBestChain, this.props.ActiveCoin.progress.remoteKMDNode.blocks) {
currentProgress const longestHeight = this.props.ActiveCoin.progress.remoteKMDNode.blocks;
];
return [
currentBestChain,
currentProgress,
longestHeight
];
} else {
return [
currentBestChain,
currentProgress
];
}
} }
} }
@ -131,7 +144,7 @@ class WalletsProgress extends React.Component {
if (_parseProgress && if (_parseProgress &&
_parseProgress[1]) { _parseProgress[1]) {
return SyncPercentageRender.call(this, _parseProgress[1] === 1000 ? 100 : _parseProgress[1].toFixed(2)); return SyncPercentageRender.call(this, _parseProgress[1].toFixed(2) + '%', _parseProgress[0], _parseProgress[2] ? _parseProgress[2] : null);
} else { } else {
return LoadingBlocksRender.call(this); return LoadingBlocksRender.call(this);
} }

4
react/src/components/dashboard/walletsProgress/walletsProgress.render.js

@ -17,7 +17,7 @@ export const SyncErrorBlocksRender = function() {
); );
}; };
export const SyncPercentageRender = function(syncPercentage) { export const SyncPercentageRender = function(syncPercentage, currentBlock, maxHeight) {
if (this.props.ActiveCoin.rescanInProgress) { if (this.props.ActiveCoin.rescanInProgress) {
return ( return (
<div <div
@ -40,7 +40,7 @@ export const SyncPercentageRender = function(syncPercentage) {
<div <div
className="progress-bar progress-bar-info progress-bar-striped active font-size-80-percent" className="progress-bar progress-bar-info progress-bar-striped active font-size-80-percent"
style={{ width: syncPercentage }}> style={{ width: syncPercentage }}>
<span style={{ width: syncPercentage }}>{ syncPercentage === '100.00%' ? '100%' : syncPercentage } | { this.props.ActiveCoin.progress.blocks } / { this.props.ActiveCoin.progress.longestchain } | { translate('INDEX.CONNECTIONS') }: { this.props.ActiveCoin.progress.connections }</span> <span style={{ width: syncPercentage }}>{ syncPercentage === '100.00%' ? '100%' : syncPercentage } <span className={ this.props.ActiveCoin.progress.blocks || currentBlock ? '' : 'hide' }>| { this.props.ActiveCoin.progress.blocks || currentBlock } <span className={ this.props.ActiveCoin.progress.longestchain || maxHeight ? '' : 'hide'}>/ { this.props.ActiveCoin.progress.longestchain || maxHeight }</span></span> <span className={ this.props.ActiveCoin.progress.connections ? '' : 'hide' }>| { translate('INDEX.CONNECTIONS') }: { this.props.ActiveCoin.progress.connections }</span></span>
</div> </div>
); );
} }

8
react/src/reducers/activeCoin.js

@ -14,6 +14,7 @@ import {
DASHBOARD_ACTIVE_COIN_GET_CACHE, DASHBOARD_ACTIVE_COIN_GET_CACHE,
DASHBOARD_ACTIVE_COIN_MAIN_BASILISK_ADDR, DASHBOARD_ACTIVE_COIN_MAIN_BASILISK_ADDR,
DASHBOARD_ACTIVE_ADDRESS, DASHBOARD_ACTIVE_ADDRESS,
DASHBOARD_ACTIVE_COIN_GETINFO_FAILURE,
SYNCING_FULL_MODE, SYNCING_FULL_MODE,
SYNCING_NATIVE_MODE, SYNCING_NATIVE_MODE,
DASHBOARD_UPDATE, DASHBOARD_UPDATE,
@ -39,6 +40,7 @@ export function ActiveCoin(state = {
activeAddress: null, activeAddress: null,
progress: null, progress: null,
rescanInProgress: false, rescanInProgress: false,
getinfoFetchFailures: 0,
}, action) { }, action) {
switch (action.type) { switch (action.type) {
case DASHBOARD_ACTIVE_COIN_CHANGE: case DASHBOARD_ACTIVE_COIN_CHANGE:
@ -223,6 +225,12 @@ export function ActiveCoin(state = {
return { return {
...state, ...state,
progress: action.progress, progress: action.progress,
getinfoFetchFailures: !action.progress ? state.getinfoFetchFailures + 1 : 0,
};
case DASHBOARD_ACTIVE_COIN_GETINFO_FAILURE:
return {
...state,
getinfoFetchFailures: state.getinfoFetchFailures + 1,
}; };
case DASHBOARD_UPDATE: case DASHBOARD_UPDATE:
if (state.coin === action.coin) { if (state.coin === action.coin) {

4
react/src/translate/en.js

@ -378,7 +378,7 @@ export const _lang = {
'THIS_SCREEN_DOESNT_REFRESH': 'This screen does not auto refresh. ' + 'THIS_SCREEN_DOESNT_REFRESH': 'This screen does not auto refresh. ' +
'You will need to hit the Refresh button on the top right corner of the screen to get latest Jumblr data.', 'You will need to hit the Refresh button on the top right corner of the screen to get latest Jumblr data.',
'FEW_SECURITY_NOTES': 'Few Security Notes for your Privacy and Anonymity of funds', 'FEW_SECURITY_NOTES': 'Few Security Notes for your Privacy and Anonymity of funds',
'FEW_SECURITY_NOTES_DESC1': 'Jumblr addresses addresses are your Private Addresses.', 'FEW_SECURITY_NOTES_DESC1': 'Jumblr addresses are your Private Addresses.',
'FEW_SECURITY_NOTES_DESC2': 'DO NOT SHARE your Jumblr addresses with anyone.', 'FEW_SECURITY_NOTES_DESC2': 'DO NOT SHARE your Jumblr addresses with anyone.',
'FEW_SECURITY_NOTES_DESC3': 'Jumblr addresses are like YOUR PASSWORD. Keep them safe, secure and hidden.', 'FEW_SECURITY_NOTES_DESC3': 'Jumblr addresses are like YOUR PASSWORD. Keep them safe, secure and hidden.',
'FEW_SECURITY_NOTES_DESC4': 'Only YOU should know your Jumblr Address. Nobody else.', 'FEW_SECURITY_NOTES_DESC4': 'Only YOU should know your Jumblr Address. Nobody else.',
@ -693,7 +693,7 @@ export const _lang = {
'COQUI': 'COQUI (COQUI)', 'COQUI': 'COQUI (COQUI)',
'CRYPTO': 'CRYPTO (CRYPTO)', 'CRYPTO': 'CRYPTO (CRYPTO)',
'HODL': 'HODL (HODL)', 'HODL': 'HODL (HODL)',
'DEX': 'InstantDEX (DEX)', 'DEX': 'DEX (DEX)',
'JUMBLR': 'JUMBLR (JUMBLR)', 'JUMBLR': 'JUMBLR (JUMBLR)',
'KV': 'KV (KV)', 'KV': 'KV (KV)',
'MGW': 'MultiGateway (MGW)', 'MGW': 'MultiGateway (MGW)',

2
react/src/util/coinHelper.js

@ -36,7 +36,7 @@ export function getCoinTitle(coin) {
break; break;
case 'DEX': case 'DEX':
coinlogo = 'dex'; coinlogo = 'dex';
coinname = 'InstantDEX'; coinname = 'DEX';
break; break;
case 'DOGE': case 'DOGE':
coinlogo = 'dogecoin'; coinlogo = 'dogecoin';

Loading…
Cancel
Save