From 8be20c7de277dc3f534bce0599ef98480a8e8527 Mon Sep 17 00:00:00 2001 From: pbca26 Date: Tue, 11 Apr 2017 20:10:01 +0300 Subject: [PATCH] native balance --- react/src/actions/actionCreators.js | 101 +++++++++++++++++- .../src/components/dashboard/coinTileItem.js | 6 +- .../src/components/dashboard/walletsNative.js | 2 +- react/src/reducers/activeCoin.js | 12 ++- 4 files changed, 114 insertions(+), 7 deletions(-) diff --git a/react/src/actions/actionCreators.js b/react/src/actions/actionCreators.js index c079661..24e3fa1 100644 --- a/react/src/actions/actionCreators.js +++ b/react/src/actions/actionCreators.js @@ -37,6 +37,8 @@ export const START_INTERVAL= 'START_INTERVAL'; export const STOP_INTERVAL= 'STOP_INTERVAL'; export const DASHBOARD_ACTIVE_SECTION = 'DASHBOARD_ACTIVE_SECTION'; 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_TXHISTORY = 'DASHBOARD_ACTIVE_COIN_NATIVE_TXHISTORY'; export function toggleDashboardActiveSection(name) { return { @@ -886,18 +888,23 @@ function getSyncInfoNativeState(json) { } } -export function getSyncInfoNative(coin) { - var payload = {}, - passthru_agent; +function getPassthruAgent(coin) { + var passthru_agent; if ( coin === 'KMD') { passthru_agent = 'komodo'; }; if ( coin === 'ZEC') { passthru_agent = 'zcash'; }; if (checkAC(coin)) { passthru_agent = 'iguana'; }; + return passthru_agent; +} + +export function getSyncInfoNative(coin) { + var payload = {}; + payload = { 'userpass': 'tmpIgRPCUser@' + sessionStorage.getItem('IguanaRPCAuth'), - 'agent': passthru_agent, + 'agent': getPassthruAgent(coin), 'method': 'passthru', 'asset': coin, 'function': 'getinfo', @@ -949,6 +956,92 @@ export function getDexBalance(coin, addr) { }); } +export function getKMDBalanceTotal(coin) { + var payload; + + if ( coin !== 'KMD' && coin !== 'ZEC' ) { + payload = { + 'userpass': 'tmpIgRPCUser@' + sessionStorage.getItem('IguanaRPCAuth'), + 'agent': 'iguana', + 'method': 'passthru', + 'asset': coin, + 'function': 'z_gettotalbalance', + 'hex': '3000' + }; + } else { + payload = { + 'userpass': 'tmpIgRPCUser@' + sessionStorage.getItem('IguanaRPCAuth'), + 'agent': getPassthruAgent(coin), + 'method': 'passthru', + 'function': 'z_gettotalbalance', + 'hex': '3000' + }; + } + + return dispatch => { + return fetch('http://127.0.0.1:' + Config.iguanaCorePort, { + method: 'POST', + body: JSON.stringify(payload), + }) + .catch(function(error) { + console.log(error); + dispatch(triggerToaster(true, 'getKMDBalanceTotal', 'Error', 'error')); + }) + .then(response => response.json()) + .then(json => dispatch(getNativeBalancesState(json))) + } +} + +export function getNativeBalancesState(json) { + return { + type: DASHBOARD_ACTIVE_COIN_NATIVE_BALANCE, + balance: json && !json.error ? json : 0, + } +} + +export function getNativeTxHistory(coin) { + var payload; + + if (getPassthruAgent(coin) === 'iguana') { + payload = { + 'userpass': 'tmpIgRPCUser@' + sessionStorage.getItem('IguanaRPCAuth'), + 'agent': 'iguana', + 'method': 'passthru', + 'asset': coin, + 'function': 'listtransactions', + 'hex': '' + }; + } else { + payload = { + 'userpass': 'tmpIgRPCUser@' + sessionStorage.getItem('IguanaRPCAuth'), + 'agent': getPassthruAgent(coin), + 'method': 'passthru', + 'function': 'listtransactions', + 'hex': '' + }; + } + + return dispatch => { + return fetch('http://127.0.0.1:' + Config.iguanaCorePort, { + method: 'POST', + body: JSON.stringify(payload), + }) + .catch(function(error) { + console.log(error); + dispatch(triggerToaster(true, 'getNativeTxHistory', 'Error', 'error')); + }) + .then(response => response.json()) + .then(json => dispatch(getNativeTxHistoryState(json))) + } +} + +export function getNativeTxHistoryState(json) { + return { + type: DASHBOARD_ACTIVE_COIN_NATIVE_TXHISTORY, + txhistory: json && !json.error ? json : 0, + } +} + /*function Shepherd_SendPendValue() { Shepherd_SysInfo().then(function(result){ var ram_data = formatBytes(result.totalmem_bytes) diff --git a/react/src/components/dashboard/coinTileItem.js b/react/src/components/dashboard/coinTileItem.js index d632c86..d0bf865 100644 --- a/react/src/components/dashboard/coinTileItem.js +++ b/react/src/components/dashboard/coinTileItem.js @@ -8,7 +8,9 @@ import { startInterval, stopInterval, iguanaEdexBalance, - getSyncInfoNative + getSyncInfoNative, + getKMDBalanceTotal, + getNativeTxHistory } from '../../actions/actionCreators'; import Store from '../../store'; @@ -31,6 +33,8 @@ class CoinTileItem extends React.Component { Store.dispatch(stopInterval('sync', this.props.Interval.interval)); var _iguanaActiveHandle = setInterval(function() { Store.dispatch(getSyncInfoNative(coin)); + Store.dispatch(getKMDBalanceTotal(coin)); + Store.dispatch(getNativeTxHistory(coin)); }, 3000); Store.dispatch(startInterval('sync', _iguanaActiveHandle)); } else { diff --git a/react/src/components/dashboard/walletsNative.js b/react/src/components/dashboard/walletsNative.js index 3248f04..5ae1845 100644 --- a/react/src/components/dashboard/walletsNative.js +++ b/react/src/components/dashboard/walletsNative.js @@ -26,7 +26,7 @@ class WalletsNative extends React.Component {
  1. - {this.props.ActiveCoin.coin} + {this.props.ActiveCoin.coin}
diff --git a/react/src/reducers/activeCoin.js b/react/src/reducers/activeCoin.js index a453b14..709481e 100644 --- a/react/src/reducers/activeCoin.js +++ b/react/src/reducers/activeCoin.js @@ -6,7 +6,9 @@ import { DASHBOARD_ACTIVE_COIN_RESET_FORMS, DASHBOARD_ACTIVE_SECTION, DASHBOARD_ACTIVE_TXINFO_MODAL, - ACTIVE_COIN_GET_ADDRESSES + ACTIVE_COIN_GET_ADDRESSES, + DASHBOARD_ACTIVE_COIN_NATIVE_BALANCE, + DASHBOARD_ACTIVE_COIN_NATIVE_TXHISTORY } from '../actions/actionCreators'; export function ActiveCoin(state = { @@ -55,6 +57,14 @@ export function ActiveCoin(state = { return Object.assign({}, state, { showTransactionInfo: action.display, }); + case DASHBOARD_ACTIVE_COIN_NATIVE_BALANCE: + return Object.assign({}, state, { + balance: action.balance, + }); + case DASHBOARD_ACTIVE_COIN_NATIVE_TXHISTORY: + return Object.assign({}, state, { + txhistory: action.txhistory, + }); default: return state; }