From 93c317fb5ad3cd267f9b4d1fdcf02ed224ebaa7a Mon Sep 17 00:00:00 2001 From: pbca26 <pbca26@gmail.com> Date: Sat, 8 Jul 2017 03:14:31 -0700 Subject: [PATCH] komodod param dropdown on addcoin --- react/src/actions/actions/addCoin.js | 30 ++++++++++++----- react/src/components/addcoin/addcoin.js | 33 ++++++++++++++++--- .../addcoin/coin-selectors.render.js | 14 ++++++++ 3 files changed, 63 insertions(+), 14 deletions(-) diff --git a/react/src/actions/actions/addCoin.js b/react/src/actions/actions/addCoin.js index 146c99a..43d980f 100644 --- a/react/src/actions/actions/addCoin.js +++ b/react/src/actions/actions/addCoin.js @@ -19,12 +19,11 @@ import { checkAC } from '../../components/addcoin/payload'; -export function addCoin(coin, mode, syncOnly, port) { +export function addCoin(coin, mode, syncOnly, port, startupParams) { if (mode === '-1' || mode === -1) { - mode = '-1'; return dispatch => { - dispatch(shepherdGetConfig(coin, mode)); + dispatch(shepherdGetConfig(coin, '-1', startupParams)); } } else { if (checkCoinType(coin) === 'currency_ac') { @@ -154,7 +153,7 @@ export function iguanaAddCoin(coin, mode, acData, port) { } } -export function shepherdHerd(coin, mode, path) { +export function shepherdHerd(coin, mode, path, startupParams) { let acData; let herdData = { 'ac_name': coin, @@ -186,6 +185,15 @@ export function shepherdHerd(coin, mode, path) { }; } + if (startupParams) { + herdData['ac_custom_param'] = startupParams.type; + + if (startupParams.value) { + herdData['ac_custom_param_value'] = startupParams.value; + } + } + + // TODO: switch statement if (checkCoinType(coin) === 'crypto') { acData = startCrypto( path.result, @@ -193,6 +201,7 @@ export function shepherdHerd(coin, mode, path) { mode ); } + if (checkCoinType(coin) === 'currency_ac') { acData = startCurrencyAssetChain( path.result, @@ -280,7 +289,7 @@ export function addCoinResult(coin, mode) { } } -export function _shepherdGetConfig(coin, mode) { +export function _shepherdGetConfig(coin, mode, startupParams) { return dispatch => { return fetch(`http://127.0.0.1:${Config.agamaPort}/shepherd/getconf`, { method: 'POST', @@ -305,7 +314,8 @@ export function _shepherdGetConfig(coin, mode) { shepherdHerd( coin, mode, - json + json, + startupParams ) ) ); @@ -339,7 +349,7 @@ export function iguanaActiveHandleBypass() { } } -export function shepherdGetConfig(coin, mode) { +export function shepherdGetConfig(coin, mode, startupParams) { if (coin === 'KMD' && mode === '-1') { return dispatch => { @@ -366,7 +376,8 @@ export function shepherdGetConfig(coin, mode) { shepherdHerd( coin, mode, - json + json, + startupParams ) ) ) @@ -396,7 +407,8 @@ export function shepherdGetConfig(coin, mode) { shepherdHerd( coin, mode, - json + json, + startupParams ) ) ); diff --git a/react/src/components/addcoin/addcoin.js b/react/src/components/addcoin/addcoin.js index 60da523..947a188 100644 --- a/react/src/components/addcoin/addcoin.js +++ b/react/src/components/addcoin/addcoin.js @@ -35,6 +35,7 @@ class AddCoin extends React.Component { }, mode: -2, syncOnly: false, + daemonParam: null, }, display: false, actionsMenu: false, @@ -89,6 +90,18 @@ class AddCoin extends React.Component { })); } + updateDaemonParam(e, index) { + let _coins = this.state.coins; + + _coins[index] = Object.assign({}, _coins[index], { + [e.target.name]: e.target.value, + }); + + this.setState(Object.assign({}, this.state, { + coins: _coins, + })); + } + toggleActionsMenu() { this.setState(Object.assign({}, this.state, { actionsMenu: !this.state.actionsMenu, @@ -193,11 +206,21 @@ class AddCoin extends React.Component { return; } - Store.dispatch(addCoin( - coin, - this.state.coins[0].mode, - this.state.coins[0].syncOnly - )); + if (!this.state.coins[0].daemonParam) { + Store.dispatch(addCoin( + coin, + this.state.coins[0].mode, + this.state.coins[0].syncOnly, + )); + } else { + Store.dispatch(addCoin( + coin, + this.state.coins[0].mode, + this.state.coins[0].syncOnly, + null, + { type: this.state.coins[0].daemonParam } + )); + } this.removeCoin(); this.addNewItem(); diff --git a/react/src/components/addcoin/coin-selectors.render.js b/react/src/components/addcoin/coin-selectors.render.js index b67eb64..8da4ba2 100644 --- a/react/src/components/addcoin/coin-selectors.render.js +++ b/react/src/components/addcoin/coin-selectors.render.js @@ -133,6 +133,20 @@ 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="toggle-box padding-top-3 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 className={ item.mode === '1' || item.mode === 1 ? 'col-sm-12' : 'hide' }> <div className="toggle-box padding-top-3 padding-bottom-10"> <span className="pointer">