Browse Source

Merge pull request #155 from SuperNETorg/cleanup

Cleanup
all-modes
pbca26 8 years ago
committed by GitHub
parent
commit
4c8b2e168f
  1. 3
      react/change.log
  2. 8
      react/src/actions/actionCreators.js
  3. 7
      react/src/actions/actions/nativeSyncInfo.js
  4. 43
      react/src/actions/actions/settings.js
  5. 3
      react/src/actions/storeType.js
  6. 4
      react/src/components/addcoin/addcoin.render.js
  7. 2
      react/src/components/addcoin/addcoin.scss
  8. 24
      react/src/components/addcoin/coin-selectors.render.js
  9. 2
      react/src/components/dashboard/atomic/atomic.render.js
  10. 6
      react/src/components/dashboard/coinTile/coinTileItem.js
  11. 47
      react/src/components/dashboard/coindDownModal/coindDownModal.js
  12. 46
      react/src/components/dashboard/coindDownModal/coindDownModal.render.js
  13. 4
      react/src/components/dashboard/main/dashboard.render.js
  14. 12
      react/src/components/dashboard/settings/settings.js
  15. 6
      react/src/components/dashboard/settings/settings.render.js
  16. 26
      react/src/components/dashboard/walletsBalance/walletsBalance.render.js
  17. 7
      react/src/components/dashboard/walletsData/walletsData.js
  18. 11
      react/src/components/dashboard/walletsData/walletsData.render.js
  19. 4
      react/src/components/dashboard/walletsTxInfo/walletsTxInfo.render.js
  20. 26
      react/src/components/overrides.scss
  21. 1
      react/src/config.js
  22. 9
      react/src/reducers/dashboard.js

3
react/change.log

@ -7,6 +7,9 @@ UI:
- fixed logout bug
- minor placeholders fixes
- hide address dropdown if wallet has only one address
- komodod crash report modal
- values rounding (up to 6 decimals)
- add coin multi ui reflow fix
v0.2.0.21a-beta
--------------

8
react/src/actions/actionCreators.js

@ -25,6 +25,7 @@ import {
DASHBOARD_ACTIVE_COIN_CHANGE,
ACTIVE_COIN_GET_ADDRESSES,
DASHBOARD_ACTIVE_COIN_NATIVE_TXHISTORY,
DISPLAY_COIND_DOWN_MODAL,
START_INTERVAL,
STOP_INTERVAL
} from './storeType';
@ -350,4 +351,11 @@ export function stopInterval(name, intervals) {
type: STOP_INTERVAL,
name,
}
}
export function toggleCoindDownModal(display) {
return {
type: DISPLAY_COIND_DOWN_MODAL,
displayCoindDownModal: display,
}
}

7
react/src/actions/actions/nativeSyncInfo.js

@ -2,7 +2,8 @@ import { SYNCING_NATIVE_MODE } from '../storeType';
import {
triggerToaster,
getPassthruAgent,
getDebugLog
getDebugLog,
toggleCoindDownModal
} from '../actionCreators';
import {
logGuiHttp,
@ -157,9 +158,11 @@ export function getSyncInfoNative(coin, skipDebug) {
'Komodod is down',
'Critical Error',
'error',
false
true
)
);
dispatch(getDebugLog('komodo', 50));
dispatch(toggleCoindDownModal(true));
} else {
json = JSON.parse(json);
}

43
react/src/actions/actions/settings.js

@ -376,7 +376,16 @@ export function saveAppConfig(_payload) {
);
})
.then(response => response.json())
.then(json => dispatch(getAppConfig()))
.then(json => {
dispatch(getAppConfig());
dispatch(
triggerToaster(
'Settings are saved',
translate('TOASTR.SETTINGS_NOTIFICATION'),
'success'
)
);
})
}
}
@ -408,4 +417,36 @@ export function getAppConfig() {
.then(response => response.json())
.then(json => dispatch(getAppConfigState(json)))
}
}
export function resetAppConfig() {
return dispatch => {
return fetch(`http://127.0.0.1:${Config.agamaPort}/shepherd/appconf/reset`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
})
.catch(function(error) {
console.log(error);
dispatch(
triggerToaster(
'resetAppConfig',
'Error',
'error'
)
);
})
.then(response => response.json())
.then(json => {
dispatch(getAppConfig());
dispatch(
triggerToaster(
'Settings are reset to default',
translate('TOASTR.SETTINGS_NOTIFICATION'),
'success'
)
);
})
}
}

3
react/src/actions/storeType.js

@ -43,4 +43,5 @@ export const DASHBOARD_ACTIVE_ADDRESS = 'DASHBOARD_ACTIVE_ADDRESS';
export const LOAD_APP_INFO = 'LOAD_APP_INFO';
export const LOG_GUI_HTTP = 'LOG_GUI_HTTP';
export const CLI = 'CLI';
export const LOGOUT = 'LOGOUT';
export const LOGOUT = 'LOGOUT';
export const DISPLAY_COIND_DOWN_MODAL = 'DISPLAY_COIND_DOWN_MODAL';

4
react/src/components/addcoin/addcoin.render.js

@ -42,7 +42,7 @@ const AddCoinRender = function() {
</button>
</span>
{ this.renderCoinSelectors() }
<div className={ 'text-align-center vertical-margin-20 horizontal-margin-0 ' + (this.hasMoreThanOneCoin() ? 'col-sm-12' : 'hide') }>
<div className={ 'text-align-center vertical-margin-20 horizontal-margin-0 padding-bottom-20 ' + (this.hasMoreThanOneCoin() ? 'col-sm-12' : 'hide') }>
<button
type="button"
className="btn btn-primary col-sm-4 float-none"
@ -62,7 +62,7 @@ const AddCoinRender = function() {
<strong>Komodo Daemon</strong> { translate('INDEX.NATIVE_MODE_DESC2') }&nbsp;
<i>Iguana Daemon</i> { translate('INDEX.NATIVE_MODE_DESC3') }.
</p>
<div className="alert alert-icon alert-primary">
<div className="alert alert-icon alert-primary margin-top-20">
<i className="icon md-info-outline"></i>
<strong>{ translate('INDEX.NATIVE_MODE') }</strong> { translate('INDEX.NATIVE_MODE_DESC4') }&nbsp;
<strong>{ translate('INDEX.NATIVE_MODE_DESC5') }</strong>,&nbsp;

2
react/src/components/addcoin/addcoin.scss

@ -3,7 +3,7 @@
}
.vertical-margin-20 {
margin-top: 20px;
margin-top: 10px;
margin-bottom: 20px;
}

24
react/src/components/addcoin/coin-selectors.render.js

@ -11,8 +11,12 @@ const CoinSelectorsRender = function(item, coin, i) {
<div
className={ this.hasMoreThanOneCoin() ? 'multi' : 'single' }
key={ `add-coin-${i}` }>
<div className="col-sm-8">
<div className="form-group">
<div
className={ this.hasMoreThanOneCoin() ? 'col-sm-10' : 'col-sm-8' }
style={{ paddingLeft: !this.hasMoreThanOneCoin() ? '0' : '15px' }}>
<div
className={ this.hasMoreThanOneCoin() && (item.mode === '-1' || item.mode === -1) ? 'col-sm-6 form-group' : 'form-group' }
style={{ paddingLeft: this.hasMoreThanOneCoin() ? '0' : '15px' }}>
<select
className="form-control form-material"
name="selectedCoin"
@ -25,6 +29,20 @@ const CoinSelectorsRender = function(item, coin, i) {
<AddCoinOptionsACFiat appSettings={ this.props.Settings } />
</select>
</div>
<div className={ this.hasMoreThanOneCoin() && (item.mode === '-1' || item.mode === -1) ? 'col-sm-6' : 'hide' }>
<div className="toggle-box padding-bottom-10">
<select
className="form-control form-material"
name="daemonParam"
onChange={ (event) => this.updateDaemonParam(event, i) }
autoFocus>
<option>Daemon param: none</option>
<option value="silent">Daemon param: background process</option>
<option value="reindex">Daemon param: reindex</option>
<option value="rescan">Daemon param: rescan</option>
</select>
</div>
</div>
</div>
<div className={ this.hasMoreThanOneCoin() ? 'hide' : 'col-sm-4' }>
<button
@ -137,7 +155,7 @@ const CoinSelectorsRender = function(item, coin, i) {
<i className="fa fa-trash-o"></i>
</button>
</div>
<div className={ item.mode === '-1' || item.mode === -1 ? 'col-sm-5' : 'hide' }>
<div className={ !this.hasMoreThanOneCoin() && (item.mode === '-1' || item.mode === -1) ? 'col-sm-5 padding-bottom-30' : 'hide' }>
<div className="toggle-box padding-top-3 padding-bottom-10">
<select
className="form-control form-material"

2
react/src/components/dashboard/atomic/atomic.render.js

@ -7,7 +7,7 @@ import AddCoinOptionsACFiat from '../../addcoin/addcoinOptionsACFiat';
const AtomicRender = function () {
return (
<div className="page margin-left-0">
<div className="page margin-left-0 full-height">
<div className="page-content">
<div className="row">
<div className="col-xlg-12 col-md-12">

6
react/src/components/dashboard/coinTile/coinTileItem.js

@ -46,10 +46,12 @@ class CoinTileItem extends React.Component {
const _propsDashboard = this.props.Dashboard;
const syncPercentage = _propsDashboard && _propsDashboard.progress && (parseFloat(parseInt(_propsDashboard.progress.blocks, 10) * 100 / parseInt(this.props.Dashboard.progress.longestchain, 10)).toFixed(2)).replace('NaN', 0);
if (syncPercentage < 100) {
if (syncPercentage < 100 &&
!this.props.Dashboard.displayCoindDownModal) {
Store.dispatch(getDebugLog('komodo', 10));
}
if (_propsDashboard.progress &&
if (!this.props.Dashboard.displayCoindDownModal &&
_propsDashboard.progress &&
_propsDashboard.progress.blocks &&
_propsDashboard.progress.longestchain &&
syncPercentage &&

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

@ -0,0 +1,47 @@
import React from 'react';
import { toggleCoindDownModal } from '../../../actions/actionCreators';
import Store from '../../../store';
import CoindDownModalRender from './coindDownModal.render';
class CoindDownModal extends React.Component {
constructor(props) {
super(props);
this.state = {
display: false,
debugLogCrash: null,
};
this.dismiss = this.dismiss.bind(this);
}
dismiss() {
Store.dispatch(toggleCoindDownModal(false));
}
componentWillReceiveProps(props) {
const coindDownModalProps = props ? props.Dashboard : null;
if (coindDownModalProps &&
coindDownModalProps.displayCoindDownModal !== this.state.display) {
this.setState(Object.assign({}, this.state, {
display: coindDownModalProps.displayCoindDownModal,
}));
setTimeout(() => {
this.setState(Object.assign({}, this.state, {
display: coindDownModalProps.displayCoindDownModal,
}));
}, 100);
}
}
render() {
if (this.state.display) {
return CoindDownModalRender.call(this);
}
return null;
}
}
export default CoindDownModal;

46
react/src/components/dashboard/coindDownModal/coindDownModal.render.js

@ -0,0 +1,46 @@
import React from 'react';
import { translate } from '../../../translate/translate';
const CoindDownModalRender = function () {
return (
<div>
<div
className={ 'modal modal-3d-sign coind-down-modal ' + (this.state.display ? 'show in' : 'fade hide') }
id="AddCoinDilogModel-login">
<div className="modal-dialog modal-center modal-lg">
<div className="modal-content">
<div className="modal-header bg-orange-a400 wallet-send-header">
<button
type="button"
className="close white"
onClick={ this.dismiss }>
<span>×</span>
</button>
<h4 className="modal-title white">Komodod is down!</h4>
</div>
<div className="modal-body">
<div className="vertical-align text-center">
<div className="page-content vertical-align-middle">
<strong>Debug.log (last 50 lines)</strong>
<div className="form-group form-material floating">
<textarea
className="form-control"
value={ this.props.Settings.debugLog }></textarea>
</div>
<button
type="button"
className="btn btn-primary btn-block"
id="loginbtn"
onClick={ this.dismiss }>OK</button>
</div>
</div>
</div>
</div>
</div>
</div>
<div className={ 'modal-backdrop ' + (this.state.display ? 'show in' : 'fade hide') }></div>
</div>
);
};
export default CoindDownModalRender;

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

@ -15,6 +15,7 @@ import ReceiveCoin from '../receiveCoin/receiveCoin';
import About from '../about/about';
import WalletsNative from '../walletsNative/walletsNative';
import WalletsTxInfo from '../walletsTxInfo/walletsTxInfo';
import CoindDownModal from '../coindDownModal/coindDownModal';
const DashboardRender = function() {
return (
@ -23,6 +24,7 @@ const DashboardRender = function() {
className={ this.isSectionActive('wallets') ? 'page-main' : '' }
id="section-dashboard">
<Navbar {...this.props} />
<CoindDownModal {...this.props} />
<div className={ this.isSectionActive('wallets') ? 'show' : 'hide' }>
<CoinTile {...this.props} />
<WalletsNav {...this.props} />
@ -37,7 +39,7 @@ const DashboardRender = function() {
<div className={ this.isSectionActive('edex') ? 'show' : 'hide' }>
<EDEX {...this.props} />
</div>
<div className={ this.isSectionActive('atomic') ? 'show' : 'hide' }>
<div className={ this.isSectionActive('atomic') ? 'show full-height' : 'hide' }>
<Atomic {...this.props} />
</div>
<div className={ this.isSectionActive('jumblr') ? 'show' : 'hide' }>

12
react/src/components/dashboard/settings/settings.js

@ -11,10 +11,11 @@ import {
addPeerNode,
getAppConfig,
saveAppConfig,
resetAppConfig,
getAppInfo,
shepherdCli,
checkForUpdateUIPromise,
updateUIPromise
updateUIPromise,
} from '../../../actions/actionCreators';
import Store from '../../../store';
@ -72,6 +73,7 @@ class Settings extends React.Component {
this.renderPeersList = this.renderPeersList.bind(this);
this.renderSNPeersList = this.renderSNPeersList.bind(this);
this._saveAppConfig = this._saveAppConfig.bind(this);
this._resetAppConfig = this._resetAppConfig.bind(this);
this.exportWifKeysRaw = this.exportWifKeysRaw.bind(this);
this.toggleSeedInputVisibility = this.toggleSeedInputVisibility.bind(this);
this._checkForUpdateUIPromise = this._checkForUpdateUIPromise.bind(this);
@ -97,12 +99,16 @@ class Settings extends React.Component {
}
}
_resetAppConfig() {
Store.dispatch(resetAppConfig());
}
resizeLoginTextarea() {
// auto-size textarea
setTimeout(() => {
if (this.state.seedInputVisibility) {
document.querySelector('#wifkeysPassphraseTextarea').style.height = '1px';
document.querySelector('#wifkeysPassphraseTextarea').style.height = `${(15 + document.querySelector('#wifkeysPassphraseTextarea').scrollHeight)}px`;
document.querySelector('#wifkeysPassphraseTextarea').style.height = '1px';
document.querySelector('#wifkeysPassphraseTextarea').style.height = `${(15 + document.querySelector('#wifkeysPassphraseTextarea').scrollHeight)}px`;
}
}, 100);
}

6
react/src/components/dashboard/settings/settings.render.js

@ -538,6 +538,10 @@ export const SettingsRender = function() {
type="button"
className="btn btn-primary waves-effect waves-light"
onClick={ this._saveAppConfig }>{ translate('SETTINGS.SAVE_APP_CONFIG') }</button>
<button
type="button"
className="btn btn-primary waves-effect waves-light margin-left-30"
onClick={ this._resetAppConfig }>Reset to default</button>
</div>
</div>
</div>
@ -570,7 +574,7 @@ export const SettingsRender = function() {
name="cliCoin"
id="settingsCliOptions"
onChange={ this.updateInput }>
<option value="">{ translate('INDEX.CLI_NATIVE_COIN') }</option>
<option>{ translate('INDEX.CLI_NATIVE_COIN') }</option>
{ this.renderActiveCoinsList('native') }
</select>
<label

26
react/src/components/dashboard/walletsBalance/walletsBalance.render.js

@ -1,5 +1,7 @@
import React from 'react';
import { translate } from '../../../translate/translate';
import { formatValue } from '../../../util/formatValue';
import Config from '../../../config';
const WalletsBalanceRender = function() {
return (
@ -30,12 +32,14 @@ const WalletsBalanceRender = function() {
<i className="icon fa-eye font-size-24 vertical-align-bottom margin-right-5"></i>
{ this.isNativeMode() ? translate('INDEX.TRANSPARENT_BALANCE') : translate('INDEX.BALANCE') }
</div>
<span className="pull-right padding-top-10 font-size-22">
<span
className="pull-right padding-top-10 font-size-22"
title={ Config.roundValues ? this.renderBalance('main') : null }>
{ this.isNativeMode() ?
this.props.ActiveCoin.balance.transparent ? this.props.ActiveCoin.balance.transparent : '-'
:
<span>
{ this.renderBalance('main') } { this.props.ActiveCoin.coin }
{ Config.roundValues ? formatValue('round', this.renderBalance('main'), -6) : this.renderBalance('main') } { this.props.ActiveCoin.coin }
</span>
}
</span>
@ -54,8 +58,10 @@ const WalletsBalanceRender = function() {
<i className="icon fa-eye-slash font-size-24 vertical-align-bottom margin-right-5"></i>
{ translate('INDEX.Z_BALANCE') }
</div>
<span className="pull-right padding-top-10 font-size-22">
{ this.props.ActiveCoin.balance.private ? this.props.ActiveCoin.balance.private : '-' }
<span
className="pull-right padding-top-10 font-size-22"
title={ Config.roundValues ? this.props.ActiveCoin.balance.private : null }>
{ this.props.ActiveCoin.balance.private ? (Config.roundValues ? formatValue('round', this.props.ActiveCoin.balance.private, -6) : this.props.ActiveCoin.balance.private) : '-' }
</span>
</div>
</div>
@ -73,13 +79,15 @@ const WalletsBalanceRender = function() {
<i className="icon fa-money font-size-24 vertical-align-bottom margin-right-5"></i>
{ translate('INDEX.INTEREST_EARNED') }
</div>
<span className="pull-right padding-top-10 font-size-22">
<span
className="pull-right padding-top-10 font-size-22"
title={ Config.roundValues ? this.renderBalance('interest') : null }>
{ this.isNativeMode() ?
this.props.Dashboard.progress
&& this.props.Dashboard.progress.interest ? this.props.Dashboard.progress.interest : '-'
:
<span>
{this.renderBalance('interest')} {this.props.ActiveCoin.coin}
{ Config.roundValues ? formatValue('round', this.renderBalance('interest'), -6) : this.renderBalance('interest') } { this.props.ActiveCoin.coin }
</span>
}
</span>
@ -99,12 +107,14 @@ const WalletsBalanceRender = function() {
<i className="icon fa-bullseye font-size-24 vertical-align-bottom margin-right-5"></i>
{ translate('INDEX.TOTAL_BALANCE') }
</div>
<span className="pull-right padding-top-10 font-size-22">
<span
className="pull-right padding-top-10 font-size-22"
title={ Config.roundValues ? this.renderBalance('total') : null }>
{ this.isNativeMode() ?
this.props.ActiveCoin.balance.total ? this.props.ActiveCoin.balance.total : '-'
:
<span>
{ this.renderBalance('total') } { this.props.ActiveCoin.coin }
{ Config.roundValues ? formatValue('round', this.renderBalance('total'), -6) : this.renderBalance('total') } { this.props.ActiveCoin.coin }
</span>
}
</span>

7
react/src/components/dashboard/walletsData/walletsData.js

@ -1,6 +1,7 @@
import React from 'react';
import { translate } from '../../../translate/translate';
import { sortByDate } from '../../../util/sort';
import { formatValue } from '../../../util/formatValue';
import Config from '../../../config';
import {
basiliskRefresh,
@ -448,6 +449,8 @@ class WalletsData extends React.Component {
_amount = _cache && _cache[_coin] && _cache[_coin][address] && _cache[_coin][address].getbalance.data && _cache[_coin][address].getbalance.data.balance ? _cache[_coin][address].getbalance.data.balance : 'N/A';
}
_amount = formatValue('round', _amount, -6);
items.push(
<li key={address}>
<a onClick={ () => this.updateAddressSelection(address, type, _amount) }>
@ -484,7 +487,9 @@ class WalletsData extends React.Component {
return _addresses.public[i].amount;
} else {
const address = _addresses.public[i].address;
const _amount = _cache && _cache[_coin] && _cache[_coin][address] && _cache[_coin][address].getbalance.data && _cache[_coin][address].getbalance.data.balance ? _cache[_coin][address].getbalance.data.balance : 'N/A';
let _amount = _cache && _cache[_coin] && _cache[_coin][address] && _cache[_coin][address].getbalance.data && _cache[_coin][address].getbalance.data.balance ? _cache[_coin][address].getbalance.data.balance : 'N/A';
_amount = formatValue('round', _amount, -6);
return _amount;
}

11
react/src/components/dashboard/walletsData/walletsData.render.js

@ -5,6 +5,8 @@ import WalletsBasiliskConnection from '../walletsBasiliskConnection/walletsBasil
import WalletsNotariesList from '../walletsNotariesList/walletsNotariesList';
import WalletsCacheData from '../walletsCacheData/walletsCacheData';
import { secondsToString } from '../../../util/time';
import { formatValue } from '../../../util/formatValue';
import Config from '../../../config';
// TODO: clean basilisk dropdown menu
@ -87,7 +89,12 @@ export const TxHistoryListRender = function(tx, index) {
}
<td>{ this.renderTxType(tx.category || tx.type) }</td>
<td>{ tx.confirmations }</td>
<td>{ tx.amount || translate('DASHBOARD.UNKNOWN') }</td>
{ Config.roundValues &&
<td title={ tx.amount }>{ formatValue('round', tx.amount, -6) || translate('DASHBOARD.UNKNOWN') }</td>
}
{ !Config.roundValues &&
<td>{ tx.amount || translate('DASHBOARD.UNKNOWN') }</td>
}
<td>{ secondsToString(tx.blocktime || tx.timestamp || tx.time) }</td>
<td className={ this.isFullMode() ? '' : 'hide' }>{ tx.address }</td>
<td className={ this.isNativeMode() ? '' : 'hide' }>{ this.renderAddress(tx) }</td>
@ -144,7 +151,7 @@ export const WalletsDataRender = function() {
<WalletsNotariesList {...this.props} />
<WalletsCacheData {...this.props} />
<div id="edexcoin_dashboardinfo">
<div className="col-xs-12 margin-top-20">
<div className="col-xs-12 margin-top-20 backround-gray">
<div className="panel nav-tabs-horizontal">
<div>
<div className="col-xlg-12 col-lg-12 col-sm-12 col-xs-12">

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

@ -1,6 +1,8 @@
import React from 'react';
import { translate } from '../../../translate/translate';
import { secondsToString } from '../../../util/time';
import { formatValue } from '../../../util/formatValue';
import Config from '../../../config';
const WalletsTxInfoRender = function(txInfo) {
return (
@ -55,7 +57,7 @@ const WalletsTxInfoRender = function(txInfo) {
<tr>
<td>{ translate('TX_INFO.AMOUNT') }</td>
<td>
{ txInfo.amount }
{ Config.roundValues ? formatValue('round', txInfo.amount, -10) : txInfo.amount }
</td>
</tr>
<tr>

26
react/src/components/overrides.scss

@ -615,4 +615,30 @@ select{
margin-left: 10px;
margin-top: -2px;
}
}
.clipboard-edexaddr {
margin-left: 10px;
}
.coind-down-modal {
.modal-body {
height: 60vh;
> div {
height: 100%;
}
.page-content {
width: 90%;
height: 100%;
textarea {
min-height: 200px;
}
}
}
}
.backround-gray {
background: #f3f4f5;
}

1
react/src/config.js

@ -12,6 +12,7 @@ let _config = {
default: true
},
iguanaLessMode: true,
roundValues: true,
};
try {

9
react/src/reducers/dashboard.js

@ -8,7 +8,8 @@ import {
DASHBOARD_CONNECT_NOTARIES,
VIEW_CACHE_DATA,
LOG_GUI_HTTP,
TOGGLE_NOTIFICATIONS_MODAL
TOGGLE_NOTIFICATIONS_MODAL,
DISPLAY_COIND_DOWN_MODAL
} from '../actions/storeType';
const HTTP_STACK_MAX_ENTRIES = 150; // limit stack mem length to N records per type
@ -36,6 +37,7 @@ export function Dashboard(state = {
failedToConnectNodes: null,
},
guiLog: {},
displayCoindDownModal: false,
}, action) {
switch (action.type) {
case DASHBOARD_SECTION_CHANGE:
@ -97,6 +99,11 @@ export function Dashboard(state = {
return Object.assign({}, state, {
guiLog: newLogState,
});
case DISPLAY_COIND_DOWN_MODAL:
return Object.assign({}, state, {
displayCoindDownModal: action.displayCoindDownModal,
});
break;
default:
return state;
}

Loading…
Cancel
Save