Browse Source

resolved merge conflicts

all-modes
pbca26 8 years ago
parent
commit
b433a49e6f
  1. 32
      react/src/actions/actions/addCoin.js
  2. 206
      react/src/actions/actions/addressBalance.js
  3. 24
      react/src/actions/actions/atomic.js
  4. 48
      react/src/actions/actions/basiliskCache.js
  5. 68
      react/src/actions/actions/basiliskProcessAddress.js
  6. 2
      react/src/actions/actions/basiliskTxHistory.js
  7. 6
      react/src/actions/actions/cli.js
  8. 32
      react/src/actions/actions/createWallet.js
  9. 31
      react/src/actions/actions/dexCoins.js
  10. 60
      react/src/actions/actions/edexBalance.js
  11. 36
      react/src/actions/actions/edexGetTx.js
  12. 32
      react/src/actions/actions/fullTxHistory.js
  13. 40
      react/src/actions/actions/getAddrByAccount.js
  14. 32
      react/src/actions/actions/iguanaHelpers.js
  15. 2
      react/src/actions/actions/iguanaInstance.js
  16. 10
      react/src/actions/actions/jumblr.js
  17. 30
      react/src/actions/actions/logout.js
  18. 48
      react/src/actions/actions/nativeBalance.js
  19. 50
      react/src/actions/actions/nativeNewAddress.js
  20. 106
      react/src/actions/actions/nativeSend.js
  21. 76
      react/src/actions/actions/nativeSyncInfo.js
  22. 50
      react/src/actions/actions/nativeTxHistory.js
  23. 72
      react/src/actions/actions/notary.js
  24. 146
      react/src/actions/actions/sendFullBasilisk.js
  25. 108
      react/src/actions/actions/settings.js
  26. 32
      react/src/actions/actions/syncInfo.js
  27. 132
      react/src/actions/actions/walletAuth.js
  28. 3
      react/src/components/addcoin/addcoin.js
  29. 10
      react/src/components/addcoin/coin-selectors.render.js
  30. 104
      react/src/components/addcoin/payload.js
  31. 52
      react/src/components/dashboard/about/about.js
  32. 375
      react/src/components/dashboard/atomic/atomic.js
  33. 4
      react/src/components/dashboard/atomic/atomic.render.js
  34. 7
      react/src/components/dashboard/claimInterestModal/claimInterestModal.js
  35. 25
      react/src/components/dashboard/claimInterestModal/claimInterestModal.render.js
  36. 14
      react/src/components/dashboard/coinTile/coinTile.js
  37. 20
      react/src/components/dashboard/coinTile/coinTileItem.js
  38. 4
      react/src/components/dashboard/coindDownModal/coindDownModal.render.js
  39. 30
      react/src/components/dashboard/jumblr/jumblr.js
  40. 110
      react/src/components/dashboard/jumblr/jumblr.render.js
  41. 4
      react/src/components/dashboard/qrModal/qrModal.js
  42. 5
      react/src/components/dashboard/receiveCoin/receiveCoin.render.js
  43. 48
      react/src/components/dashboard/sendCoin/sendCoin.js
  44. 2
      react/src/components/dashboard/sendCoin/sendCoin.render.js
  45. 176
      react/src/components/dashboard/settings/settings.js
  46. 22
      react/src/components/dashboard/settings/settings.render.js
  47. 4
      react/src/components/dashboard/syncOnly/syncOnly.js
  48. 12
      react/src/components/dashboard/walletsBalance/walletsBalance.js
  49. 84
      react/src/components/dashboard/walletsData/walletsData.js
  50. 2
      react/src/components/dashboard/walletsData/walletsData.render.js
  51. 4
      react/src/components/dashboard/walletsInfo/walletsInfo.render.js
  52. 2
      react/src/components/dashboard/walletsNative/walletsNative.js
  53. 4
      react/src/components/dashboard/walletsNativeSend/walletsNativeSend.js
  54. 2
      react/src/components/dashboard/walletsNativeSend/walletsNativeSend.render.js
  55. 3
      react/src/components/dashboard/walletsTxInfo/walletsTxInfo.render.js
  56. 12
      react/src/components/login/login.js
  57. 35
      react/src/components/login/login.render.js
  58. 19
      react/src/components/overrides.scss
  59. 6
      react/src/components/toaster/toaster-item.js
  60. 8
      react/src/components/toaster/toaster.js
  61. 143
      react/src/translate/en.js
  62. 4
      react/src/util/cacheFormat.js
  63. 10
      react/src/util/coinHelper.js
  64. 48
      react/src/util/time.js

32
react/src/actions/actions/addCoin.js

@ -99,12 +99,12 @@ export function iguanaAddCoin(coin, mode, acData, port) {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'iguanaAddCoin', function: 'iguanaAddCoin',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${(port ? port : Config.iguanaCorePort)}`, url: `http://127.0.0.1:${(port ? port : Config.iguanaCorePort)}`,
'payload': acData, payload: acData,
'status': 'pending', status: 'pending',
})); }));
} }
@ -116,9 +116,9 @@ export function iguanaAddCoin(coin, mode, acData, port) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -133,9 +133,9 @@ export function iguanaAddCoin(coin, mode, acData, port) {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
dispatch( dispatch(
@ -238,7 +238,7 @@ export function shepherdHerd(coin, mode, path, startupParams) {
}, },
body: JSON.stringify({ body: JSON.stringify({
'herd': coin !== 'ZEC' ? 'komodod' : 'zcashd', 'herd': coin !== 'ZEC' ? 'komodod' : 'zcashd',
'options': herdData 'options': herdData,
}), }),
}) })
.catch(function(error) { .catch(function(error) {
@ -279,7 +279,7 @@ export function addCoinResult(coin, mode) {
const modeToValue = { const modeToValue = {
'1': 'full', '1': 'full',
'0': 'basilisk', '0': 'basilisk',
'-1': 'native' '-1': 'native',
}; };
return dispatch => { return dispatch => {
@ -302,7 +302,7 @@ export function _shepherdGetConfig(coin, mode, startupParams) {
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
body: JSON.stringify({ 'chain': 'komodod' }) body: JSON.stringify({ chain: 'komodod' })
}) })
.catch(function(error) { .catch(function(error) {
console.log(error); console.log(error);
@ -364,7 +364,7 @@ export function shepherdGetConfig(coin, mode, startupParams) {
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
body: JSON.stringify({ 'chain': 'komodod' }) body: JSON.stringify({ chain: 'komodod' })
}) })
.catch(function(error) { .catch(function(error) {
console.log(error); console.log(error);

206
react/src/actions/actions/addressBalance.js

@ -39,31 +39,31 @@ export function getKMDAddressesNative(coin, mode, currentAddress) {
if (passthruAgent === 'iguana') { if (passthruAgent === 'iguana') {
payload = { payload = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': passthruAgent, agent: passthruAgent,
'method': 'passthru', method: 'passthru',
'asset': coin, asset: coin,
'function': ajaxFunctionInput, function: ajaxFunctionInput,
'hex': tmplistaddrHexInput, hex: tmplistaddrHexInput,
}; };
} else { } else {
payload = { payload = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': passthruAgent, agent: passthruAgent,
'method': 'passthru', method: 'passthru',
'function': ajaxFunctionInput, function: ajaxFunctionInput,
'hex': tmplistaddrHexInput, hex: tmplistaddrHexInput,
}; };
} }
if (mode === 'full' || if (mode === 'full' ||
mode === 'basilisk') { mode === 'basilisk') {
payload = { payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'coin': coin, coin: coin,
'agent': 'bitcoinrpc', agent: 'bitcoinrpc',
'method': 'getaddressesbyaccount', method: 'getaddressesbyaccount',
'account': '*', account: '*',
}; };
} }
@ -91,7 +91,7 @@ export function getKMDAddressesNative(coin, mode, currentAddress) {
json = json.result.basilisk; json = json.result.basilisk;
if (json[coin].addresses) { if (json[coin].addresses) {
resolve({ 'result': json[coin].addresses }); resolve({ result: json[coin].addresses });
} }
}) })
} else { } else {
@ -108,12 +108,12 @@ export function getKMDAddressesNative(coin, mode, currentAddress) {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'getKMDAddressesNative', function: 'getKMDAddressesNative',
'type': 'post', type: 'post',
'url': Config.cli.default ? `http://127.0.0.1:${Config.agamaPort}/shepherd/cli` : `http://127.0.0.1:${Config.iguanaCorePort}`, url: Config.cli.default ? `http://127.0.0.1:${Config.agamaPort}/shepherd/cli` : `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -129,7 +129,7 @@ export function getKMDAddressesNative(coin, mode, currentAddress) {
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
body: JSON.stringify({ 'payload': payload }), body: JSON.stringify({ payload: payload }),
}; };
} }
@ -141,9 +141,9 @@ export function getKMDAddressesNative(coin, mode, currentAddress) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -158,9 +158,9 @@ export function getKMDAddressesNative(coin, mode, currentAddress) {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
resolve(Config.cli.default && mode === 'native' ? json.result : json); resolve(Config.cli.default && mode === 'native' ? json.result : json);
@ -173,11 +173,11 @@ export function getKMDAddressesNative(coin, mode, currentAddress) {
const passthruAgent = getPassthruAgent(coin); const passthruAgent = getPassthruAgent(coin);
const tmpIguanaRPCAuth = `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`; const tmpIguanaRPCAuth = `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`;
let payload = { let payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': passthruAgent, agent: passthruAgent,
'method': 'passthru', method: 'passthru',
'function': 'listunspent', function: 'listunspent',
'hex': '', hex: '',
}; };
if (passthruAgent === 'iguana') { if (passthruAgent === 'iguana') {
@ -186,10 +186,10 @@ export function getKMDAddressesNative(coin, mode, currentAddress) {
if (mode === 'full') { if (mode === 'full') {
payload = { payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'coin': coin, coin: coin,
'method': 'listunspent', method: 'listunspent',
'params': [ params: [
1, 1,
9999999, 9999999,
], ],
@ -198,11 +198,11 @@ export function getKMDAddressesNative(coin, mode, currentAddress) {
if (mode === 'basilisk') { if (mode === 'basilisk') {
payload = { payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': 'dex', agent: 'dex',
'method': 'listunspent', method: 'listunspent',
'address': currentAddress, address: currentAddress,
'symbol': coin, symbol: coin,
}; };
} }
@ -291,30 +291,30 @@ export function getKMDAddressesNative(coin, mode, currentAddress) {
.then((hashHexJson) => { .then((hashHexJson) => {
if (getPassthruAgent(coin) === 'iguana') { if (getPassthruAgent(coin) === 'iguana') {
payload = { payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': getPassthruAgent(coin), agent: getPassthruAgent(coin),
'method': 'passthru', method: 'passthru',
'asset': coin, asset: coin,
'function': 'z_getbalance', function: 'z_getbalance',
'hex': hashHexJson, hex: hashHexJson,
}; };
} else { } else {
payload = { payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': getPassthruAgent(coin), agent: getPassthruAgent(coin),
'method': 'passthru', method: 'passthru',
'function': 'z_getbalance', function: 'z_getbalance',
'hex': hashHexJson, hex: hashHexJson,
}; };
} }
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'getKMDAddressesNative+ZBalance', function: 'getKMDAddressesNative+ZBalance',
'type': 'post', type: 'post',
'url': Config.cli.default ? `http://127.0.0.1:${Config.agamaPort}/shepherd/cli` : `http://127.0.0.1:${Config.iguanaCorePort}`, url: Config.cli.default ? `http://127.0.0.1:${Config.agamaPort}/shepherd/cli` : `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -339,7 +339,7 @@ export function getKMDAddressesNative(coin, mode, currentAddress) {
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
body: JSON.stringify({ 'payload': payload }), body: JSON.stringify({ payload: payload }),
}; };
} }
@ -351,9 +351,9 @@ export function getKMDAddressesNative(coin, mode, currentAddress) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -371,9 +371,9 @@ export function getKMDAddressesNative(coin, mode, currentAddress) {
resolve(0); resolve(0);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': json, response: json,
})); }));
} }
dispatch( dispatch(
@ -396,9 +396,9 @@ export function getKMDAddressesNative(coin, mode, currentAddress) {
}; };
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
} }
@ -408,14 +408,14 @@ export function getKMDAddressesNative(coin, mode, currentAddress) {
})) }))
.then(zresult => { .then(zresult => {
dispatch(getKMDAddressesNativeState({ dispatch(getKMDAddressesNativeState({
'public': newAddressArray[0], public: newAddressArray[0],
'private': newAddressArray[1] private: newAddressArray[1],
})); }));
}); });
} else { } else {
dispatch(getKMDAddressesNativeState({ dispatch(getKMDAddressesNativeState({
'public': newAddressArray[0], public: newAddressArray[0],
'private': newAddressArray[1] private: newAddressArray[1],
})); }));
} }
} }
@ -451,12 +451,12 @@ export function getKMDAddressesNative(coin, mode, currentAddress) {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'getKMDAddressesNative+Balance', function: 'getKMDAddressesNative+Balance',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${(Config.useBasiliskInstance && mode === 'basilisk' ? Config.iguanaCorePort + 1 : Config.iguanaCorePort)}`, url: `http://127.0.0.1:${(Config.useBasiliskInstance && mode === 'basilisk' ? Config.iguanaCorePort + 1 : Config.iguanaCorePort)}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -468,9 +468,9 @@ export function getKMDAddressesNative(coin, mode, currentAddress) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -485,15 +485,15 @@ export function getKMDAddressesNative(coin, mode, currentAddress) {
.then(function(json) { .then(function(json) {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
updatedCache.basilisk[coin][currentAddress].refresh = { updatedCache.basilisk[coin][currentAddress].refresh = {
'data': json, data: json,
'status': 'done', status: 'done',
'timestamp': Date.now(), timestamp: Date.now(),
}; };
dispatch(shepherdGroomPost(pubkey, updatedCache)); dispatch(shepherdGroomPost(pubkey, updatedCache));
calcBalance( calcBalance(
@ -509,12 +509,12 @@ export function getKMDAddressesNative(coin, mode, currentAddress) {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'getKMDAddressesNative+Balance', function: 'getKMDAddressesNative+Balance',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${(Config.useBasiliskInstance && mode === 'basilisk' ? Config.iguanaCorePort + 1 : Config.iguanaCorePort)}`, url: `http://127.0.0.1:${(Config.useBasiliskInstance && mode === 'basilisk' ? Config.iguanaCorePort + 1 : Config.iguanaCorePort)}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -537,7 +537,7 @@ export function getKMDAddressesNative(coin, mode, currentAddress) {
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
body: JSON.stringify({ 'payload': payload }), body: JSON.stringify({ payload: payload }),
}; };
} }
@ -549,9 +549,9 @@ export function getKMDAddressesNative(coin, mode, currentAddress) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -570,9 +570,9 @@ export function getKMDAddressesNative(coin, mode, currentAddress) {
} }
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
calcBalance( calcBalance(

24
react/src/actions/actions/atomic.js

@ -11,12 +11,12 @@ export function atomic(payload) {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'atomic', function: 'atomic',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`, url: `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -28,9 +28,9 @@ export function atomic(payload) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -45,9 +45,9 @@ export function atomic(payload) {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
dispatch(atomicState(json)); dispatch(atomicState(json));

48
react/src/actions/actions/basiliskCache.js

@ -14,7 +14,7 @@ export function deleteCacheFile(_payload) {
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
body: JSON.stringify({ 'filename': _payload.pubkey }), body: JSON.stringify({ filename: _payload.pubkey }),
}) })
.catch(function(error) { .catch(function(error) {
console.log(error); console.log(error);
@ -61,14 +61,14 @@ export function getCacheFile(pubkey) {
} }
export function fetchNewCacheData(_payload) { export function fetchNewCacheData(_payload) {
const _userpass = `?userpass=tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, const _userpass = `?userpass=tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`;
_pubkey = `&pubkey=${_payload.pubkey}`, const _pubkey = `&pubkey=${_payload.pubkey}`;
_route = _payload.allcoins ? 'cache-all' : 'cache-one', const _route = _payload.allcoins ? 'cache-all' : 'cache-one';
_coin = `&coin=${_payload.coin}`, const _coin = `&coin=${_payload.coin}`;
_calls = `&calls=${_payload.calls}`, const _calls = `&calls=${_payload.calls}`;
_address = _payload.address ? (`&address=${_payload.address}`) : '', const _address = _payload.address ? (`&address=${_payload.address}`) : '';
_skip = _payload.skip ? (`&skip=${_payload.skip}`) : '', const _skip = _payload.skip ? (`&skip=${_payload.skip}`) : '';
_iguanaInstancePort = Config.useBasiliskInstance ? `&port=${Config.iguanaCorePort + 1}` : ''; const _iguanaInstancePort = Config.useBasiliskInstance ? `&port=${Config.iguanaCorePort + 1}` : '';
return dispatch => { return dispatch => {
return fetch(`http://127.0.0.1:${Config.agamaPort}/shepherd/${_route}${_userpass}${_pubkey}${_coin}${_calls}${_address}${_skip}${_iguanaInstancePort}`, { return fetch(`http://127.0.0.1:${Config.agamaPort}/shepherd/${_route}${_userpass}${_pubkey}${_coin}${_calls}${_address}${_skip}${_iguanaInstancePort}`, {
@ -129,10 +129,10 @@ function getShepherdCacheState(json, pubkey, coin) {
json.result.indexOf('no file with handle') > -1) { json.result.indexOf('no file with handle') > -1) {
return dispatch => { return dispatch => {
dispatch(fetchNewCacheData({ dispatch(fetchNewCacheData({
'pubkey': pubkey, pubkey: pubkey,
'allcoins': false, allcoins: false,
'coin': coin, coin: coin,
'calls': 'listtransactions:getbalance', calls: 'listtransactions:getbalance',
})); }));
} }
} else { } else {
@ -144,13 +144,13 @@ function getShepherdCacheState(json, pubkey, coin) {
} }
export function fetchUtxoCache(_payload) { export function fetchUtxoCache(_payload) {
const _userpass = `?userpass=tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, const _userpass = `?userpass=tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`;
_pubkey = `&pubkey=${_payload.pubkey}`, const _pubkey = `&pubkey=${_payload.pubkey}`;
_route = _payload.allcoins ? 'cache-all' : 'cache-one', const _route = _payload.allcoins ? 'cache-all' : 'cache-one';
_coin = `&coin=${_payload.coin}`, const _coin = `&coin=${_payload.coin}`;
_calls = `&calls=${_payload.calls}`, const _calls = `&calls=${_payload.calls}`;
_address = _payload.address ? (`&address=${_payload.address}`) : '', const _address = _payload.address ? (`&address=${_payload.address}`) : '';
_iguanaInstancePort = Config.useBasiliskInstance ? `&port=${Config.iguanaCorePort + 1}` : ''; const _iguanaInstancePort = Config.useBasiliskInstance ? `&port=${Config.iguanaCorePort + 1}` : '';
return dispatch => { return dispatch => {
return fetch(`http://127.0.0.1:${Config.agamaPort}/shepherd/${_route}${_userpass}${_pubkey}${_coin}${_calls}${_address}${_iguanaInstancePort}`, { return fetch(`http://127.0.0.1:${Config.agamaPort}/shepherd/${_route}${_userpass}${_pubkey}${_coin}${_calls}${_address}${_iguanaInstancePort}`, {
@ -186,8 +186,8 @@ export function shepherdGroomPost(_filename, _payload) {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
body: JSON.stringify({ body: JSON.stringify({
'filename': _filename, filename: _filename,
'payload': JSON.stringify(_payload), payload: JSON.stringify(_payload),
}), }),
}) })
.catch(function(error) { .catch(function(error) {
@ -213,8 +213,8 @@ export function shepherdGroomPostPromise(_filename, _payload) {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
body: JSON.stringify({ body: JSON.stringify({
'filename': _filename, filename: _filename,
'payload': JSON.stringify(_payload), payload: JSON.stringify(_payload),
}), }),
}) })
.catch(function(error) { .catch(function(error) {

68
react/src/actions/actions/basiliskProcessAddress.js

@ -8,23 +8,23 @@ import Config from '../../config';
export function checkAddressBasilisk(coin, address) { export function checkAddressBasilisk(coin, address) {
const payload = { const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': 'dex', agent: 'dex',
'method': 'checkaddress', method: 'checkaddress',
'address': address, address: address,
'symbol': coin, symbol: coin,
}; };
return dispatch => { return dispatch => {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'checkAddressBasilisk', function: 'checkAddressBasilisk',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${Config.useBasiliskInstance ? Config.iguanaCorePort + 1 : Config.iguanaCorePort}`, url: `http://127.0.0.1:${Config.useBasiliskInstance ? Config.iguanaCorePort + 1 : Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -36,9 +36,9 @@ export function checkAddressBasilisk(coin, address) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -53,9 +53,9 @@ export function checkAddressBasilisk(coin, address) {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
dispatch(checkAddressBasiliskHandle(json)); dispatch(checkAddressBasiliskHandle(json));
@ -94,23 +94,23 @@ function checkAddressBasiliskHandle(json) {
export function validateAddressBasilisk(coin, address) { export function validateAddressBasilisk(coin, address) {
const payload = { const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': 'dex', agent: 'dex',
'method': 'validateaddress', method: 'validateaddress',
'address': address, address: address,
'symbol': coin, symbol: coin,
}; };
return dispatch => { return dispatch => {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'validateAddressBasilisk', function: 'validateAddressBasilisk',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`, url: `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -122,9 +122,9 @@ export function validateAddressBasilisk(coin, address) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -139,9 +139,9 @@ export function validateAddressBasilisk(coin, address) {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
dispatch(validateAddressBasiliskHandle(json)); dispatch(validateAddressBasiliskHandle(json));

2
react/src/actions/actions/basiliskTxHistory.js

@ -38,7 +38,7 @@ export function getBasiliskTransactionsList(coin, address) {
json = json.result.basilisk; json = json.result.basilisk;
if (json[coin][address].listtransactions) { if (json[coin][address].listtransactions) {
dispatch(getNativeTxHistoryState({ 'result': json[coin][address].listtransactions.data })); dispatch(getNativeTxHistoryState({ result: json[coin][address].listtransactions.data }));
} }
}) })
} }

6
react/src/actions/actions/cli.js

@ -10,7 +10,7 @@ export function shepherdCliPromise(mode, chain, cmd) {
const _payload = { const _payload = {
mode, mode,
chain, chain,
cmd cmd,
}; };
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
@ -19,7 +19,7 @@ export function shepherdCliPromise(mode, chain, cmd) {
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
body: JSON.stringify({ 'payload': _payload }), body: JSON.stringify({ payload: _payload }),
}) })
.catch(function(error) { .catch(function(error) {
console.log(error); console.log(error);
@ -40,7 +40,7 @@ export function shepherdCli(mode, chain, cmd) {
const _payload = { const _payload = {
mode, mode,
chain, chain,
cmd cmd,
}; };
return dispatch => { return dispatch => {

32
react/src/actions/actions/createWallet.js

@ -34,22 +34,22 @@ function createNewWalletState(json) {
export function createNewWallet(_passphrase) { export function createNewWallet(_passphrase) {
const payload = { const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': 'bitcoinrpc', agent: 'bitcoinrpc',
'method': 'encryptwallet', method: 'encryptwallet',
'passphrase': _passphrase, passphrase: _passphrase,
}; };
return dispatch => { return dispatch => {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'createNewWallet', function: 'createNewWallet',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`, url: `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -61,9 +61,9 @@ export function createNewWallet(_passphrase) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -78,9 +78,9 @@ export function createNewWallet(_passphrase) {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
dispatch(createNewWalletState(json)); dispatch(createNewWalletState(json));

31
react/src/actions/actions/dexCoins.js

@ -8,23 +8,24 @@ import {
} from './log'; } from './log';
import Config from '../../config'; import Config from '../../config';
// TODO: find out why it errors on slow systems
export function getDexCoins() { export function getDexCoins() {
const _payload = { const _payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': 'InstantDEX', agent: 'InstantDEX',
'method': 'allcoins', method: 'allcoins',
}; };
return dispatch => { return dispatch => {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'getDexCoins', function: 'getDexCoins',
'type': 'post', type: 'post',
'url': Config.iguanaLessMode ? `http://127.0.0.1:${Config.agamaPort}/shepherd/InstantDEX/allcoins` : `http://127.0.0.1:${Config.iguanaCorePort}`, url: Config.iguanaLessMode ? `http://127.0.0.1:${Config.agamaPort}/shepherd/InstantDEX/allcoins` : `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': _payload, payload: _payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -50,9 +51,9 @@ export function getDexCoins() {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -67,9 +68,9 @@ export function getDexCoins() {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
dispatch(dashboardCoinsState(json)); dispatch(dashboardCoinsState(json));

60
react/src/actions/actions/edexBalance.js

@ -8,10 +8,10 @@ import Config from '../../config';
export function iguanaEdexBalance(coin) { export function iguanaEdexBalance(coin) {
const _payload = { const _payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': 'bitcoinrpc', agent: 'bitcoinrpc',
'method': 'getbalance', method: 'getbalance',
'coin': coin, coin: coin,
}; };
return dispatch => { return dispatch => {
@ -19,12 +19,12 @@ export function iguanaEdexBalance(coin) {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'iguanaEdexBalance', function: 'iguanaEdexBalance',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`, url: `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': _payload, payload: _payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -36,9 +36,9 @@ export function iguanaEdexBalance(coin) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -65,23 +65,23 @@ function iguanaEdexBalanceState(json) {
export function getDexBalance(coin, mode, addr) { export function getDexBalance(coin, mode, addr) {
Promise.all(addr.map((_addr, index) => { Promise.all(addr.map((_addr, index) => {
const payload = { const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': 'dex', agent: 'dex',
'method': 'listunspent', method: 'listunspent',
'address': _addr, address: _addr,
'symbol': coin, symbol: coin,
}; };
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'getDexBalance', function: 'getDexBalance',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${Config.useBasiliskInstance ? Config.iguanaCorePort + 1 : Config.iguanaCorePort}`, url: `http://127.0.0.1:${Config.useBasiliskInstance ? Config.iguanaCorePort + 1 : Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -93,9 +93,9 @@ export function getDexBalance(coin, mode, addr) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -111,9 +111,9 @@ export function getDexBalance(coin, mode, addr) {
console.log(json); console.log(json);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
}) })

36
react/src/actions/actions/edexGetTx.js

@ -7,24 +7,24 @@ import Config from '../../config';
export function edexGetTransaction(data, dispatch) { export function edexGetTransaction(data, dispatch) {
const payload = { const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'symbol': data.coin, symbol: data.coin,
'agent': 'dex', agent: 'dex',
'method': 'gettransaction', method: 'gettransaction',
'vout': 1, vout: 1,
'txid': data.txid txid: data.txid
}; };
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'edexGetTransaction', function: 'edexGetTransaction',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`, url: `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -36,9 +36,9 @@ export function edexGetTransaction(data, dispatch) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -53,9 +53,9 @@ export function edexGetTransaction(data, dispatch) {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
resolve(json); resolve(json);

32
react/src/actions/actions/fullTxHistory.js

@ -10,10 +10,10 @@ import Config from '../../config';
export function getFullTransactionsList(coin) { export function getFullTransactionsList(coin) {
const payload = { const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'coin': coin, coin: coin,
'method': 'listtransactions', method: 'listtransactions',
'params': [ params: [
0, 0,
9999999, 9999999,
[] []
@ -24,12 +24,12 @@ export function getFullTransactionsList(coin) {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'getFullTransactionsList', function: 'getFullTransactionsList',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`, url: `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -41,9 +41,9 @@ export function getFullTransactionsList(coin) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -58,9 +58,9 @@ export function getFullTransactionsList(coin) {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
dispatch(getNativeTxHistoryState(json)); dispatch(getNativeTxHistoryState(json));

40
react/src/actions/actions/getAddrByAccount.js

@ -12,8 +12,8 @@ export function getAddressesByAccountState(json, coin, mode) {
for (let i = 0; i < json.result.length; i++) { for (let i = 0; i < json.result.length; i++) {
publicAddressArray.push({ publicAddressArray.push({
'address': json.result[i], address: json.result[i],
'amount': 'N/A' amount: 'N/A',
}); });
} }
@ -22,29 +22,29 @@ export function getAddressesByAccountState(json, coin, mode) {
return { return {
type: ACTIVE_COIN_GET_ADDRESSES, type: ACTIVE_COIN_GET_ADDRESSES,
addresses: { 'public': json.result }, addresses: { public: json.result },
} }
} }
export function getAddressesByAccount(coin, mode) { export function getAddressesByAccount(coin, mode) {
const payload = { const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'coin': coin, coin: coin,
'agent': 'bitcoinrpc', agent: 'bitcoinrpc',
'method': 'getaddressesbyaccount', method: 'getaddressesbyaccount',
'account': '*', account: '*',
}; };
return dispatch => { return dispatch => {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'getAddressesByAccount', function: 'getAddressesByAccount',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`, url: `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -56,9 +56,9 @@ export function getAddressesByAccount(coin, mode) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch(updateErrosStack('activeHandle')); dispatch(updateErrosStack('activeHandle'));
@ -74,9 +74,9 @@ export function getAddressesByAccount(coin, mode) {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
dispatch( dispatch(

32
react/src/actions/actions/iguanaHelpers.js

@ -18,10 +18,10 @@ export function getPassthruAgent(coin) {
export function iguanaHashHex(data, dispatch) { export function iguanaHashHex(data, dispatch) {
const payload = { const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': 'hash', agent: 'hash',
'method': 'hex', method: 'hex',
'message': data, message: data,
}; };
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
@ -32,12 +32,12 @@ export function iguanaHashHex(data, dispatch) {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'iguanaHashHex', function: 'iguanaHashHex',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`, url: `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -49,9 +49,9 @@ export function iguanaHashHex(data, dispatch) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -66,9 +66,9 @@ export function iguanaHashHex(data, dispatch) {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
resolve(json.hex); resolve(json.hex);

2
react/src/actions/actions/iguanaInstance.js

@ -53,7 +53,7 @@ export function startIguanaInstance(mode, coin) {
}, },
body: JSON.stringify({ body: JSON.stringify({
mode, mode,
coin coin,
}), }),
}) })
.catch(function(error) { .catch(function(error) {

10
react/src/actions/actions/jumblr.js

@ -13,7 +13,7 @@ function getNewAddress(coin) { // TODO: remove(?)
const payload = { const payload = {
mode: null, mode: null,
chain: coin, chain: coin,
cmd: 'getnewaddress' cmd: 'getnewaddress',
}; };
const _fetchConfig = { const _fetchConfig = {
@ -21,7 +21,7 @@ function getNewAddress(coin) { // TODO: remove(?)
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
body: JSON.stringify({ 'payload': payload }), body: JSON.stringify({ payload: payload }),
}; };
fetch( fetch(
@ -59,7 +59,7 @@ export function setJumblrAddress(coin, type, address) {
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
body: JSON.stringify({ 'payload': payload }), body: JSON.stringify({ payload: payload }),
}; };
fetch( fetch(
@ -97,7 +97,7 @@ function dumpPrivkey(coin, key) {
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
body: JSON.stringify({ 'payload': payload }), body: JSON.stringify({ payload: payload }),
}; };
fetch( fetch(
@ -139,7 +139,7 @@ export function importPrivkey(coin, key) {
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
body: JSON.stringify({ 'payload': payload }), body: JSON.stringify({ payload: payload }),
}; };
fetch( fetch(

30
react/src/actions/actions/logout.js

@ -32,21 +32,21 @@ export function logout() {
function walletLock() { function walletLock() {
const payload = { const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': 'bitcoinrpc', agent: 'bitcoinrpc',
'method': 'walletlock', method: 'walletlock',
}; };
return dispatch => { return dispatch => {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'walletLock', function: 'walletLock',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`, url: `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -58,9 +58,9 @@ function walletLock() {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -75,9 +75,9 @@ function walletLock() {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
dispatch(logoutState(json)); dispatch(logoutState(json));

48
react/src/actions/actions/nativeBalance.js

@ -15,20 +15,20 @@ export function getKMDBalanceTotal(coin) {
if (coin !== 'KMD' && if (coin !== 'KMD' &&
coin !== 'ZEC') { coin !== 'ZEC') {
payload = { payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': 'iguana', agent: 'iguana',
'method': 'passthru', method: 'passthru',
'asset': coin, asset: coin,
'function': 'z_gettotalbalance', function: 'z_gettotalbalance',
'hex': '3000', hex: '3000',
}; };
} else { } else {
payload = { payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': getPassthruAgent(coin), agent: getPassthruAgent(coin),
'method': 'passthru', method: 'passthru',
'function': 'z_gettotalbalance', function: 'z_gettotalbalance',
'hex': '3000', hex: '3000',
}; };
} }
@ -44,12 +44,12 @@ export function getKMDBalanceTotal(coin) {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'getKMDBalanceTotal', function: 'getKMDBalanceTotal',
'type': 'post', type: 'post',
'url': Config.cli.default ? `http://127.0.0.1:${Config.agamaPort}/shepherd/cli` : `http://127.0.0.1:${Config.iguanaCorePort}`, url: Config.cli.default ? `http://127.0.0.1:${Config.agamaPort}/shepherd/cli` : `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -64,7 +64,7 @@ export function getKMDBalanceTotal(coin) {
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
body: JSON.stringify({ 'payload': payload }), body: JSON.stringify({ payload: payload }),
}; };
} }
@ -76,9 +76,9 @@ export function getKMDBalanceTotal(coin) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -93,9 +93,9 @@ export function getKMDBalanceTotal(coin) {
.then(function(json) { // TODO: figure out why komodod spits out "parse error" .then(function(json) { // TODO: figure out why komodod spits out "parse error"
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
if (json && if (json &&

50
react/src/actions/actions/nativeNewAddress.js

@ -16,20 +16,20 @@ export function getNewKMDAddresses(coin, pubpriv, mode) {
if (getPassthruAgent(coin) === 'iguana') { if (getPassthruAgent(coin) === 'iguana') {
payload = { payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': getPassthruAgent(coin), agent: getPassthruAgent(coin),
'method': 'passthru', method: 'passthru',
'asset': coin, asset: coin,
'function': ajaxFunctionInput, function: ajaxFunctionInput,
'hex': '', hex: '',
}; };
} else { } else {
payload = { payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': coin, agent: coin,
'method': 'passthru', method: 'passthru',
'function': ajaxFunctionInput, function: ajaxFunctionInput,
'hex': '', hex: '',
}; };
} }
@ -37,12 +37,12 @@ export function getNewKMDAddresses(coin, pubpriv, mode) {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'getNewKMDAddresses', function: 'getNewKMDAddresses',
'type': 'post', type: 'post',
'url': Config.cli.default ? `http://127.0.0.1:${Config.agamaPort}/shepherd/cli` : `http://127.0.0.1:${Config.iguanaCorePort}`, url: Config.cli.default ? `http://127.0.0.1:${Config.agamaPort}/shepherd/cli` : `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -55,7 +55,7 @@ export function getNewKMDAddresses(coin, pubpriv, mode) {
payload = { payload = {
mode: null, mode: null,
chain: coin, chain: coin,
cmd: payload.function cmd: payload.function,
}; };
_fetchConfig = { _fetchConfig = {
@ -63,7 +63,7 @@ export function getNewKMDAddresses(coin, pubpriv, mode) {
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
body: JSON.stringify({ 'payload': payload }), body: JSON.stringify({ payload: payload }),
}; };
} }
@ -75,9 +75,9 @@ export function getNewKMDAddresses(coin, pubpriv, mode) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -95,9 +95,9 @@ export function getNewKMDAddresses(coin, pubpriv, mode) {
} }
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
dispatch( dispatch(

106
react/src/actions/actions/nativeSend.js

@ -30,32 +30,32 @@ export function sendNativeTx(coin, _payload) {
return iguanaHashHex(ajaxDataToHex, dispatch).then((hashHexJson) => { return iguanaHashHex(ajaxDataToHex, dispatch).then((hashHexJson) => {
if (getPassthruAgent(coin) === 'iguana') { if (getPassthruAgent(coin) === 'iguana') {
payload = { payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': getPassthruAgent(coin), agent: getPassthruAgent(coin),
'method': 'passthru', method: 'passthru',
'asset': coin, asset: coin,
'function': _apiMethod, function: _apiMethod,
'hex': hashHexJson, hex: hashHexJson,
}; };
} else { } else {
payload = { payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': getPassthruAgent(coin), agent: getPassthruAgent(coin),
'method': 'passthru', method: 'passthru',
'function': _apiMethod, function: _apiMethod,
'hex': hashHexJson, hex: hashHexJson,
}; };
} }
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'sendNativeTx', function: 'sendNativeTx',
'type': 'post', type: 'post',
'url': Config.cli.default ? `http://127.0.0.1:${Config.agamaPort}/shepherd/cli` : `http://127.0.0.1:${Config.iguanaCorePort}`, url: Config.cli.default ? `http://127.0.0.1:${Config.agamaPort}/shepherd/cli` : `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -90,7 +90,7 @@ export function sendNativeTx(coin, _payload) {
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
body: JSON.stringify({ 'payload': payload }), body: JSON.stringify({ payload: payload }),
}; };
} }
@ -102,9 +102,9 @@ export function sendNativeTx(coin, _payload) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -122,9 +122,9 @@ export function sendNativeTx(coin, _payload) {
.then(function(json) { .then(function(json) {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
@ -191,38 +191,38 @@ export function getKMDOPID(opid, coin) {
hashHexJson = ''; hashHexJson = '';
} }
let payload, let payload;
passthruAgent = getPassthruAgent(coin), let passthruAgent = getPassthruAgent(coin);
tmpIguanaRPCAuth = `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`; let tmpIguanaRPCAuth = `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`;
if (passthruAgent === 'iguana') { if (passthruAgent === 'iguana') {
payload = { payload = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': passthruAgent, agent: passthruAgent,
'method': 'passthru', method: 'passthru',
'asset': coin, asset: coin,
'function': 'z_getoperationstatus', function: 'z_getoperationstatus',
'hex': hashHexJson, hex: hashHexJson,
}; };
} else { } else {
payload = { payload = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': passthruAgent, agent: passthruAgent,
'method': 'passthru', method: 'passthru',
'function': 'z_getoperationstatus', function: 'z_getoperationstatus',
'hex': hashHexJson, hex: hashHexJson,
}; };
} }
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'getKMDOPID', function: 'getKMDOPID',
'type': 'post', type: 'post',
'url': Config.cli.default ? `http://127.0.0.1:${Config.agamaPort}/shepherd/cli` : `http://127.0.0.1:${Config.iguanaCorePort}`, url: Config.cli.default ? `http://127.0.0.1:${Config.agamaPort}/shepherd/cli` : `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -243,7 +243,7 @@ export function getKMDOPID(opid, coin) {
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
body: JSON.stringify({ 'payload': payload }), body: JSON.stringify({ payload: payload }),
}; };
} }
@ -255,9 +255,9 @@ export function getKMDOPID(opid, coin) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -275,9 +275,9 @@ export function getKMDOPID(opid, coin) {
} }
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
dispatch(getKMDOPIDState(json)); dispatch(getKMDOPIDState(json));
@ -298,7 +298,7 @@ export function sendToAddressPromise(coin, address, amount) {
'KMD interest claim request', 'KMD interest claim request',
'KMD interest claim request', 'KMD interest claim request',
true true
] ],
}; };
const _fetchConfig = { const _fetchConfig = {
@ -306,7 +306,7 @@ export function sendToAddressPromise(coin, address, amount) {
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
body: JSON.stringify({ 'payload': payload }), body: JSON.stringify({ payload: payload }),
}; };
fetch( fetch(

76
react/src/actions/actions/nativeSyncInfo.js

@ -18,12 +18,12 @@ export function getSyncInfoNativeKMD(skipDebug, json) {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'getSyncInfoNativeKMD', function: 'getSyncInfoNativeKMD',
'type': 'post', type: 'post',
'url': Config.iguanaLessMode ? 'http://kmd.explorer.supernet.org/api/status?q=getInfo' : `http://127.0.0.1:${Config.iguanaCorePort}/api/dex/getinfo?userpass=tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}&symbol=${coin}`, url: Config.iguanaLessMode ? 'http://kmd.explorer.supernet.org/api/status?q=getInfo' : `http://127.0.0.1:${Config.iguanaCorePort}/api/dex/getinfo?userpass=tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}&symbol=${coin}`,
'payload': '', payload: '',
'status': 'pending', status: 'pending',
})); }));
} }
@ -35,9 +35,9 @@ export function getSyncInfoNativeKMD(skipDebug, json) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
/*dispatch( /*dispatch(
@ -47,19 +47,19 @@ export function getSyncInfoNativeKMD(skipDebug, json) {
'error' 'error'
) )
);*/ );*/
console.warn('remote kmd node fetch failed', true); console.warn('remote kmd node fetch failed', true);
dispatch(getSyncInfoNativeState({ 'remoteKMDNode': null })); dispatch(getSyncInfoNativeState({ remoteKMDNode: null }));
}) })
.then(response => response.json()) .then(response => response.json())
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': Config.iguanaLessMode ? json.info : json, response: Config.iguanaLessMode ? json.info : json,
})); }));
} }
dispatch(getSyncInfoNativeState({ 'remoteKMDNode': Config.iguanaLessMode ? json.info : json })); dispatch(getSyncInfoNativeState({ remoteKMDNode: Config.iguanaLessMode ? json.info : json }));
}) })
.then(function() { .then(function() {
if (!skipDebug) { if (!skipDebug) {
@ -94,19 +94,19 @@ function getSyncInfoNativeState(json, coin, skipDebug) {
export function getSyncInfoNative(coin, skipDebug) { export function getSyncInfoNative(coin, skipDebug) {
let payload = { let payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': getPassthruAgent(coin), agent: getPassthruAgent(coin),
'method': 'passthru', method: 'passthru',
'asset': coin, asset: coin,
'function': 'getinfo', function: 'getinfo',
'hex': '', hex: '',
}; };
if (Config.cli.default) { if (Config.cli.default) {
payload = { payload = {
mode: null, mode: null,
chain: coin, chain: coin,
cmd: 'getinfo' cmd: 'getinfo',
}; };
} }
@ -114,12 +114,12 @@ export function getSyncInfoNative(coin, skipDebug) {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'getSyncInfo', function: 'getSyncInfo',
'type': 'post', type: 'post',
'url': Config.cli.default ? `http://127.0.0.1:${Config.agamaPort}/shepherd/cli` : `http://127.0.0.1:${Config.iguanaCorePort}`, url: Config.cli.default ? `http://127.0.0.1:${Config.agamaPort}/shepherd/cli` : `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
let _fetchConfig = { let _fetchConfig = {
@ -133,7 +133,7 @@ export function getSyncInfoNative(coin, skipDebug) {
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
body: JSON.stringify({ 'payload': payload }), body: JSON.stringify({ payload: payload }),
}; };
} }
@ -145,9 +145,9 @@ export function getSyncInfoNative(coin, skipDebug) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -166,7 +166,11 @@ export function getSyncInfoNative(coin, skipDebug) {
if (json === 'Work queue depth exceeded') { if (json === 'Work queue depth exceeded') {
dispatch( dispatch(
getSyncInfoNativeState( getSyncInfoNativeState(
{ result: 'daemon is busy', error: null, id: null }, {
result: 'daemon is busy',
error: null,
id: null
},
coin, coin,
skipDebug skipDebug
) )
@ -204,9 +208,9 @@ export function getSyncInfoNative(coin, skipDebug) {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
dispatch( dispatch(

50
react/src/actions/actions/nativeTxHistory.js

@ -14,20 +14,20 @@ export function getNativeTxHistory(coin) {
if (getPassthruAgent(coin) === 'iguana') { if (getPassthruAgent(coin) === 'iguana') {
payload = { payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': 'iguana', agent: 'iguana',
'method': 'passthru', method: 'passthru',
'asset': coin, asset: coin,
'function': 'listtransactions', function: 'listtransactions',
'hex': '', hex: '',
}; };
} else { } else {
payload = { payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': getPassthruAgent(coin), agent: getPassthruAgent(coin),
'method': 'passthru', method: 'passthru',
'function': 'listtransactions', function: 'listtransactions',
'hex': '', hex: '',
}; };
} }
@ -35,12 +35,12 @@ export function getNativeTxHistory(coin) {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'getNativeTxHistory', function: 'getNativeTxHistory',
'type': 'post', type: 'post',
'url': Config.cli.default ? `http://127.0.0.1:${Config.agamaPort}/shepherd/cli` : `http://127.0.0.1:${Config.iguanaCorePort}`, url: Config.cli.default ? `http://127.0.0.1:${Config.agamaPort}/shepherd/cli` : `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -53,7 +53,7 @@ export function getNativeTxHistory(coin) {
payload = { payload = {
mode: null, mode: null,
chain: coin, chain: coin,
cmd: 'listtransactions' cmd: 'listtransactions',
}; };
_fetchConfig = { _fetchConfig = {
@ -61,7 +61,7 @@ export function getNativeTxHistory(coin) {
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
body: JSON.stringify({ 'payload': payload }), body: JSON.stringify({ payload: payload }),
}; };
} }
@ -73,9 +73,9 @@ export function getNativeTxHistory(coin) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -90,9 +90,9 @@ export function getNativeTxHistory(coin) {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
dispatch(getNativeTxHistoryState(json)); dispatch(getNativeTxHistoryState(json));

72
react/src/actions/actions/notary.js

@ -14,23 +14,23 @@ function initNotaryNodesConSequence(nodes) {
return dispatch => { return dispatch => {
Promise.all(nodes.map((node, index) => { Promise.all(nodes.map((node, index) => {
const payload = { const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': 'dex', agent: 'dex',
'method': 'getinfo', method: 'getinfo',
'symbol': node, symbol: node,
'timeout': 10000 timeout: 10000,
}; };
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': `initNotaryNodesConSequence+${node}`, function: `initNotaryNodesConSequence+${node}`,
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`, url: `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -41,9 +41,9 @@ function initNotaryNodesConSequence(nodes) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -58,9 +58,9 @@ function initNotaryNodesConSequence(nodes) {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
dispatch( dispatch(
@ -119,9 +119,9 @@ function connectAllNotaryNodes(json, dispatch) {
export function connectNotaries() { export function connectNotaries() {
const payload = { const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': 'dpow', agent: 'dpow',
'method': 'notarychains', method: 'notarychains',
}; };
return dispatch => { return dispatch => {
@ -169,22 +169,22 @@ function getDexNotariesState(json) {
export function getDexNotaries(coin) { export function getDexNotaries(coin) {
const payload = { const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': 'dex', agent: 'dex',
'method': 'getnotaries', method: 'getnotaries',
'symbol': coin, symbol: coin,
}; };
return dispatch => { return dispatch => {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'getDexNotaries', function: 'getDexNotaries',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${Config.useBasiliskInstance ? Config.iguanaCorePort + 1 : Config.iguanaCorePort}`, url: `http://127.0.0.1:${Config.useBasiliskInstance ? Config.iguanaCorePort + 1 : Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
return fetch(`http://127.0.0.1:${Config.useBasiliskInstance ? Config.iguanaCorePort + 1 : Config.iguanaCorePort}`, { return fetch(`http://127.0.0.1:${Config.useBasiliskInstance ? Config.iguanaCorePort + 1 : Config.iguanaCorePort}`, {
@ -195,9 +195,9 @@ export function getDexNotaries(coin) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -212,9 +212,9 @@ export function getDexNotaries(coin) {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
dispatch(getDexNotariesState(json)); dispatch(getDexNotariesState(json));

146
react/src/actions/actions/sendFullBasilisk.js

@ -12,10 +12,10 @@ import {
export function sendToAddress(coin, _payload) { export function sendToAddress(coin, _payload) {
const payload = { const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'coin': coin, coin: coin,
'method': 'sendtoaddress', method: 'sendtoaddress',
'params': [ params: [
_payload.sendTo, _payload.sendTo,
_payload.amount, _payload.amount,
'EasyDEX', 'EasyDEX',
@ -27,12 +27,12 @@ export function sendToAddress(coin, _payload) {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'sendToAddress', function: 'sendToAddress',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`, url: `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -44,9 +44,9 @@ export function sendToAddress(coin, _payload) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -61,9 +61,9 @@ export function sendToAddress(coin, _payload) {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
dispatch(sendToAddressState(json, dispatch)); dispatch(sendToAddressState(json, dispatch));
@ -73,10 +73,10 @@ export function sendToAddress(coin, _payload) {
export function sendFromAddress(coin, _payload) { export function sendFromAddress(coin, _payload) {
const payload = { const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'coin': coin, coin: coin,
'method': 'sendfrom', method: 'sendfrom',
'params': [ params: [
_payload.sendFrom, _payload.sendFrom,
_payload.sendTo, _payload.sendTo,
_payload.amount, _payload.amount,
@ -89,12 +89,12 @@ export function sendFromAddress(coin, _payload) {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'sendFromAddress', function: 'sendFromAddress',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`, url: `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -106,9 +106,9 @@ export function sendFromAddress(coin, _payload) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -123,9 +123,9 @@ export function sendFromAddress(coin, _payload) {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
dispatch(sendToAddressState(json, dispatch)); dispatch(sendToAddressState(json, dispatch));
@ -135,31 +135,31 @@ export function sendFromAddress(coin, _payload) {
export function iguanaUTXORawTX(data, dispatch) { export function iguanaUTXORawTX(data, dispatch) {
const payload = { const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'symbol': data.coin, symbol: data.coin,
'agent': 'basilisk', agent: 'basilisk',
'method': 'utxorawtx', method: 'utxorawtx',
'vals': { vals: {
'timelock': 0, timelock: 0,
'changeaddr': data.sendfrom, changeaddr: data.sendfrom,
'destaddr': data.sendtoaddr, destaddr: data.sendtoaddr,
'txfee': data.txfee, txfee: data.txfee,
'amount': data.amount, amount: data.amount,
'sendflag': data.sendsig sendflag: data.sendsig,
}, },
'utxos': data.utxos, utxos: data.utxos,
}; };
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'iguanaUTXORawTX', function: 'iguanaUTXORawTX',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`, url: `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -171,9 +171,9 @@ export function iguanaUTXORawTX(data, dispatch) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch => dispatch(logGuiHttp({ dispatch => dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -188,9 +188,9 @@ export function iguanaUTXORawTX(data, dispatch) {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
resolve(json); resolve(json);
@ -200,23 +200,23 @@ export function iguanaUTXORawTX(data, dispatch) {
export function dexSendRawTX(data, dispatch) { export function dexSendRawTX(data, dispatch) {
const payload = { const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': 'dex', agent: 'dex',
'method': 'sendrawtransaction', method: 'sendrawtransaction',
'signedtx': data.signedtx, signedtx: data.signedtx,
'symbol': data.coin symbol: data.coin,
}; };
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'dexSendRawTX', function: 'dexSendRawTX',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`, url: `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -228,9 +228,9 @@ export function dexSendRawTX(data, dispatch) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -249,9 +249,9 @@ export function dexSendRawTX(data, dispatch) {
.then(function(json) { .then(function(json) {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
resolve(json); resolve(json);

108
react/src/actions/actions/settings.js

@ -91,9 +91,9 @@ function parseImportPrivKeyResponse(json, dispatch) {
export function importPrivKey(wifKey) { export function importPrivKey(wifKey) {
const payload = { const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'method': 'importprivkey', method: 'importprivkey',
'params': [ params: [
wifKey, wifKey,
'imported' 'imported'
], ],
@ -103,12 +103,12 @@ export function importPrivKey(wifKey) {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'importPrivKey', function: 'importPrivKey',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`, url: `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -120,9 +120,9 @@ export function importPrivKey(wifKey) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -137,9 +137,9 @@ export function importPrivKey(wifKey) {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
dispatch( dispatch(
@ -151,7 +151,7 @@ export function importPrivKey(wifKey) {
}) })
.catch(function(ex) { .catch(function(ex) {
dispatch(parseImportPrivKeyResponse({ dispatch(parseImportPrivKeyResponse({
'error': 'privkey already in wallet' error: 'privkey already in wallet',
}, dispatch)); }, dispatch));
console.log('parsing failed', ex); console.log('parsing failed', ex);
}) })
@ -169,8 +169,8 @@ function getDebugLogState(json) {
export function getDebugLog(target, linesCount, acName) { export function getDebugLog(target, linesCount, acName) {
const payload = { const payload = {
'herdname': target, herdname: target,
'lastLines': linesCount lastLines: linesCount,
}; };
if (acName) { if (acName) {
@ -202,22 +202,22 @@ export function getDebugLog(target, linesCount, acName) {
export function getPeersList(coin) { export function getPeersList(coin) {
const payload = { const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': 'SuperNET', agent: 'SuperNET',
'method': 'getpeers', method: 'getpeers',
'activecoin': coin, activecoin: coin,
}; };
return dispatch => { return dispatch => {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'getPeersList', function: 'getPeersList',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`, url: `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -229,9 +229,9 @@ export function getPeersList(coin) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -246,9 +246,9 @@ export function getPeersList(coin) {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
dispatch(getPeersListState(json, dispatch)); dispatch(getPeersListState(json, dispatch));
@ -323,23 +323,23 @@ function addPeerNodeState(json, dispatch) {
export function addPeerNode(coin, ip) { export function addPeerNode(coin, ip) {
const payload = { const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': 'iguana', agent: 'iguana',
'method': 'addnode', method: 'addnode',
'activecoin': coin, activecoin: coin,
'ipaddr': ip, ipaddr: ip,
}; };
return dispatch => { return dispatch => {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'addPeerNode', function: 'addPeerNode',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`, url: `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -351,9 +351,9 @@ export function addPeerNode(coin, ip) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -368,9 +368,9 @@ export function addPeerNode(coin, ip) {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
dispatch(addPeerNodeState(json, dispatch)); dispatch(addPeerNodeState(json, dispatch));
@ -385,7 +385,7 @@ export function saveAppConfig(_payload) {
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
body: JSON.stringify({ 'payload': _payload }), body: JSON.stringify({ payload: _payload }),
}) })
.catch(function(error) { .catch(function(error) {
console.log(error); console.log(error);
@ -402,7 +402,7 @@ export function saveAppConfig(_payload) {
dispatch(getAppConfig()); dispatch(getAppConfig());
dispatch( dispatch(
triggerToaster( triggerToaster(
'Settings are saved', translate('TOASTR.SETTINGS_SAVED'),
translate('TOASTR.SETTINGS_NOTIFICATION'), translate('TOASTR.SETTINGS_NOTIFICATION'),
'success' 'success'
) )
@ -464,7 +464,7 @@ export function resetAppConfig() {
dispatch(getAppConfig()); dispatch(getAppConfig());
dispatch( dispatch(
triggerToaster( triggerToaster(
'Settings are reset to default', translate('TOASTR.SETTINGS_RESET'),
translate('TOASTR.SETTINGS_NOTIFICATION'), translate('TOASTR.SETTINGS_NOTIFICATION'),
'success' 'success'
) )

32
react/src/actions/actions/syncInfo.js

@ -23,22 +23,22 @@ function getSyncInfoState(json) {
export function getSyncInfo(coin) { export function getSyncInfo(coin) {
const payload = { const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'coin': coin, coin: coin,
'agent': 'bitcoinrpc', agent: 'bitcoinrpc',
'method': 'getinfo', method: 'getinfo',
}; };
return dispatch => { return dispatch => {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'getSyncInfo', function: 'getSyncInfo',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`, url: `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -50,9 +50,9 @@ export function getSyncInfo(coin) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -71,9 +71,9 @@ export function getSyncInfo(coin) {
.then(function(json) { .then(function(json) {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
if (json.indexOf('coin is busy processing') === -1) { if (json.indexOf('coin is busy processing') === -1) {

132
react/src/actions/actions/walletAuth.js

@ -16,22 +16,22 @@ import {
export function encryptWallet(_passphrase, cb, coin) { export function encryptWallet(_passphrase, cb, coin) {
const payload = { const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': 'bitcoinrpc', agent: 'bitcoinrpc',
'method': 'encryptwallet', method: 'encryptwallet',
'passphrase': _passphrase, passphrase: _passphrase,
}; };
return dispatch => { return dispatch => {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'encryptWallet', function: 'encryptWallet',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`, url: `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -43,9 +43,9 @@ export function encryptWallet(_passphrase, cb, coin) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -61,9 +61,9 @@ export function encryptWallet(_passphrase, cb, coin) {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
dispatch( dispatch(
@ -79,23 +79,23 @@ export function encryptWallet(_passphrase, cb, coin) {
export function walletPassphrase(_passphrase) { export function walletPassphrase(_passphrase) {
const payload = { const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': 'bitcoinrpc', agent: 'bitcoinrpc',
'method': 'walletpassphrase', method: 'walletpassphrase',
'password': _passphrase, password: _passphrase,
'timeout': '300000', timeout: '300000',
}; };
return dispatch => { return dispatch => {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'walletpassphrase', function: 'walletpassphrase',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`, url: `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload, payload: payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -107,9 +107,9 @@ export function walletPassphrase(_passphrase) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -123,9 +123,9 @@ export function walletPassphrase(_passphrase) {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
}) })
@ -134,24 +134,24 @@ export function walletPassphrase(_passphrase) {
export function iguanaWalletPassphrase(_passphrase) { export function iguanaWalletPassphrase(_passphrase) {
const _payload = { const _payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'handle': '', handle: '',
'password': _passphrase, password: _passphrase,
'timeout': '2592000', timeout: '2592000',
'agent': 'bitcoinrpc', agent: 'bitcoinrpc',
'method': 'walletpassphrase', method: 'walletpassphrase',
}; };
return dispatch => { return dispatch => {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'iguanaWalletPassphrase', function: 'iguanaWalletPassphrase',
'type': 'post', type: 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`, url: `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': _payload, payload: _payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -163,9 +163,9 @@ export function iguanaWalletPassphrase(_passphrase) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch( dispatch(
@ -180,9 +180,9 @@ export function iguanaWalletPassphrase(_passphrase) {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
dispatch(iguanaWalletPassphraseState(json, dispatch)); dispatch(iguanaWalletPassphraseState(json, dispatch));
@ -192,21 +192,21 @@ export function iguanaWalletPassphrase(_passphrase) {
export function iguanaActiveHandle(getMainAddress) { export function iguanaActiveHandle(getMainAddress) {
const _payload = { const _payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`, userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': 'SuperNET', agent: 'SuperNET',
'method': 'activehandle', method: 'activehandle',
}; };
return dispatch => { return dispatch => {
const _timestamp = Date.now(); const _timestamp = Date.now();
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'function': 'iguanaActiveHandle', function: 'iguanaActiveHandle',
'type': 'post', type: 'post',
'url': Config.iguanaLessMode ? `http://127.0.0.1:${Config.agamaPort}/shepherd/SuperNET/activehandle` : `http://127.0.0.1:${Config.iguanaCorePort}`, url: Config.iguanaLessMode ? `http://127.0.0.1:${Config.agamaPort}/shepherd/SuperNET/activehandle` : `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': _payload, payload: _payload,
'status': 'pending', status: 'pending',
})); }));
} }
@ -232,9 +232,9 @@ export function iguanaActiveHandle(getMainAddress) {
console.log(error); console.log(error);
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'error', status: 'error',
'response': error, response: error,
})); }));
} }
dispatch(updateErrosStack('activeHandle')); dispatch(updateErrosStack('activeHandle'));
@ -250,9 +250,9 @@ export function iguanaActiveHandle(getMainAddress) {
.then(json => { .then(json => {
if (Config.debug) { if (Config.debug) {
dispatch(logGuiHttp({ dispatch(logGuiHttp({
'timestamp': _timestamp, timestamp: _timestamp,
'status': 'success', status: 'success',
'response': json, response: json,
})); }));
} }
if (!Config.iguanaLessMode && if (!Config.iguanaLessMode &&

3
react/src/components/addcoin/addcoin.js

@ -192,7 +192,7 @@ class AddCoin extends React.Component {
}; };
this.setState(Object.assign({}, this.state, { this.setState(Object.assign({}, this.state, {
coins: _coins coins: _coins,
})); }));
} }
@ -346,6 +346,7 @@ class AddCoin extends React.Component {
'error' 'error'
) )
); );
return true; return true;
} }
} }

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

@ -162,10 +162,10 @@ const CoinSelectorsRender = function(item, coin, i) {
name="daemonParam" name="daemonParam"
onChange={ (event) => this.updateDaemonParam(event, i) } onChange={ (event) => this.updateDaemonParam(event, i) }
autoFocus> autoFocus>
<option>Daemon param: none</option> <option>{ translate('INDEX.DAEMON_PARAM') }: none</option>
<option value="silent">Daemon param: background process</option> <option value="silent">{ translate('INDEX.DAEMON_PARAM') }: { translate('INDEX.BACKGROUND_PROCESS') }</option>
<option value="reindex">Daemon param: reindex</option> <option value="reindex">{ translate('INDEX.DAEMON_PARAM') }: { translate('INDEX.REINDEX') }</option>
<option value="rescan">Daemon param: rescan</option> <option value="rescan">{ translate('INDEX.DAEMON_PARAM') }: { translate('INDEX.RESCAN') }</option>
</select> </select>
</div> </div>
</div> </div>
@ -180,7 +180,7 @@ const CoinSelectorsRender = function(item, coin, i) {
className="slider" className="slider"
onClick={ () => this.toggleSyncOnlyMode(i) }></div> onClick={ () => this.toggleSyncOnlyMode(i) }></div>
</label> </label>
<div <div
className="toggle-label" className="toggle-label"
onClick={ () => this.toggleSyncOnlyMode(i) }> onClick={ () => this.toggleSyncOnlyMode(i) }>
{ translate('ADD_COIN.SYNC_ONLY') } { translate('ADD_COIN.SYNC_ONLY') }

104
react/src/components/addcoin/payload.js

@ -145,33 +145,33 @@ export function startCrypto(confpath, coin, mode) {
tmpPendValue = parseInt(tmpPendValue) * 4; tmpPendValue = parseInt(tmpPendValue) * 4;
} }
AddCoinData.BTC = {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"prefetchlag":5,"poll":1,"active":1,"agent":"iguana","method":"addcoin","newcoin":"BTC","services":128,"maxpeers":512,"portp2p":8333}; AddCoinData.BTC = {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'prefetchlag':5,'poll':1,'active':1,'agent':'iguana','method':'addcoin','newcoin':'BTC','services':128,'maxpeers':512,'portp2p':8333};
AddCoinData.BTCD = {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"prefetchlag":-1,"poll":50,"active":1,"agent":"iguana","method":"addcoin","newcoin":"BTCD","startpend":tmpPendValue,"endpend":tmpPendValue,"services":129,"maxpeers":64,"portp2p":14631,"rpc":14632}; AddCoinData.BTCD = {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'prefetchlag':-1,'poll':50,'active':1,'agent':'iguana','method':'addcoin','newcoin':'BTCD','startpend':tmpPendValue,'endpend':tmpPendValue,'services':129,'maxpeers':64,'portp2p':14631,'rpc':14632};
AddCoinData.LTC = {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"prefetchlag":-1,"poll":10,"active":1,"agent":"iguana","method":"addcoin","startpend":tmpPendValue,"endpend":tmpPendValue,"services":129,"maxpeers":256,"newcoin":"LTC","name":"Litecoin","hasheaders":1,"useaddmultisig":0,"netmagic":"fbc0b6db","p2p":9333,"rpc":9332,"pubval":48,"p2shval":5,"wifval":176,"txfee_satoshis":"100000","isPoS":0,"minoutput":10000,"minconfirms":2,"genesishash":"12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2","genesis":{"hashalgo":"scrypt","version":1,"timestamp":1317972665,"nBits":"1e0ffff0","nonce":2084524493,"merkle_root":"97ddfbbae6be97fd6cdf3e7ca13232a3afff2353e29badfab7f73011edd4ced9"},"alertpubkey":"040184710fa689ad5023690c80f3a49c8f13f8d45b8c857fbcbc8bc4a8e4d3eb4b10f4d4604fa08dce601aaf0f470216fe1b51850b4acf21b179c45070ac7b03a9","protover":70002}; AddCoinData.LTC = {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'prefetchlag':-1,'poll':10,'active':1,'agent':'iguana','method':'addcoin','startpend':tmpPendValue,'endpend':tmpPendValue,'services':129,'maxpeers':256,'newcoin':'LTC','name':'Litecoin','hasheaders':1,'useaddmultisig':0,'netmagic':'fbc0b6db','p2p':9333,'rpc':9332,'pubval':48,'p2shval':5,'wifval':176,'txfee_satoshis':'100000','isPoS':0,'minoutput':10000,'minconfirms':2,'genesishash':'12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2','genesis':{'hashalgo':'scrypt','version':1,'timestamp':1317972665,'nBits':'1e0ffff0','nonce':2084524493,'merkle_root':'97ddfbbae6be97fd6cdf3e7ca13232a3afff2353e29badfab7f73011edd4ced9'},'alertpubkey':'040184710fa689ad5023690c80f3a49c8f13f8d45b8c857fbcbc8bc4a8e4d3eb4b10f4d4604fa08dce601aaf0f470216fe1b51850b4acf21b179c45070ac7b03a9','protover':70002};
AddCoinData.DOGE = {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"services":129,"auxpow":1,"prefetchlag":-1,"poll":10,"active":1,"agent":"iguana","method":"addcoin","maxpeers":256,"newcoin":"DOGE","name":"Dogecoin","netmagic":"C0C0C0C0","p2p":22556,"rpc":22555,"pubval":30,"p2shval":5,"wifval":128,"txfee_satoshis":"100000000","minconfirms":2,"genesishash":"1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691","genesis":{"hashalgo": "scrypt","version":1,"timestamp":1386325540,"nBits":"1e0ffff0","nonce":99943,"merkle_root":"5b2a3f53f605d62c53e62932dac6925e3d74afa5a4b459745c36d42d0ed26a69"},"alertpubkey":"04d4da7a5dae4db797d9b0644d57a5cd50e05a70f36091cd62e2fc41c98ded06340be5a43a35e185690cd9cde5d72da8f6d065b499b06f51dcfba14aad859f443a"}; AddCoinData.DOGE = {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'services':129,'auxpow':1,'prefetchlag':-1,'poll':10,'active':1,'agent':'iguana','method':'addcoin','maxpeers':256,'newcoin':'DOGE','name':'Dogecoin','netmagic':'C0C0C0C0','p2p':22556,'rpc':22555,'pubval':30,'p2shval':5,'wifval':128,'txfee_satoshis':'100000000','minconfirms':2,'genesishash':'1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691','genesis':{'hashalgo': 'scrypt','version':1,'timestamp':1386325540,'nBits':'1e0ffff0','nonce':99943,'merkle_root':'5b2a3f53f605d62c53e62932dac6925e3d74afa5a4b459745c36d42d0ed26a69'},'alertpubkey':'04d4da7a5dae4db797d9b0644d57a5cd50e05a70f36091cd62e2fc41c98ded06340be5a43a35e185690cd9cde5d72da8f6d065b499b06f51dcfba14aad859f443a'};
AddCoinData.DGB = {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"services":129,"prefetchlag":-1,"poll":10,"active":1,"agent":"iguana","method":"addcoin","maxpeers":256,"newcoin":"DGB","name":"Digibyte","netmagic":"FAC3B6DA","p2p":12024,"rpc":14022,"pubval":30,"p2shval":5,"wifval":128,"txfee_satoshis":"10000","minconfirms":2,"genesishash":"7497ea1b465eb39f1c8f507bc877078fe016d6fcb6dfad3a64c98dcc6e1e8496","genesis":{"version":1,"timestamp":1389388394,"nBits":"1e0ffff0","nonce":2447652,"merkle_root":"72ddd9496b004221ed0557358846d9248ecd4c440ebd28ed901efc18757d0fad"},"alertpubkey":"04F04441C4757F356290A37C313C3772C5BC5003E898EB2E0CF365795543A7BF690C8BBBFA32EE3A3325477CE2000B7D0453EFBB203329D0F9DF34D5927D022BC9"}; AddCoinData.DGB = {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'services':129,'prefetchlag':-1,'poll':10,'active':1,'agent':'iguana','method':'addcoin','maxpeers':256,'newcoin':'DGB','name':'Digibyte','netmagic':'FAC3B6DA','p2p':12024,'rpc':14022,'pubval':30,'p2shval':5,'wifval':128,'txfee_satoshis':'10000','minconfirms':2,'genesishash':'7497ea1b465eb39f1c8f507bc877078fe016d6fcb6dfad3a64c98dcc6e1e8496','genesis':{'version':1,'timestamp':1389388394,'nBits':'1e0ffff0','nonce':2447652,'merkle_root':'72ddd9496b004221ed0557358846d9248ecd4c440ebd28ed901efc18757d0fad'},'alertpubkey':'04F04441C4757F356290A37C313C3772C5BC5003E898EB2E0CF365795543A7BF690C8BBBFA32EE3A3325477CE2000B7D0453EFBB203329D0F9DF34D5927D022BC9'};
AddCoinData.MZC = {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"services":129,"prefetchlag":-1,"poll":10,"active":1,"agent":"iguana","method":"addcoin","maxpeers":256,"newcoin":"MZC","name":"MazaCoin","netmagic":"f8b503df","p2p":12835,"rpc":12832,"pubval":50,"p2shval":9,"wifval":224,"txfee_satoshis":"0","minconfirms":2,"genesishash":"00000c7c73d8ce604178dae13f0fc6ec0be3275614366d44b1b4b5c6e238c60c","genesis":{"version":1,"timestamp":1390747675,"nBits":"1e0ffff0","nonce":2091390249,"merkle_root":"62d496378e5834989dd9594cfc168dbb76f84a39bbda18286cddc7d1d1589f4f"},"alertpubkey":"04f09702847840aaf195de8442ebecedf5b095cdbb9bc716bda9110971b28a49e0ead8564ff0db22209e0374782c093bb899692d524e9d6a6956e7c5ecbcd68284"}; AddCoinData.MZC = {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'services':129,'prefetchlag':-1,'poll':10,'active':1,'agent':'iguana','method':'addcoin','maxpeers':256,'newcoin':'MZC','name':'MazaCoin','netmagic':'f8b503df','p2p':12835,'rpc':12832,'pubval':50,'p2shval':9,'wifval':224,'txfee_satoshis':'0','minconfirms':2,'genesishash':'00000c7c73d8ce604178dae13f0fc6ec0be3275614366d44b1b4b5c6e238c60c','genesis':{'version':1,'timestamp':1390747675,'nBits':'1e0ffff0','nonce':2091390249,'merkle_root':'62d496378e5834989dd9594cfc168dbb76f84a39bbda18286cddc7d1d1589f4f'},'alertpubkey':'04f09702847840aaf195de8442ebecedf5b095cdbb9bc716bda9110971b28a49e0ead8564ff0db22209e0374782c093bb899692d524e9d6a6956e7c5ecbcd68284'};
AddCoinData.SYS = {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"prefetchlag":-1,"poll":10,"active":1,"agent":"iguana","method":"addcoin","startpend":tmpPendValue,"endpend":tmpPendValue,"services":129,"maxpeers":256,"newcoin":"SYS","name":"SysCoin","hasheaders":0,"useaddmultisig":0,"netmagic":"f9beb4d9","p2p":8369,"rpc":8370,"pubval":0,"p2shval":5,"wifval":128,"txfee_satoshis":"100000","isPoS":0,"minoutput":10000,"minconfirms":2,"genesishash":"0000072d66e51ab87de265765cc8bdd2d229a4307c672a1b3d5af692519cf765","genesis":{"version":1,"timestamp":1450473723,"nBits":"1e0ffff0","nonce":5258726,"merkle_root":"5215c5a2af9b63f2550b635eb2b354bb13645fd8fa31275394eb161944303065"},"protover":70012,"auxpow":1}; AddCoinData.SYS = {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'prefetchlag':-1,'poll':10,'active':1,'agent':'iguana','method':'addcoin','startpend':tmpPendValue,'endpend':tmpPendValue,'services':129,'maxpeers':256,'newcoin':'SYS','name':'SysCoin','hasheaders':0,'useaddmultisig':0,'netmagic':'f9beb4d9','p2p':8369,'rpc':8370,'pubval':0,'p2shval':5,'wifval':128,'txfee_satoshis':'100000','isPoS':0,'minoutput':10000,'minconfirms':2,'genesishash':'0000072d66e51ab87de265765cc8bdd2d229a4307c672a1b3d5af692519cf765','genesis':{'version':1,'timestamp':1450473723,'nBits':'1e0ffff0','nonce':5258726,'merkle_root':'5215c5a2af9b63f2550b635eb2b354bb13645fd8fa31275394eb161944303065'},'protover':70012,'auxpow':1};
AddCoinData.UNO = {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"services":129,"auxpow":1,"prefetchlag":-1,"poll":10,"active":1,"agent":"iguana","method":"addcoin","maxpeers":256,"newcoin":"UNO","name":"Unobtanium","netmagic":"03d5b503","p2p":65534,"rpc":65535,"pubval":130,"p2shval":30,"wifval":224,"txfee_satoshis":"1000000","minconfirms":2,"genesishash":"000004c2fc5fffb810dccc197d603690099a68305232e552d96ccbe8e2c52b75","genesis":{"version":1,"timestamp":1375548986,"nBits":"1e0fffff","nonce":1211565,"merkle_root":"36a192e90f70131a884fe541a1e8a5643a28ba4cb24cbb2924bd0ee483f7f484"},"alertpubkey":"04fd68acb6a895f3462d91b43eef0da845f0d531958a858554feab3ac330562bf76910700b3f7c29ee273ddc4da2bb5b953858f6958a50e8831eb43ee30c32f21d"}; AddCoinData.UNO = {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'services':129,'auxpow':1,'prefetchlag':-1,'poll':10,'active':1,'agent':'iguana','method':'addcoin','maxpeers':256,'newcoin':'UNO','name':'Unobtanium','netmagic':'03d5b503','p2p':65534,'rpc':65535,'pubval':130,'p2shval':30,'wifval':224,'txfee_satoshis':'1000000','minconfirms':2,'genesishash':'000004c2fc5fffb810dccc197d603690099a68305232e552d96ccbe8e2c52b75','genesis':{'version':1,'timestamp':1375548986,'nBits':'1e0fffff','nonce':1211565,'merkle_root':'36a192e90f70131a884fe541a1e8a5643a28ba4cb24cbb2924bd0ee483f7f484'},'alertpubkey':'04fd68acb6a895f3462d91b43eef0da845f0d531958a858554feab3ac330562bf76910700b3f7c29ee273ddc4da2bb5b953858f6958a50e8831eb43ee30c32f21d'};
AddCoinData.BTM = {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"prefetchlag":-1,"poll":10,"active":1,"agent":"iguana","method":"addcoin","maxpeers":256,"newcoin":"BTM","name":"Bitmark","netmagic":"f9beb4d9","p2p":9265,"rpc":9266,"pubval":85,"p2shval":5,"wifval":213,"txfee_satoshis":"0","minconfirms":2,"genesishash":"c1fb746e87e89ae75bdec2ef0639a1f6786744639ce3d0ece1dcf979b79137cb","genesis":{"hashalgo":"scrypt","version":1,"timestamp":1405274442,"nBits":"1d00ffff","nonce":14385103,"merkle_root":"d4715adf41222fae3d4bf41af30c675bc27228233d0f3cfd4ae0ae1d3e760ba8"},"alertpubkey":"04bf5a75ff0f823840ef512b08add20bb4275ff6e097f2830ad28645e28cb5ea4dc2cfd0972b94019ad46f331b45ef4ba679f2e6c87fd19c864365fadb4f8d2269"}; AddCoinData.BTM = {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'prefetchlag':-1,'poll':10,'active':1,'agent':'iguana','method':'addcoin','maxpeers':256,'newcoin':'BTM','name':'Bitmark','netmagic':'f9beb4d9','p2p':9265,'rpc':9266,'pubval':85,'p2shval':5,'wifval':213,'txfee_satoshis':'0','minconfirms':2,'genesishash':'c1fb746e87e89ae75bdec2ef0639a1f6786744639ce3d0ece1dcf979b79137cb','genesis':{'hashalgo':'scrypt','version':1,'timestamp':1405274442,'nBits':'1d00ffff','nonce':14385103,'merkle_root':'d4715adf41222fae3d4bf41af30c675bc27228233d0f3cfd4ae0ae1d3e760ba8'},'alertpubkey':'04bf5a75ff0f823840ef512b08add20bb4275ff6e097f2830ad28645e28cb5ea4dc2cfd0972b94019ad46f331b45ef4ba679f2e6c87fd19c864365fadb4f8d2269'};
AddCoinData.CARB = {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"prefetchlag":-1,"poll":10,"active":1,"agent":"iguana","method":"addcoin","maxpeers":256,"newcoin":"CARB","name":"Carboncoin","netmagic":"abccbbdf","p2p":9350,"rpc":9351,"pubval":47,"p2shval":5,"wifval":175,"txfee_satoshis":"0","minconfirms":2,"genesishash":"a94f1aae8c409a0bd1e53cbca92d7e506b61c51d955cf56f76da501718d48d6c","genesis":{"hashalgo":"scrypt","version":1,"timestamp":1389199888,"nBits":"1e0ffff0","nonce":605268,"merkle_root":"074bbb9d355731bfa8f67130e2179db7518d1387ad52e55309d4debe7d4e6383"},"alertpubkey":"046d6918a7c0c053aa942dbb8861499be4bd915c8bfb6a2b77b3787e207097cc2734b9321226ff107c1a95dae98570a66baec66e350d78ceba091b54411654d33f"}; AddCoinData.CARB = {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'prefetchlag':-1,'poll':10,'active':1,'agent':'iguana','method':'addcoin','maxpeers':256,'newcoin':'CARB','name':'Carboncoin','netmagic':'abccbbdf','p2p':9350,'rpc':9351,'pubval':47,'p2shval':5,'wifval':175,'txfee_satoshis':'0','minconfirms':2,'genesishash':'a94f1aae8c409a0bd1e53cbca92d7e506b61c51d955cf56f76da501718d48d6c','genesis':{'hashalgo':'scrypt','version':1,'timestamp':1389199888,'nBits':'1e0ffff0','nonce':605268,'merkle_root':'074bbb9d355731bfa8f67130e2179db7518d1387ad52e55309d4debe7d4e6383'},'alertpubkey':'046d6918a7c0c053aa942dbb8861499be4bd915c8bfb6a2b77b3787e207097cc2734b9321226ff107c1a95dae98570a66baec66e350d78ceba091b54411654d33f'};
AddCoinData.ANC = {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"prefetchlag":-1,"poll":10,"active":1,"agent":"iguana","method":"addcoin","maxpeers":256,"newcoin":"ANC","name":"AnonCoin","netmagic":"facabada","p2p":9377,"rpc":28332,"pubval":23,"p2shval":5,"wifval":151,"txfee_satoshis":"2000000","minconfirms":2,"genesishash":"00000be19c5a519257aa921349037d55548af7cabf112741eb905a26bb73e468","genesis":{"version":1,"timestamp":1370190760,"nBits":"1e0ffff0","nonce":347089008,"merkle_root":"7ce7004d764515f9b43cb9f07547c8e2e00d94c9348b3da33c8681d350f2c736"},"alertpubkey":"04c6db35c11724e526f6725cc5bd5293b4bc9382397856e1bcef7111fb44ce357fd12442b34c496d937a348c1dca1e36ae0c0e128905eb3d301433887e8f0b4536"}; AddCoinData.ANC = {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'prefetchlag':-1,'poll':10,'active':1,'agent':'iguana','method':'addcoin','maxpeers':256,'newcoin':'ANC','name':'AnonCoin','netmagic':'facabada','p2p':9377,'rpc':28332,'pubval':23,'p2shval':5,'wifval':151,'txfee_satoshis':'2000000','minconfirms':2,'genesishash':'00000be19c5a519257aa921349037d55548af7cabf112741eb905a26bb73e468','genesis':{'version':1,'timestamp':1370190760,'nBits':'1e0ffff0','nonce':347089008,'merkle_root':'7ce7004d764515f9b43cb9f07547c8e2e00d94c9348b3da33c8681d350f2c736'},'alertpubkey':'04c6db35c11724e526f6725cc5bd5293b4bc9382397856e1bcef7111fb44ce357fd12442b34c496d937a348c1dca1e36ae0c0e128905eb3d301433887e8f0b4536'};
AddCoinData.FRK = {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"prefetchlag":-1,"poll":10,"active":1,"agent":"iguana","method":"addcoin","maxpeers":256,"newcoin":"FRK","name":"Franko","netmagic":"7defaced","p2p":7912,"rpc":7913,"pubval":35,"p2shval":5,"wifval":163,"txfee_satoshis":"0","minconfirms":2,"genesishash":"19225ae90d538561217b5949e98ca4964ac91af39090d1a4407c892293e4f44f","genesis":{"hashalgo":"scrypt","version":1,"timestamp":1368144664,"nBits":"1e0ffff0","nonce":731837,"merkle_root":"b78f79f1d10029cc45ed3d5a1db7bd423d4ee170c03baf110a62565d16a21dca"},"alertpubkey":"04d4da7a5dae4db797d9b0644d57a5cd50e05a70f36091cd62e2fc41c98ded06340be5a43a35e185690cd9cde5d72da8f6d065b499b06f51dcfba14aad859f443a"}; AddCoinData.FRK = {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'prefetchlag':-1,'poll':10,'active':1,'agent':'iguana','method':'addcoin','maxpeers':256,'newcoin':'FRK','name':'Franko','netmagic':'7defaced','p2p':7912,'rpc':7913,'pubval':35,'p2shval':5,'wifval':163,'txfee_satoshis':'0','minconfirms':2,'genesishash':'19225ae90d538561217b5949e98ca4964ac91af39090d1a4407c892293e4f44f','genesis':{'hashalgo':'scrypt','version':1,'timestamp':1368144664,'nBits':'1e0ffff0','nonce':731837,'merkle_root':'b78f79f1d10029cc45ed3d5a1db7bd423d4ee170c03baf110a62565d16a21dca'},'alertpubkey':'04d4da7a5dae4db797d9b0644d57a5cd50e05a70f36091cd62e2fc41c98ded06340be5a43a35e185690cd9cde5d72da8f6d065b499b06f51dcfba14aad859f443a'};
AddCoinData.GAME = {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"services":129,"prefetchlag":-1,"poll":10,"active":1,"agent":"iguana","method":"addcoin","maxpeers":256,"newcoin":"GAME","name":"GameCredits","netmagic":"fbc0b6db","p2p":40002,"rpc":40001,"pubval":38,"p2shval":5,"wifval":166,"txfee_satoshis":"100000","minconfirms":2,"genesishash":"91ec5f25ee9a0ffa1af7d4da4db9a552228dd2dc77cdb15b738be4e1f55f30ee","genesis":{"hashalgo":"scrypt","version":1,"timestamp":1392757140,"nBits":"1e0ffff0","nonce":2084565393,"merkle_root":"d849db99a14164f4b4c8ad6d2d8d7e2b1ba7f89963e9f4bf9fad5ff1a4754429"},"alertpubkey":"04fc9702847840aaf195de8442ebecedf5b095cdbb9bc716bda9110971b28a49e0ead8564ff0db22209e0374782c093bb899692d524e9d6a6956e7c5ecbcd68284","auxpow":1,"protover":80006,"isPoS":0}; AddCoinData.GAME = {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'services':129,'prefetchlag':-1,'poll':10,'active':1,'agent':'iguana','method':'addcoin','maxpeers':256,'newcoin':'GAME','name':'GameCredits','netmagic':'fbc0b6db','p2p':40002,'rpc':40001,'pubval':38,'p2shval':5,'wifval':166,'txfee_satoshis':'100000','minconfirms':2,'genesishash':'91ec5f25ee9a0ffa1af7d4da4db9a552228dd2dc77cdb15b738be4e1f55f30ee','genesis':{'hashalgo':'scrypt','version':1,'timestamp':1392757140,'nBits':'1e0ffff0','nonce':2084565393,'merkle_root':'d849db99a14164f4b4c8ad6d2d8d7e2b1ba7f89963e9f4bf9fad5ff1a4754429'},'alertpubkey':'04fc9702847840aaf195de8442ebecedf5b095cdbb9bc716bda9110971b28a49e0ead8564ff0db22209e0374782c093bb899692d524e9d6a6956e7c5ecbcd68284','auxpow':1,'protover':80006,'isPoS':0};
AddCoinData.ZET = {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"services":129,"prefetchlag":-1,"poll":10,"active":1,"agent":"iguana","method":"addcoin","maxpeers":256,"newcoin":"ZET","name":"Zetacoin","netmagic":"fab503df","p2p":17333,"rpc":17335,"pubval":80,"p2shval":9,"wifval":224,"txfee_satoshis":"10000","minconfirms":2,"genesishash":"000006cab7aa2be2da91015902aa4458dd5fbb8778d175c36d429dc986f2bff4","genesis":{"version":1,"timestamp":1375548986,"nBits":"1e0fffff","nonce":2089928209,"merkle_root":"d0227b8c3e3d07bce9656b3d9e474f050d23458aaead93357dcfdac9ab9b79f9"},"alertpubkey":"045337216002ca6a71d63edf062895417610a723d453e722bf4728996c58661cdac3d4dec5cecd449b9086e9602b35cc726a9e0163e1a4d40f521fbdaebb674658"}; AddCoinData.ZET = {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'services':129,'prefetchlag':-1,'poll':10,'active':1,'agent':'iguana','method':'addcoin','maxpeers':256,'newcoin':'ZET','name':'Zetacoin','netmagic':'fab503df','p2p':17333,'rpc':17335,'pubval':80,'p2shval':9,'wifval':224,'txfee_satoshis':'10000','minconfirms':2,'genesishash':'000006cab7aa2be2da91015902aa4458dd5fbb8778d175c36d429dc986f2bff4','genesis':{'version':1,'timestamp':1375548986,'nBits':'1e0fffff','nonce':2089928209,'merkle_root':'d0227b8c3e3d07bce9656b3d9e474f050d23458aaead93357dcfdac9ab9b79f9'},'alertpubkey':'045337216002ca6a71d63edf062895417610a723d453e722bf4728996c58661cdac3d4dec5cecd449b9086e9602b35cc726a9e0163e1a4d40f521fbdaebb674658'};
if (coin === 'KMD') { if (coin === 'KMD') {
if (mode === '-1') { if (mode === '-1') {
AddCoinData.KMD = {"coin":"KMD","conf":"komodo.conf","path":confpath,"unitval":"20","zcash":1,"RELAY":-1,"VALIDATE":0,"prefetchlag":-1,"poll":10,"active":1,"agent":"iguana","method":"addcoin","startpend":8,"endpend":8,"services":0,"maxpeers":32,"newcoin":"KMD","name":"Komodo","hasheaders":1,"useaddmultisig":0,"netmagic":"f9eee48d","p2p":7770,"rpc":7771,"pubval":60,"p2shval":85,"wifval":188,"txfee_satoshis":"10000","isPoS":0,"minoutput":10000,"minconfirms":2,"genesishash":"027e3758c3a65b12aa1046462b486d0a63bfa1beae327897f56c5cfb7daaae71","protover":170002,"genesisblock":"0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a000000000000000000000000000000000000000000000000000000000000000029ab5f490f0f0f200b00000000000000000000000000000000000000000000000000000000000000fd4005000d5ba7cda5d473947263bf194285317179d2b0d307119c2e7cc4bd8ac456f0774bd52b0cd9249be9d40718b6397a4c7bbd8f2b3272fed2823cd2af4bd1632200ba4bf796727d6347b225f670f292343274cc35099466f5fb5f0cd1c105121b28213d15db2ed7bdba490b4cedc69742a57b7c25af24485e523aadbb77a0144fc76f79ef73bd8530d42b9f3b9bed1c135ad1fe152923fafe98f95f76f1615e64c4abb1137f4c31b218ba2782bc15534788dda2cc08a0ee2987c8b27ff41bd4e31cd5fb5643dfe862c9a02ca9f90c8c51a6671d681d04ad47e4b53b1518d4befafefe8cadfb912f3d03051b1efbf1dfe37b56e93a741d8dfd80d576ca250bee55fab1311fc7b3255977558cdda6f7d6f875306e43a14413facdaed2f46093e0ef1e8f8a963e1632dcbeebd8e49fd16b57d49b08f9762de89157c65233f60c8e38a1f503a48c555f8ec45dedecd574a37601323c27be597b956343107f8bd80f3a925afaf30811df83c402116bb9c1e5231c70fff899a7c82f73c902ba54da53cc459b7bf1113db65cc8f6914d3618560ea69abd13658fa7b6af92d374d6eca9529f8bd565166e4fcbf2a8dfb3c9b69539d4d2ee2e9321b85b331925df195915f2757637c2805e1d4131e1ad9ef9bc1bb1c732d8dba4738716d351ab30c996c8657bab39567ee3b29c6d054b711495c0d52e1cd5d8e55b4f0f0325b97369280755b46a02afd54be4ddd9f77c22272b8bbb17ff5118fedbae2564524e797bd28b5f74f7079d532ccc059807989f94d267f47e724b3f1ecfe00ec9e6541c961080d8891251b84b4480bc292f6a180bea089fef5bbda56e1e41390d7c0e85ba0ef530f7177413481a226465a36ef6afe1e2bca69d2078712b3912bba1a99b1fbff0d355d6ffe726d2bb6fbc103c4ac5756e5bee6e47e17424ebcbf1b63d8cb90ce2e40198b4f4198689daea254307e52a25562f4c1455340f0ffeb10f9d8e914775e37d0edca019fb1b9c6ef81255ed86bc51c5391e0591480f66e2d88c5f4fd7277697968656a9b113ab97f874fdd5f2465e5559533e01ba13ef4a8f7a21d02c30c8ded68e8c54603ab9c8084ef6d9eb4e92c75b078539e2ae786ebab6dab73a09e0aa9ac575bcefb29e930ae656e58bcb513f7e3c17e079dce4f05b5dbc18c2a872b22509740ebe6a3903e00ad1abc55076441862643f93606e3dc35e8d9f2caef3ee6be14d513b2e062b21d0061de3bd56881713a1a5c17f5ace05e1ec09da53f99442df175a49bd154aa96e4949decd52fed79ccf7ccbce32941419c314e374e4a396ac553e17b5340336a1a25c22f9e42a243ba5404450b650acfc826a6e432971ace776e15719515e1634ceb9a4a35061b668c74998d3dfb5827f6238ec015377e6f9c94f38108768cf6e5c8b132e0303fb5a200368f845ad9d46343035a6ff94031df8d8309415bb3f6cd5ede9c135fdabcc030599858d803c0f85be7661c88984d88faa3d26fb0e9aac0056a53f1b5d0baed713c853c4a2726869a0a124a8a5bbc0fc0ef80c8ae4cb53636aa02503b86a1eb9836fcc259823e2692d921d88e1ffc1e6cb2bde43939ceb3f32a611686f539f8f7c9f0bf00381f743607d40960f06d347d1cd8ac8a51969c25e37150efdf7aa4c2037a2fd0516fb444525ab157a0ed0a7412b2fa69b217fe397263153782c0f64351fbdf2678fa0dc8569912dcd8e3ccad38f34f23bbbce14c6a26ac24911b308b82c7e43062d180baeac4ba7153858365c72c63dcf5f6a5b08070b730adb017aeae925b7d0439979e2679f45ed2f25a7edcfd2fb77a8794630285ccb0a071f5cce410b46dbf9750b0354aae8b65574501cc69efb5b6a43444074fee116641bb29da56c2b4a7f456991fc92b2","debug":0} AddCoinData.KMD = {'coin':'KMD','conf':'komodo.conf','path':confpath,'unitval':'20','zcash':1,'RELAY':-1,'VALIDATE':0,'prefetchlag':-1,'poll':10,'active':1,'agent':'iguana','method':'addcoin','startpend':8,'endpend':8,'services':0,'maxpeers':32,'newcoin':'KMD','name':'Komodo','hasheaders':1,'useaddmultisig':0,'netmagic':'f9eee48d','p2p':7770,'rpc':7771,'pubval':60,'p2shval':85,'wifval':188,'txfee_satoshis':'10000','isPoS':0,'minoutput':10000,'minconfirms':2,'genesishash':'027e3758c3a65b12aa1046462b486d0a63bfa1beae327897f56c5cfb7daaae71','protover':170002,'genesisblock':'0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a000000000000000000000000000000000000000000000000000000000000000029ab5f490f0f0f200b00000000000000000000000000000000000000000000000000000000000000fd4005000d5ba7cda5d473947263bf194285317179d2b0d307119c2e7cc4bd8ac456f0774bd52b0cd9249be9d40718b6397a4c7bbd8f2b3272fed2823cd2af4bd1632200ba4bf796727d6347b225f670f292343274cc35099466f5fb5f0cd1c105121b28213d15db2ed7bdba490b4cedc69742a57b7c25af24485e523aadbb77a0144fc76f79ef73bd8530d42b9f3b9bed1c135ad1fe152923fafe98f95f76f1615e64c4abb1137f4c31b218ba2782bc15534788dda2cc08a0ee2987c8b27ff41bd4e31cd5fb5643dfe862c9a02ca9f90c8c51a6671d681d04ad47e4b53b1518d4befafefe8cadfb912f3d03051b1efbf1dfe37b56e93a741d8dfd80d576ca250bee55fab1311fc7b3255977558cdda6f7d6f875306e43a14413facdaed2f46093e0ef1e8f8a963e1632dcbeebd8e49fd16b57d49b08f9762de89157c65233f60c8e38a1f503a48c555f8ec45dedecd574a37601323c27be597b956343107f8bd80f3a925afaf30811df83c402116bb9c1e5231c70fff899a7c82f73c902ba54da53cc459b7bf1113db65cc8f6914d3618560ea69abd13658fa7b6af92d374d6eca9529f8bd565166e4fcbf2a8dfb3c9b69539d4d2ee2e9321b85b331925df195915f2757637c2805e1d4131e1ad9ef9bc1bb1c732d8dba4738716d351ab30c996c8657bab39567ee3b29c6d054b711495c0d52e1cd5d8e55b4f0f0325b97369280755b46a02afd54be4ddd9f77c22272b8bbb17ff5118fedbae2564524e797bd28b5f74f7079d532ccc059807989f94d267f47e724b3f1ecfe00ec9e6541c961080d8891251b84b4480bc292f6a180bea089fef5bbda56e1e41390d7c0e85ba0ef530f7177413481a226465a36ef6afe1e2bca69d2078712b3912bba1a99b1fbff0d355d6ffe726d2bb6fbc103c4ac5756e5bee6e47e17424ebcbf1b63d8cb90ce2e40198b4f4198689daea254307e52a25562f4c1455340f0ffeb10f9d8e914775e37d0edca019fb1b9c6ef81255ed86bc51c5391e0591480f66e2d88c5f4fd7277697968656a9b113ab97f874fdd5f2465e5559533e01ba13ef4a8f7a21d02c30c8ded68e8c54603ab9c8084ef6d9eb4e92c75b078539e2ae786ebab6dab73a09e0aa9ac575bcefb29e930ae656e58bcb513f7e3c17e079dce4f05b5dbc18c2a872b22509740ebe6a3903e00ad1abc55076441862643f93606e3dc35e8d9f2caef3ee6be14d513b2e062b21d0061de3bd56881713a1a5c17f5ace05e1ec09da53f99442df175a49bd154aa96e4949decd52fed79ccf7ccbce32941419c314e374e4a396ac553e17b5340336a1a25c22f9e42a243ba5404450b650acfc826a6e432971ace776e15719515e1634ceb9a4a35061b668c74998d3dfb5827f6238ec015377e6f9c94f38108768cf6e5c8b132e0303fb5a200368f845ad9d46343035a6ff94031df8d8309415bb3f6cd5ede9c135fdabcc030599858d803c0f85be7661c88984d88faa3d26fb0e9aac0056a53f1b5d0baed713c853c4a2726869a0a124a8a5bbc0fc0ef80c8ae4cb53636aa02503b86a1eb9836fcc259823e2692d921d88e1ffc1e6cb2bde43939ceb3f32a611686f539f8f7c9f0bf00381f743607d40960f06d347d1cd8ac8a51969c25e37150efdf7aa4c2037a2fd0516fb444525ab157a0ed0a7412b2fa69b217fe397263153782c0f64351fbdf2678fa0dc8569912dcd8e3ccad38f34f23bbbce14c6a26ac24911b308b82c7e43062d180baeac4ba7153858365c72c63dcf5f6a5b08070b730adb017aeae925b7d0439979e2679f45ed2f25a7edcfd2fb77a8794630285ccb0a071f5cce410b46dbf9750b0354aae8b65574501cc69efb5b6a43444074fee116641bb29da56c2b4a7f456991fc92b2','debug':0}
} else { } else {
AddCoinData.KMD = {'userpass':tmpIguanaRPCAuth,"unitval":"20","zcash":1,"RELAY":mode,"VALIDATE":mode,"prefetchlag":-1,"poll":10,"active":1,"agent":"iguana","method":"addcoin","startpend":tmpPendValue,"endpend":tmpPendValue,"services":129,"maxpeers":32,"newcoin":"KMD","name":"Komodo","hasheaders":1,"useaddmultisig":0,"netmagic":"f9eee48d","p2p":7770,"rpc":7771,"pubval":60,"p2shval":85,"wifval":188,"txfee_satoshis":"10000","isPoS":0,"minoutput":10000,"minconfirms":2,"genesishash":"027e3758c3a65b12aa1046462b486d0a63bfa1beae327897f56c5cfb7daaae71","protover":170002,"genesisblock":"0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a000000000000000000000000000000000000000000000000000000000000000029ab5f490f0f0f200b00000000000000000000000000000000000000000000000000000000000000fd4005000d5ba7cda5d473947263bf194285317179d2b0d307119c2e7cc4bd8ac456f0774bd52b0cd9249be9d40718b6397a4c7bbd8f2b3272fed2823cd2af4bd1632200ba4bf796727d6347b225f670f292343274cc35099466f5fb5f0cd1c105121b28213d15db2ed7bdba490b4cedc69742a57b7c25af24485e523aadbb77a0144fc76f79ef73bd8530d42b9f3b9bed1c135ad1fe152923fafe98f95f76f1615e64c4abb1137f4c31b218ba2782bc15534788dda2cc08a0ee2987c8b27ff41bd4e31cd5fb5643dfe862c9a02ca9f90c8c51a6671d681d04ad47e4b53b1518d4befafefe8cadfb912f3d03051b1efbf1dfe37b56e93a741d8dfd80d576ca250bee55fab1311fc7b3255977558cdda6f7d6f875306e43a14413facdaed2f46093e0ef1e8f8a963e1632dcbeebd8e49fd16b57d49b08f9762de89157c65233f60c8e38a1f503a48c555f8ec45dedecd574a37601323c27be597b956343107f8bd80f3a925afaf30811df83c402116bb9c1e5231c70fff899a7c82f73c902ba54da53cc459b7bf1113db65cc8f6914d3618560ea69abd13658fa7b6af92d374d6eca9529f8bd565166e4fcbf2a8dfb3c9b69539d4d2ee2e9321b85b331925df195915f2757637c2805e1d4131e1ad9ef9bc1bb1c732d8dba4738716d351ab30c996c8657bab39567ee3b29c6d054b711495c0d52e1cd5d8e55b4f0f0325b97369280755b46a02afd54be4ddd9f77c22272b8bbb17ff5118fedbae2564524e797bd28b5f74f7079d532ccc059807989f94d267f47e724b3f1ecfe00ec9e6541c961080d8891251b84b4480bc292f6a180bea089fef5bbda56e1e41390d7c0e85ba0ef530f7177413481a226465a36ef6afe1e2bca69d2078712b3912bba1a99b1fbff0d355d6ffe726d2bb6fbc103c4ac5756e5bee6e47e17424ebcbf1b63d8cb90ce2e40198b4f4198689daea254307e52a25562f4c1455340f0ffeb10f9d8e914775e37d0edca019fb1b9c6ef81255ed86bc51c5391e0591480f66e2d88c5f4fd7277697968656a9b113ab97f874fdd5f2465e5559533e01ba13ef4a8f7a21d02c30c8ded68e8c54603ab9c8084ef6d9eb4e92c75b078539e2ae786ebab6dab73a09e0aa9ac575bcefb29e930ae656e58bcb513f7e3c17e079dce4f05b5dbc18c2a872b22509740ebe6a3903e00ad1abc55076441862643f93606e3dc35e8d9f2caef3ee6be14d513b2e062b21d0061de3bd56881713a1a5c17f5ace05e1ec09da53f99442df175a49bd154aa96e4949decd52fed79ccf7ccbce32941419c314e374e4a396ac553e17b5340336a1a25c22f9e42a243ba5404450b650acfc826a6e432971ace776e15719515e1634ceb9a4a35061b668c74998d3dfb5827f6238ec015377e6f9c94f38108768cf6e5c8b132e0303fb5a200368f845ad9d46343035a6ff94031df8d8309415bb3f6cd5ede9c135fdabcc030599858d803c0f85be7661c88984d88faa3d26fb0e9aac0056a53f1b5d0baed713c853c4a2726869a0a124a8a5bbc0fc0ef80c8ae4cb53636aa02503b86a1eb9836fcc259823e2692d921d88e1ffc1e6cb2bde43939ceb3f32a611686f539f8f7c9f0bf00381f743607d40960f06d347d1cd8ac8a51969c25e37150efdf7aa4c2037a2fd0516fb444525ab157a0ed0a7412b2fa69b217fe397263153782c0f64351fbdf2678fa0dc8569912dcd8e3ccad38f34f23bbbce14c6a26ac24911b308b82c7e43062d180baeac4ba7153858365c72c63dcf5f6a5b08070b730adb017aeae925b7d0439979e2679f45ed2f25a7edcfd2fb77a8794630285ccb0a071f5cce410b46dbf9750b0354aae8b65574501cc69efb5b6a43444074fee116641bb29da56c2b4a7f456991fc92b2","debug":0} AddCoinData.KMD = {'userpass':tmpIguanaRPCAuth,'unitval':'20','zcash':1,'RELAY':mode,'VALIDATE':mode,'prefetchlag':-1,'poll':10,'active':1,'agent':'iguana','method':'addcoin','startpend':tmpPendValue,'endpend':tmpPendValue,'services':129,'maxpeers':32,'newcoin':'KMD','name':'Komodo','hasheaders':1,'useaddmultisig':0,'netmagic':'f9eee48d','p2p':7770,'rpc':7771,'pubval':60,'p2shval':85,'wifval':188,'txfee_satoshis':'10000','isPoS':0,'minoutput':10000,'minconfirms':2,'genesishash':'027e3758c3a65b12aa1046462b486d0a63bfa1beae327897f56c5cfb7daaae71','protover':170002,'genesisblock':'0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a000000000000000000000000000000000000000000000000000000000000000029ab5f490f0f0f200b00000000000000000000000000000000000000000000000000000000000000fd4005000d5ba7cda5d473947263bf194285317179d2b0d307119c2e7cc4bd8ac456f0774bd52b0cd9249be9d40718b6397a4c7bbd8f2b3272fed2823cd2af4bd1632200ba4bf796727d6347b225f670f292343274cc35099466f5fb5f0cd1c105121b28213d15db2ed7bdba490b4cedc69742a57b7c25af24485e523aadbb77a0144fc76f79ef73bd8530d42b9f3b9bed1c135ad1fe152923fafe98f95f76f1615e64c4abb1137f4c31b218ba2782bc15534788dda2cc08a0ee2987c8b27ff41bd4e31cd5fb5643dfe862c9a02ca9f90c8c51a6671d681d04ad47e4b53b1518d4befafefe8cadfb912f3d03051b1efbf1dfe37b56e93a741d8dfd80d576ca250bee55fab1311fc7b3255977558cdda6f7d6f875306e43a14413facdaed2f46093e0ef1e8f8a963e1632dcbeebd8e49fd16b57d49b08f9762de89157c65233f60c8e38a1f503a48c555f8ec45dedecd574a37601323c27be597b956343107f8bd80f3a925afaf30811df83c402116bb9c1e5231c70fff899a7c82f73c902ba54da53cc459b7bf1113db65cc8f6914d3618560ea69abd13658fa7b6af92d374d6eca9529f8bd565166e4fcbf2a8dfb3c9b69539d4d2ee2e9321b85b331925df195915f2757637c2805e1d4131e1ad9ef9bc1bb1c732d8dba4738716d351ab30c996c8657bab39567ee3b29c6d054b711495c0d52e1cd5d8e55b4f0f0325b97369280755b46a02afd54be4ddd9f77c22272b8bbb17ff5118fedbae2564524e797bd28b5f74f7079d532ccc059807989f94d267f47e724b3f1ecfe00ec9e6541c961080d8891251b84b4480bc292f6a180bea089fef5bbda56e1e41390d7c0e85ba0ef530f7177413481a226465a36ef6afe1e2bca69d2078712b3912bba1a99b1fbff0d355d6ffe726d2bb6fbc103c4ac5756e5bee6e47e17424ebcbf1b63d8cb90ce2e40198b4f4198689daea254307e52a25562f4c1455340f0ffeb10f9d8e914775e37d0edca019fb1b9c6ef81255ed86bc51c5391e0591480f66e2d88c5f4fd7277697968656a9b113ab97f874fdd5f2465e5559533e01ba13ef4a8f7a21d02c30c8ded68e8c54603ab9c8084ef6d9eb4e92c75b078539e2ae786ebab6dab73a09e0aa9ac575bcefb29e930ae656e58bcb513f7e3c17e079dce4f05b5dbc18c2a872b22509740ebe6a3903e00ad1abc55076441862643f93606e3dc35e8d9f2caef3ee6be14d513b2e062b21d0061de3bd56881713a1a5c17f5ace05e1ec09da53f99442df175a49bd154aa96e4949decd52fed79ccf7ccbce32941419c314e374e4a396ac553e17b5340336a1a25c22f9e42a243ba5404450b650acfc826a6e432971ace776e15719515e1634ceb9a4a35061b668c74998d3dfb5827f6238ec015377e6f9c94f38108768cf6e5c8b132e0303fb5a200368f845ad9d46343035a6ff94031df8d8309415bb3f6cd5ede9c135fdabcc030599858d803c0f85be7661c88984d88faa3d26fb0e9aac0056a53f1b5d0baed713c853c4a2726869a0a124a8a5bbc0fc0ef80c8ae4cb53636aa02503b86a1eb9836fcc259823e2692d921d88e1ffc1e6cb2bde43939ceb3f32a611686f539f8f7c9f0bf00381f743607d40960f06d347d1cd8ac8a51969c25e37150efdf7aa4c2037a2fd0516fb444525ab157a0ed0a7412b2fa69b217fe397263153782c0f64351fbdf2678fa0dc8569912dcd8e3ccad38f34f23bbbce14c6a26ac24911b308b82c7e43062d180baeac4ba7153858365c72c63dcf5f6a5b08070b730adb017aeae925b7d0439979e2679f45ed2f25a7edcfd2fb77a8794630285ccb0a071f5cce410b46dbf9750b0354aae8b65574501cc69efb5b6a43444074fee116641bb29da56c2b4a7f456991fc92b2','debug':0}
} }
} }
if (coin === 'ZEC') { if (coin === 'ZEC') {
if ( mode === '-1' ) { if ( mode === '-1' ) {
AddCoinData.ZEC = {"coin":"ZEC","conf":"zcash.conf","path":confpath,"unitval":"20","zcash":1,"RELAY":-1,"VALIDATE":0,"prefetchlag":-1,"poll":10,"active":1,"agent":"iguana","method":"addcoin","startpend":8,"endpend":8,"services":129,"maxpeers":32,"newcoin":"ZEC","name":"Zcash","hasheaders":0,"useaddmultisig":0,"netmagic":"24e92764","p2p":8233,"rpc":8232,"pubval":184,"p2shval":189,"wifval":128,"txfee_satoshis":"10000","isPoS":0,"minoutput":10000,"minconfirms":2,"genesishash":"00040fe8ec8471911baa1db1266ea15dd06b4a8a5c453883c000b031973dce08","protover":170002,"genesisblock":"040000000000000000000000000000000000000000000000000000000000000000000000db4d7a85b768123f1dff1d4c4cece70083b2d27e117b4ac2e31d087988a5eac4000000000000000000000000000000000000000000000000000000000000000090041358ffff071f5712000000000000000000000000000000000000000000000000000000000000fd4005000a889f00854b8665cd555f4656f68179d31ccadc1b1f7fb0952726313b16941da348284d67add4686121d4e3d930160c1348d8191c25f12b267a6a9c131b5031cbf8af1f79c9d513076a216ec87ed045fa966e01214ed83ca02dc1797270a454720d3206ac7d931a0a680c5c5e099057592570ca9bdf6058343958b31901fce1a15a4f38fd347750912e14004c73dfe588b903b6c03166582eeaf30529b14072a7b3079e3a684601b9b3024054201f7440b0ee9eb1a7120ff43f713735494aa27b1f8bab60d7f398bca14f6abb2adbf29b04099121438a7974b078a11635b594e9170f1086140b4173822dd697894483e1c6b4e8b8dcd5cb12ca4903bc61e108871d4d915a9093c18ac9b02b6716ce1013ca2c1174e319c1a570215bc9ab5f7564765f7be20524dc3fdf8aa356fd94d445e05ab165ad8bb4a0db096c097618c81098f91443c719416d39837af6de85015dca0de89462b1d8386758b2cf8a99e00953b308032ae44c35e05eb71842922eb69797f68813b59caf266cb6c213569ae3280505421a7e3a0a37fdf8e2ea354fc5422816655394a9454bac542a9298f176e211020d63dee6852c40de02267e2fc9d5e1ff2ad9309506f02a1a71a0501b16d0d36f70cdfd8de78116c0c506ee0b8ddfdeb561acadf31746b5a9dd32c21930884397fb1682164cb565cc14e089d66635a32618f7eb05fe05082b8a3fae620571660a6b89886eac53dec109d7cbb6930ca698a168f301a950be152da1be2b9e07516995e20baceebecb5579d7cdbc16d09f3a50cb3c7dffe33f26686d4ff3f8946ee6475e98cf7b3cf9062b6966e838f865ff3de5fb064a37a21da7bb8dfd2501a29e184f207caaba364f36f2329a77515dcb710e29ffbf73e2bbd773fab1f9a6b005567affff605c132e4e4dd69f36bd201005458cfbd2c658701eb2a700251cefd886b1e674ae816d3f719bac64be649c172ba27a4fd55947d95d53ba4cbc73de97b8af5ed4840b659370c556e7376457f51e5ebb66018849923db82c1c9a819f173cccdb8f3324b239609a300018d0fb094adf5bd7cbb3834c69e6d0b3798065c525b20f040e965e1a161af78ff7561cd874f5f1b75aa0bc77f720589e1b810f831eac5073e6dd46d00a2793f70f7427f0f798f2f53a67e615e65d356e66fe40609a958a05edb4c175bcc383ea0530e67ddbe479a898943c6e3074c6fcc252d6014de3a3d292b03f0d88d312fe221be7be7e3c59d07fa0f2f4029e364f1f355c5d01fa53770d0cd76d82bf7e60f6903bc1beb772e6fde4a70be51d9c7e03c8d6d8dfb361a234ba47c470fe630820bbd920715621b9fbedb49fcee165ead0875e6c2b1af16f50b5d6140cc981122fcbcf7c5a4e3772b3661b628e08380abc545957e59f634705b1bbde2f0b4e055a5ec5676d859be77e20962b645e051a880fddb0180b4555789e1f9344a436a84dc5579e2553f1e5fb0a599c137be36cabbed0319831fea3fddf94ddc7971e4bcf02cdc93294a9aab3e3b13e3b058235b4f4ec06ba4ceaa49d675b4ba80716f3bc6976b1fbf9c8bf1f3e3a4dc1cd83ef9cf816667fb94f1e923ff63fef072e6a19321e4812f96cb0ffa864da50ad74deb76917a336f31dce03ed5f0303aad5e6a83634f9fcc371096f8288b8f02ddded5ff1bb9d49331e4a84dbe1543164438fde9ad71dab024779dcdde0b6602b5ae0a6265c14b94edd83b37403f4b78fcd2ed555b596402c28ee81d87a909c4e8722b30c71ecdd861b05f61f8b1231795c76adba2fdefa451b283a5d527955b9f3de1b9828e7b2e74123dd47062ddcc09b05e7fa13cb2212a6fdbc65d7e852cec463ec6fd929f5b8483cf3052113b13dac91b69f49d1b7d1aec01c4a68e41ce157","debug":0} AddCoinData.ZEC = {'coin':'ZEC','conf':'zcash.conf','path':confpath,'unitval':'20','zcash':1,'RELAY':-1,'VALIDATE':0,'prefetchlag':-1,'poll':10,'active':1,'agent':'iguana','method':'addcoin','startpend':8,'endpend':8,'services':129,'maxpeers':32,'newcoin':'ZEC','name':'Zcash','hasheaders':0,'useaddmultisig':0,'netmagic':'24e92764','p2p':8233,'rpc':8232,'pubval':184,'p2shval':189,'wifval':128,'txfee_satoshis':'10000','isPoS':0,'minoutput':10000,'minconfirms':2,'genesishash':'00040fe8ec8471911baa1db1266ea15dd06b4a8a5c453883c000b031973dce08','protover':170002,'genesisblock':'040000000000000000000000000000000000000000000000000000000000000000000000db4d7a85b768123f1dff1d4c4cece70083b2d27e117b4ac2e31d087988a5eac4000000000000000000000000000000000000000000000000000000000000000090041358ffff071f5712000000000000000000000000000000000000000000000000000000000000fd4005000a889f00854b8665cd555f4656f68179d31ccadc1b1f7fb0952726313b16941da348284d67add4686121d4e3d930160c1348d8191c25f12b267a6a9c131b5031cbf8af1f79c9d513076a216ec87ed045fa966e01214ed83ca02dc1797270a454720d3206ac7d931a0a680c5c5e099057592570ca9bdf6058343958b31901fce1a15a4f38fd347750912e14004c73dfe588b903b6c03166582eeaf30529b14072a7b3079e3a684601b9b3024054201f7440b0ee9eb1a7120ff43f713735494aa27b1f8bab60d7f398bca14f6abb2adbf29b04099121438a7974b078a11635b594e9170f1086140b4173822dd697894483e1c6b4e8b8dcd5cb12ca4903bc61e108871d4d915a9093c18ac9b02b6716ce1013ca2c1174e319c1a570215bc9ab5f7564765f7be20524dc3fdf8aa356fd94d445e05ab165ad8bb4a0db096c097618c81098f91443c719416d39837af6de85015dca0de89462b1d8386758b2cf8a99e00953b308032ae44c35e05eb71842922eb69797f68813b59caf266cb6c213569ae3280505421a7e3a0a37fdf8e2ea354fc5422816655394a9454bac542a9298f176e211020d63dee6852c40de02267e2fc9d5e1ff2ad9309506f02a1a71a0501b16d0d36f70cdfd8de78116c0c506ee0b8ddfdeb561acadf31746b5a9dd32c21930884397fb1682164cb565cc14e089d66635a32618f7eb05fe05082b8a3fae620571660a6b89886eac53dec109d7cbb6930ca698a168f301a950be152da1be2b9e07516995e20baceebecb5579d7cdbc16d09f3a50cb3c7dffe33f26686d4ff3f8946ee6475e98cf7b3cf9062b6966e838f865ff3de5fb064a37a21da7bb8dfd2501a29e184f207caaba364f36f2329a77515dcb710e29ffbf73e2bbd773fab1f9a6b005567affff605c132e4e4dd69f36bd201005458cfbd2c658701eb2a700251cefd886b1e674ae816d3f719bac64be649c172ba27a4fd55947d95d53ba4cbc73de97b8af5ed4840b659370c556e7376457f51e5ebb66018849923db82c1c9a819f173cccdb8f3324b239609a300018d0fb094adf5bd7cbb3834c69e6d0b3798065c525b20f040e965e1a161af78ff7561cd874f5f1b75aa0bc77f720589e1b810f831eac5073e6dd46d00a2793f70f7427f0f798f2f53a67e615e65d356e66fe40609a958a05edb4c175bcc383ea0530e67ddbe479a898943c6e3074c6fcc252d6014de3a3d292b03f0d88d312fe221be7be7e3c59d07fa0f2f4029e364f1f355c5d01fa53770d0cd76d82bf7e60f6903bc1beb772e6fde4a70be51d9c7e03c8d6d8dfb361a234ba47c470fe630820bbd920715621b9fbedb49fcee165ead0875e6c2b1af16f50b5d6140cc981122fcbcf7c5a4e3772b3661b628e08380abc545957e59f634705b1bbde2f0b4e055a5ec5676d859be77e20962b645e051a880fddb0180b4555789e1f9344a436a84dc5579e2553f1e5fb0a599c137be36cabbed0319831fea3fddf94ddc7971e4bcf02cdc93294a9aab3e3b13e3b058235b4f4ec06ba4ceaa49d675b4ba80716f3bc6976b1fbf9c8bf1f3e3a4dc1cd83ef9cf816667fb94f1e923ff63fef072e6a19321e4812f96cb0ffa864da50ad74deb76917a336f31dce03ed5f0303aad5e6a83634f9fcc371096f8288b8f02ddded5ff1bb9d49331e4a84dbe1543164438fde9ad71dab024779dcdde0b6602b5ae0a6265c14b94edd83b37403f4b78fcd2ed555b596402c28ee81d87a909c4e8722b30c71ecdd861b05f61f8b1231795c76adba2fdefa451b283a5d527955b9f3de1b9828e7b2e74123dd47062ddcc09b05e7fa13cb2212a6fdbc65d7e852cec463ec6fd929f5b8483cf3052113b13dac91b69f49d1b7d1aec01c4a68e41ce157','debug':0}
} else { } else {
AddCoinData.ZEC = {'userpass':tmpIguanaRPCAuth,"unitval":"20","zcash":1,"RELAY":mode,"VALIDATE":mode,"prefetchlag":-1,"poll":10,"active":1,"agent":"iguana","method":"addcoin","startpend":tmpPendValue,"endpend":tmpPendValue,"services":129,"maxpeers":32,"newcoin":"ZEC","name":"Zcash","hasheaders":0,"useaddmultisig":0,"netmagic":"24e92764","p2p":8233,"rpc":8232,"pubval":184,"p2shval":189,"wifval":128,"txfee_satoshis":"10000","isPoS":0,"minoutput":10000,"minconfirms":2,"genesishash":"00040fe8ec8471911baa1db1266ea15dd06b4a8a5c453883c000b031973dce08","protover":170002,"genesisblock":"040000000000000000000000000000000000000000000000000000000000000000000000db4d7a85b768123f1dff1d4c4cece70083b2d27e117b4ac2e31d087988a5eac4000000000000000000000000000000000000000000000000000000000000000090041358ffff071f5712000000000000000000000000000000000000000000000000000000000000fd4005000a889f00854b8665cd555f4656f68179d31ccadc1b1f7fb0952726313b16941da348284d67add4686121d4e3d930160c1348d8191c25f12b267a6a9c131b5031cbf8af1f79c9d513076a216ec87ed045fa966e01214ed83ca02dc1797270a454720d3206ac7d931a0a680c5c5e099057592570ca9bdf6058343958b31901fce1a15a4f38fd347750912e14004c73dfe588b903b6c03166582eeaf30529b14072a7b3079e3a684601b9b3024054201f7440b0ee9eb1a7120ff43f713735494aa27b1f8bab60d7f398bca14f6abb2adbf29b04099121438a7974b078a11635b594e9170f1086140b4173822dd697894483e1c6b4e8b8dcd5cb12ca4903bc61e108871d4d915a9093c18ac9b02b6716ce1013ca2c1174e319c1a570215bc9ab5f7564765f7be20524dc3fdf8aa356fd94d445e05ab165ad8bb4a0db096c097618c81098f91443c719416d39837af6de85015dca0de89462b1d8386758b2cf8a99e00953b308032ae44c35e05eb71842922eb69797f68813b59caf266cb6c213569ae3280505421a7e3a0a37fdf8e2ea354fc5422816655394a9454bac542a9298f176e211020d63dee6852c40de02267e2fc9d5e1ff2ad9309506f02a1a71a0501b16d0d36f70cdfd8de78116c0c506ee0b8ddfdeb561acadf31746b5a9dd32c21930884397fb1682164cb565cc14e089d66635a32618f7eb05fe05082b8a3fae620571660a6b89886eac53dec109d7cbb6930ca698a168f301a950be152da1be2b9e07516995e20baceebecb5579d7cdbc16d09f3a50cb3c7dffe33f26686d4ff3f8946ee6475e98cf7b3cf9062b6966e838f865ff3de5fb064a37a21da7bb8dfd2501a29e184f207caaba364f36f2329a77515dcb710e29ffbf73e2bbd773fab1f9a6b005567affff605c132e4e4dd69f36bd201005458cfbd2c658701eb2a700251cefd886b1e674ae816d3f719bac64be649c172ba27a4fd55947d95d53ba4cbc73de97b8af5ed4840b659370c556e7376457f51e5ebb66018849923db82c1c9a819f173cccdb8f3324b239609a300018d0fb094adf5bd7cbb3834c69e6d0b3798065c525b20f040e965e1a161af78ff7561cd874f5f1b75aa0bc77f720589e1b810f831eac5073e6dd46d00a2793f70f7427f0f798f2f53a67e615e65d356e66fe40609a958a05edb4c175bcc383ea0530e67ddbe479a898943c6e3074c6fcc252d6014de3a3d292b03f0d88d312fe221be7be7e3c59d07fa0f2f4029e364f1f355c5d01fa53770d0cd76d82bf7e60f6903bc1beb772e6fde4a70be51d9c7e03c8d6d8dfb361a234ba47c470fe630820bbd920715621b9fbedb49fcee165ead0875e6c2b1af16f50b5d6140cc981122fcbcf7c5a4e3772b3661b628e08380abc545957e59f634705b1bbde2f0b4e055a5ec5676d859be77e20962b645e051a880fddb0180b4555789e1f9344a436a84dc5579e2553f1e5fb0a599c137be36cabbed0319831fea3fddf94ddc7971e4bcf02cdc93294a9aab3e3b13e3b058235b4f4ec06ba4ceaa49d675b4ba80716f3bc6976b1fbf9c8bf1f3e3a4dc1cd83ef9cf816667fb94f1e923ff63fef072e6a19321e4812f96cb0ffa864da50ad74deb76917a336f31dce03ed5f0303aad5e6a83634f9fcc371096f8288b8f02ddded5ff1bb9d49331e4a84dbe1543164438fde9ad71dab024779dcdde0b6602b5ae0a6265c14b94edd83b37403f4b78fcd2ed555b596402c28ee81d87a909c4e8722b30c71ecdd861b05f61f8b1231795c76adba2fdefa451b283a5d527955b9f3de1b9828e7b2e74123dd47062ddcc09b05e7fa13cb2212a6fdbc65d7e852cec463ec6fd929f5b8483cf3052113b13dac91b69f49d1b7d1aec01c4a68e41ce157","debug":0} AddCoinData.ZEC = {'userpass':tmpIguanaRPCAuth,'unitval':'20','zcash':1,'RELAY':mode,'VALIDATE':mode,'prefetchlag':-1,'poll':10,'active':1,'agent':'iguana','method':'addcoin','startpend':tmpPendValue,'endpend':tmpPendValue,'services':129,'maxpeers':32,'newcoin':'ZEC','name':'Zcash','hasheaders':0,'useaddmultisig':0,'netmagic':'24e92764','p2p':8233,'rpc':8232,'pubval':184,'p2shval':189,'wifval':128,'txfee_satoshis':'10000','isPoS':0,'minoutput':10000,'minconfirms':2,'genesishash':'00040fe8ec8471911baa1db1266ea15dd06b4a8a5c453883c000b031973dce08','protover':170002,'genesisblock':'040000000000000000000000000000000000000000000000000000000000000000000000db4d7a85b768123f1dff1d4c4cece70083b2d27e117b4ac2e31d087988a5eac4000000000000000000000000000000000000000000000000000000000000000090041358ffff071f5712000000000000000000000000000000000000000000000000000000000000fd4005000a889f00854b8665cd555f4656f68179d31ccadc1b1f7fb0952726313b16941da348284d67add4686121d4e3d930160c1348d8191c25f12b267a6a9c131b5031cbf8af1f79c9d513076a216ec87ed045fa966e01214ed83ca02dc1797270a454720d3206ac7d931a0a680c5c5e099057592570ca9bdf6058343958b31901fce1a15a4f38fd347750912e14004c73dfe588b903b6c03166582eeaf30529b14072a7b3079e3a684601b9b3024054201f7440b0ee9eb1a7120ff43f713735494aa27b1f8bab60d7f398bca14f6abb2adbf29b04099121438a7974b078a11635b594e9170f1086140b4173822dd697894483e1c6b4e8b8dcd5cb12ca4903bc61e108871d4d915a9093c18ac9b02b6716ce1013ca2c1174e319c1a570215bc9ab5f7564765f7be20524dc3fdf8aa356fd94d445e05ab165ad8bb4a0db096c097618c81098f91443c719416d39837af6de85015dca0de89462b1d8386758b2cf8a99e00953b308032ae44c35e05eb71842922eb69797f68813b59caf266cb6c213569ae3280505421a7e3a0a37fdf8e2ea354fc5422816655394a9454bac542a9298f176e211020d63dee6852c40de02267e2fc9d5e1ff2ad9309506f02a1a71a0501b16d0d36f70cdfd8de78116c0c506ee0b8ddfdeb561acadf31746b5a9dd32c21930884397fb1682164cb565cc14e089d66635a32618f7eb05fe05082b8a3fae620571660a6b89886eac53dec109d7cbb6930ca698a168f301a950be152da1be2b9e07516995e20baceebecb5579d7cdbc16d09f3a50cb3c7dffe33f26686d4ff3f8946ee6475e98cf7b3cf9062b6966e838f865ff3de5fb064a37a21da7bb8dfd2501a29e184f207caaba364f36f2329a77515dcb710e29ffbf73e2bbd773fab1f9a6b005567affff605c132e4e4dd69f36bd201005458cfbd2c658701eb2a700251cefd886b1e674ae816d3f719bac64be649c172ba27a4fd55947d95d53ba4cbc73de97b8af5ed4840b659370c556e7376457f51e5ebb66018849923db82c1c9a819f173cccdb8f3324b239609a300018d0fb094adf5bd7cbb3834c69e6d0b3798065c525b20f040e965e1a161af78ff7561cd874f5f1b75aa0bc77f720589e1b810f831eac5073e6dd46d00a2793f70f7427f0f798f2f53a67e615e65d356e66fe40609a958a05edb4c175bcc383ea0530e67ddbe479a898943c6e3074c6fcc252d6014de3a3d292b03f0d88d312fe221be7be7e3c59d07fa0f2f4029e364f1f355c5d01fa53770d0cd76d82bf7e60f6903bc1beb772e6fde4a70be51d9c7e03c8d6d8dfb361a234ba47c470fe630820bbd920715621b9fbedb49fcee165ead0875e6c2b1af16f50b5d6140cc981122fcbcf7c5a4e3772b3661b628e08380abc545957e59f634705b1bbde2f0b4e055a5ec5676d859be77e20962b645e051a880fddb0180b4555789e1f9344a436a84dc5579e2553f1e5fb0a599c137be36cabbed0319831fea3fddf94ddc7971e4bcf02cdc93294a9aab3e3b13e3b058235b4f4ec06ba4ceaa49d675b4ba80716f3bc6976b1fbf9c8bf1f3e3a4dc1cd83ef9cf816667fb94f1e923ff63fef072e6a19321e4812f96cb0ffa864da50ad74deb76917a336f31dce03ed5f0303aad5e6a83634f9fcc371096f8288b8f02ddded5ff1bb9d49331e4a84dbe1543164438fde9ad71dab024779dcdde0b6602b5ae0a6265c14b94edd83b37403f4b78fcd2ed555b596402c28ee81d87a909c4e8722b30c71ecdd861b05f61f8b1231795c76adba2fdefa451b283a5d527955b9f3de1b9828e7b2e74123dd47062ddcc09b05e7fa13cb2212a6fdbc65d7e852cec463ec6fd929f5b8483cf3052113b13dac91b69f49d1b7d1aec01c4a68e41ce157','debug':0}
} }
} }
@ -692,104 +692,104 @@ export function startAssetChain(confpath, coin, mode, getSuppyOnly) {
'SUPERNET': { 'SUPERNET': {
'name': 'SUPERNET', 'name': 'SUPERNET',
'supply': 816061, 'supply': 816061,
'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {"coin":"SUPERNET","conf":"SUPERNET.conf","path":confpath,"RELAY":-1,"VALIDATE":0,"startpend":4,"endpend":4,"maxpeers":32,"newcoin":"SUPERNET","name":"SUPERNET","netmagic":"cc55d9d4","p2p":assetChainPorts.SUPERNET - 1,"rpc":assetChainPorts.SUPERNET}) : {}, 'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {'coin':'SUPERNET','conf':'SUPERNET.conf','path':confpath,'RELAY':-1,'VALIDATE':0,'startpend':4,'endpend':4,'maxpeers':32,'newcoin':'SUPERNET','name':'SUPERNET','netmagic':'cc55d9d4','p2p':assetChainPorts.SUPERNET - 1,'rpc':assetChainPorts.SUPERNET}) : {},
'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"maxpeers":32,"newcoin":"SUPERNET","name":"SUPERNET","netmagic":"cc55d9d4","p2p":assetChainPorts.SUPERNET - 1,"rpc":assetChainPorts.SUPERNET}) 'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'maxpeers':32,'newcoin':'SUPERNET','name':'SUPERNET','netmagic':'cc55d9d4','p2p':assetChainPorts.SUPERNET - 1,'rpc':assetChainPorts.SUPERNET})
}, },
'REVS': { 'REVS': {
'name': 'REVS', 'name': 'REVS',
'supply': 1300000, 'supply': 1300000,
'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {"coin":"REVS","conf":"REVS.conf","path":confpath,"RELAY":-1,"VALIDATE":0,"startpend":4,"endpend":4,"maxpeers":8,"newcoin":"REVS","name":"REVS","netmagic":"905c3498","p2p":assetChainPorts.REVS - 1,"rpc":assetChainPorts.REVS}) : {}, 'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {'coin':'REVS','conf':'REVS.conf','path':confpath,'RELAY':-1,'VALIDATE':0,'startpend':4,'endpend':4,'maxpeers':8,'newcoin':'REVS','name':'REVS','netmagic':'905c3498','p2p':assetChainPorts.REVS - 1,'rpc':assetChainPorts.REVS}) : {},
'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"maxpeers":8,"newcoin":"REVS","name":"REVS","netmagic":"905c3498","p2p":assetChainPorts.REVS - 1,"rpc":assetChainPorts.REVS}) 'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'maxpeers':8,'newcoin':'REVS','name':'REVS','netmagic':'905c3498','p2p':assetChainPorts.REVS - 1,'rpc':assetChainPorts.REVS})
}, },
'WLC': { 'WLC': {
'name': 'WIRELESS', 'name': 'WIRELESS',
'supply': 210000000, 'supply': 210000000,
'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {"coin":"WLC","conf":"WLC.conf","path":confpath,"RELAY":-1,"VALIDATE":0,"startpend":4,"endpend":4,"maxpeers":8,"newcoin":"WLC","name":"WIRELESS","netmagic":"62071ed3","p2p":assetChainPorts.WIRELESS - 1,"rpc":assetChainPorts.WIRELESS}) : {}, 'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {'coin':'WLC','conf':'WLC.conf','path':confpath,'RELAY':-1,'VALIDATE':0,'startpend':4,'endpend':4,'maxpeers':8,'newcoin':'WLC','name':'WIRELESS','netmagic':'62071ed3','p2p':assetChainPorts.WIRELESS - 1,'rpc':assetChainPorts.WIRELESS}) : {},
'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"maxpeers":8,"newcoin":"WLC","name":"WIRELESS","netmagic":"62071ed3","p2p":assetChainPorts.WIRELESS - 1,"rpc":assetChainPorts.WIRELESS}) 'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'maxpeers':8,'newcoin':'WLC','name':'WIRELESS','netmagic':'62071ed3','p2p':assetChainPorts.WIRELESS - 1,'rpc':assetChainPorts.WIRELESS})
}, },
'PANGEA': { 'PANGEA': {
'name': 'PANGEA', 'name': 'PANGEA',
'supply': 999999, 'supply': 999999,
'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {"coin":"PANGEA","conf":"PANGEA.conf","path":confpath,"RELAY":-1,"VALIDATE":1,"startpend":4,"endpend":4,"maxpeers":8,"newcoin":"PANGEA","name":"PANGEA","netmagic":"5fa45ae8","p2p":assetChainPorts.PANGEA - 1,"rpc":assetChainPorts.PANGEA}) : {}, 'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {'coin':'PANGEA','conf':'PANGEA.conf','path':confpath,'RELAY':-1,'VALIDATE':1,'startpend':4,'endpend':4,'maxpeers':8,'newcoin':'PANGEA','name':'PANGEA','netmagic':'5fa45ae8','p2p':assetChainPorts.PANGEA - 1,'rpc':assetChainPorts.PANGEA}) : {},
'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"maxpeers":8,"newcoin":"PANGEA","name":"PANGEA","netmagic":"5fa45ae8","p2p":assetChainPorts.PANGEA - 1,"rpc":assetChainPorts.PANGEA}) 'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'maxpeers':8,'newcoin':'PANGEA','name':'PANGEA','netmagic':'5fa45ae8','p2p':assetChainPorts.PANGEA - 1,'rpc':assetChainPorts.PANGEA})
}, },
'DEX': { 'DEX': {
'name': 'DEX', 'name': 'DEX',
'supply': 999999, 'supply': 999999,
'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {"coin":"DEX","conf":"DEX.conf","path":confpath,"RELAY":-1,"VALIDATE":1,"startpend":4,"endpend":4,"maxpeers":8,"newcoin":"DEX","name":"DEX","netmagic":"f2ae0516","p2p":assetChainPorts.DEX - 1,"rpc":assetChainPorts.DEX}) : {}, 'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {'coin':'DEX','conf':'DEX.conf','path':confpath,'RELAY':-1,'VALIDATE':1,'startpend':4,'endpend':4,'maxpeers':8,'newcoin':'DEX','name':'DEX','netmagic':'f2ae0516','p2p':assetChainPorts.DEX - 1,'rpc':assetChainPorts.DEX}) : {},
'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"maxpeers":8,"newcoin":"DEX","name":"DEX","netmagic":"f2ae0516","p2p":assetChainPorts.DEX - 1,"rpc":assetChainPorts.DEX}) 'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'maxpeers':8,'newcoin':'DEX','name':'DEX','netmagic':'f2ae0516','p2p':assetChainPorts.DEX - 1,'rpc':assetChainPorts.DEX})
}, },
'JUMBLR': { 'JUMBLR': {
'name': 'JUMBLR', 'name': 'JUMBLR',
'supply': 999999, 'supply': 999999,
'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {"coin":"JUMBLR","conf":"JUMBLR.conf","path":confpath,"RELAY":-1,"VALIDATE":1,"startpend":4,"endpend":4,"maxpeers":8,"newcoin":"JUMBLR","name":"JUMBLR","netmagic":"7223759e","p2p":assetChainPorts.JUMBLR - 1,"rpc":assetChainPorts.JUMBLR}) : {}, 'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {'coin':'JUMBLR','conf':'JUMBLR.conf','path':confpath,'RELAY':-1,'VALIDATE':1,'startpend':4,'endpend':4,'maxpeers':8,'newcoin':'JUMBLR','name':'JUMBLR','netmagic':'7223759e','p2p':assetChainPorts.JUMBLR - 1,'rpc':assetChainPorts.JUMBLR}) : {},
'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"maxpeers":8,"newcoin":"JUMBLR","name":"JUMBLR","netmagic":"7223759e","p2p":assetChainPorts.JUMBLR - 1,"rpc":assetChainPorts.JUMBLR}) 'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'maxpeers':8,'newcoin':'JUMBLR','name':'JUMBLR','netmagic':'7223759e','p2p':assetChainPorts.JUMBLR - 1,'rpc':assetChainPorts.JUMBLR})
}, },
'BET': { 'BET': {
'name': 'BET', 'name': 'BET',
'supply': 999999, 'supply': 999999,
'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {"coin":"BET","conf":"BET.conf","path":confpath,"RELAY":-1,"VALIDATE":1,"startpend":4,"endpend":4,"maxpeers":8,"newcoin":"BET","name":"BET","netmagic":"6b9e3e1b","p2p":assetChainPorts.BET - 1,"rpc":assetChainPorts.BET}) : {}, 'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {'coin':'BET','conf':'BET.conf','path':confpath,'RELAY':-1,'VALIDATE':1,'startpend':4,'endpend':4,'maxpeers':8,'newcoin':'BET','name':'BET','netmagic':'6b9e3e1b','p2p':assetChainPorts.BET - 1,'rpc':assetChainPorts.BET}) : {},
'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"maxpeers":8,"newcoin":"BET","name":"BET","netmagic":"6b9e3e1b","p2p":assetChainPorts.BET - 1,"rpc":assetChainPorts.BET}) 'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'maxpeers':8,'newcoin':'BET','name':'BET','netmagic':'6b9e3e1b','p2p':assetChainPorts.BET - 1,'rpc':assetChainPorts.BET})
}, },
'CRYPTO': { 'CRYPTO': {
'name': 'CRYPTO', 'name': 'CRYPTO',
'supply': 999999, 'supply': 999999,
'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {"coin":"CRYPTO","conf":"CRYPTO.conf","path":confpath,"RELAY":-1,"VALIDATE":1,"startpend":4,"endpend":4,"maxpeers":8,"newcoin":"CRYPTO","name":"CRYPTO","netmagic":"fced9e2a","p2p":assetChainPorts.CRYPTO - 1,"rpc":assetChainPorts.CRYPTO}) : {}, 'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {'coin':'CRYPTO','conf':'CRYPTO.conf','path':confpath,'RELAY':-1,'VALIDATE':1,'startpend':4,'endpend':4,'maxpeers':8,'newcoin':'CRYPTO','name':'CRYPTO','netmagic':'fced9e2a','p2p':assetChainPorts.CRYPTO - 1,'rpc':assetChainPorts.CRYPTO}) : {},
'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"maxpeers":8,"newcoin":"CRYPTO","name":"CRYPTO","netmagic":"fced9e2a","p2p":assetChainPorts.CRYPTO - 1,"rpc":assetChainPorts.CRYPTO}) 'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'maxpeers':8,'newcoin':'CRYPTO','name':'CRYPTO','netmagic':'fced9e2a','p2p':assetChainPorts.CRYPTO - 1,'rpc':assetChainPorts.CRYPTO})
}, },
'HODL': { 'HODL': {
'name': 'HODL', 'name': 'HODL',
'supply': 9999999, 'supply': 9999999,
'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {"coin":"HODL","conf":"HODL.conf","path":confpath,"RELAY":-1,"VALIDATE":1,"startpend":4,"endpend":4,"maxpeers":8,"newcoin":"HODL","name":"HODL","netmagic":"9b13fb5f","p2p":assetChainPorts.HODL - 1,"rpc":assetChainPorts.HODL}) : {}, 'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {'coin':'HODL','conf':'HODL.conf','path':confpath,'RELAY':-1,'VALIDATE':1,'startpend':4,'endpend':4,'maxpeers':8,'newcoin':'HODL','name':'HODL','netmagic':'9b13fb5f','p2p':assetChainPorts.HODL - 1,'rpc':assetChainPorts.HODL}) : {},
'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"maxpeers":8,"newcoin":"HODL","name":"HODL","netmagic":"9b13fb5f","p2p":assetChainPorts.HODL - 1,"rpc":assetChainPorts.HODL}) 'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'maxpeers':8,'newcoin':'HODL','name':'HODL','netmagic':'9b13fb5f','p2p':assetChainPorts.HODL - 1,'rpc':assetChainPorts.HODL})
}, },
'SHARK': { 'SHARK': {
'name': 'SHARK', 'name': 'SHARK',
'supply': 1401, 'supply': 1401,
'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {"coin":"SHARK","conf":"SHARK.conf","path":confpath,"RELAY":-1,"VALIDATE":1,"startpend":4,"endpend":4,"maxpeers":8,"newcoin":"SHARK","name":"SHARK","netmagic":"54a5e30c","p2p":assetChainPorts.SHARK - 1,"rpc":assetChainPorts.SHARK}) : {}, 'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {'coin':'SHARK','conf':'SHARK.conf','path':confpath,'RELAY':-1,'VALIDATE':1,'startpend':4,'endpend':4,'maxpeers':8,'newcoin':'SHARK','name':'SHARK','netmagic':'54a5e30c','p2p':assetChainPorts.SHARK - 1,'rpc':assetChainPorts.SHARK}) : {},
'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"maxpeers":8,"newcoin":"SHARK","name":"SHARK","netmagic":"54a5e30c","p2p":assetChainPorts.SHARK - 1,"rpc":assetChainPorts.SHARK}) 'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'maxpeers':8,'newcoin':'SHARK','name':'SHARK','netmagic':'54a5e30c','p2p':assetChainPorts.SHARK - 1,'rpc':assetChainPorts.SHARK})
}, },
'BOTS': { 'BOTS': {
'name': 'BOTS', 'name': 'BOTS',
'supply': 999999, 'supply': 999999,
'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {"coin":"BOTS","conf":"BOTS.conf","path":confpath,"RELAY":-1,"VALIDATE":1,"startpend":4,"endpend":4,"maxpeers":8,"newcoin":"BOTS","name":"BOTS","netmagic":"5bec8cf7","p2p":assetChainPorts.BOTS - 1,"rpc":assetChainPorts.BOTS}) : {}, 'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {'coin':'BOTS','conf':'BOTS.conf','path':confpath,'RELAY':-1,'VALIDATE':1,'startpend':4,'endpend':4,'maxpeers':8,'newcoin':'BOTS','name':'BOTS','netmagic':'5bec8cf7','p2p':assetChainPorts.BOTS - 1,'rpc':assetChainPorts.BOTS}) : {},
'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"maxpeers":8,"newcoin":"BOTS","name":"BOTS","netmagic":"5bec8cf7","p2p":assetChainPorts.BOTS - 1,"rpc":assetChainPorts.BOTS}) 'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'maxpeers':8,'newcoin':'BOTS','name':'BOTS','netmagic':'5bec8cf7','p2p':assetChainPorts.BOTS - 1,'rpc':assetChainPorts.BOTS})
}, },
'MGW': { 'MGW': {
'name': 'MGW', 'name': 'MGW',
'supply': 999999, 'supply': 999999,
'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {"coin":"MGW","conf":"MGW.conf","path":confpath,"unitval":"20","zcash":1,"RELAY":-1,"VALIDATE":1,"startpend":4,"endpend":4,"maxpeers":8,"newcoin":"MGW","name":"MGW","netmagic":"6eea5dbb","p2p":assetChainPorts.MGW - 1,"rpc":assetChainPorts.MGW}) : {}, 'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {'coin':'MGW','conf':'MGW.conf','path':confpath,'unitval':'20','zcash':1,'RELAY':-1,'VALIDATE':1,'startpend':4,'endpend':4,'maxpeers':8,'newcoin':'MGW','name':'MGW','netmagic':'6eea5dbb','p2p':assetChainPorts.MGW - 1,'rpc':assetChainPorts.MGW}) : {},
'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,"unitval":"20","zcash":1,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"maxpeers":8,"newcoin":"MGW","name":"MGW","netmagic":"6eea5dbb","p2p":assetChainPorts.MGW - 1,"rpc":assetChainPorts.MGW}) 'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,'unitval':'20','zcash':1,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'maxpeers':8,'newcoin':'MGW','name':'MGW','netmagic':'6eea5dbb','p2p':assetChainPorts.MGW - 1,'rpc':assetChainPorts.MGW})
}, },
'MVP': { 'MVP': {
'name': 'MVP', 'name': 'MVP',
'supply': 1000000, 'supply': 1000000,
'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {"coin":"MVP","conf":"MVP.conf","path":confpath,"RELAY":-1,"VALIDATE":1,"startpend":4,"endpend":4,"services":129,"maxpeers":8,"newcoin":"MVP","name":"MVP","netmagic":"dd5ce076","p2p":11675,"rpc":11676}) : {}, 'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {'coin':'MVP','conf':'MVP.conf','path':confpath,'RELAY':-1,'VALIDATE':1,'startpend':4,'endpend':4,'services':129,'maxpeers':8,'newcoin':'MVP','name':'MVP','netmagic':'dd5ce076','p2p':11675,'rpc':11676}) : {},
'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"maxpeers":8,"newcoin":"MVP","name":"MVP","netmagic":"dd5ce076","p2p":11675,"rpc":11676}) 'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'maxpeers':8,'newcoin':'MVP','name':'MVP','netmagic':'dd5ce076','p2p':11675,'rpc':11676})
}, },
'KV': { 'KV': {
'name': 'KV', 'name': 'KV',
'supply': 1000000, 'supply': 1000000,
'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {"coin":"KV","conf":"KV.conf","path":confpath,"RELAY":-1,"VALIDATE":1,"startpend":4,"endpend":4,"maxpeers":8,"newcoin":"KV","name":"KV","netmagic":"b09a2d65","p2p":assetChainPorts.KV - 1,"rpc":assetChainPorts.KV}) : {}, 'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {'coin':'KV','conf':'KV.conf','path':confpath,'RELAY':-1,'VALIDATE':1,'startpend':4,'endpend':4,'maxpeers':8,'newcoin':'KV','name':'KV','netmagic':'b09a2d65','p2p':assetChainPorts.KV - 1,'rpc':assetChainPorts.KV}) : {},
'AddCoinDataVar': Object.assign(_acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"maxpeers":8,"newcoin":"KV","name":"KV","netmagic":"b09a2d65","p2p":assetChainPorts.KV - 1,"rpc":assetChainPorts.KV}) 'AddCoinDataVar': Object.assign(_acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'maxpeers':8,'newcoin':'KV','name':'KV','netmagic':'b09a2d65','p2p':assetChainPorts.KV - 1,'rpc':assetChainPorts.KV})
}, },
'CEAL': { 'CEAL': {
'name': 'CEAL', 'name': 'CEAL',
'supply': 366666666, 'supply': 366666666,
'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {"coin":"CEAL","conf":"CEAL.conf","path":confpath,"RELAY":-1,"VALIDATE":1,"startpend":4,"endpend":4,"maxpeers":8,"newcoin":"CEAL","name":"CEAL","netmagic":"09e51af8","p2p":assetChainPorts.CEAL - 1,"rpc":assetChainPorts.CEAL}) : {}, 'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {'coin':'CEAL','conf':'CEAL.conf','path':confpath,'RELAY':-1,'VALIDATE':1,'startpend':4,'endpend':4,'maxpeers':8,'newcoin':'CEAL','name':'CEAL','netmagic':'09e51af8','p2p':assetChainPorts.CEAL - 1,'rpc':assetChainPorts.CEAL}) : {},
'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"maxpeers":8,"newcoin":"CEAL","name":"CEAL","netmagic":"09e51af8","p2p":assetChainPorts.CEAL - 1,"rpc":assetChainPorts.CEAL}) 'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'maxpeers':8,'newcoin':'CEAL','name':'CEAL','netmagic':'09e51af8','p2p':assetChainPorts.CEAL - 1,'rpc':assetChainPorts.CEAL})
}, },
'MESH': { 'MESH': {
'name': 'MESH', 'name': 'MESH',
'supply': 1000007, 'supply': 1000007,
'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {"coin":"MESH","conf":"MESH.conf","path":confpath,"RELAY":-1,"VALIDATE":1,"startpend":4,"endpend":4,"maxpeers":8,"newcoin":"MESH","name":"MESH","netmagic":"f0265c67","p2p":assetChainPorts.MESH - 1,"rpc":assetChainPorts.MESH}) : {}, 'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {'coin':'MESH','conf':'MESH.conf','path':confpath,'RELAY':-1,'VALIDATE':1,'startpend':4,'endpend':4,'maxpeers':8,'newcoin':'MESH','name':'MESH','netmagic':'f0265c67','p2p':assetChainPorts.MESH - 1,'rpc':assetChainPorts.MESH}) : {},
'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"maxpeers":8,"newcoin":"MESH","name":"MESH","netmagic":"f0265c67","p2p":assetChainPorts.MESH - 1,"rpc":assetChainPorts.MESH}) 'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'maxpeers':8,'newcoin':'MESH','name':'MESH','netmagic':'f0265c67','p2p':assetChainPorts.MESH - 1,'rpc':assetChainPorts.MESH})
}, },
'COQUI': { 'COQUI': {
'name': 'COQUI', 'name': 'COQUI',
'supply': 72000000, 'supply': 72000000,
'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {"coin":"COQUI","conf":"COQUI.conf","path":confpath,"RELAY":-1,"VALIDATE":1,"startpend":4,"endpend":4,"maxpeers":8,"newcoin":"COQUI","name":"COQUI","netmagic":"4cbd5ef4","p2p":assetChainPorts.COQUI - 1,"rpc":assetChainPorts.COQUI}) : {}, 'AddCoinData': confpath ? Object.assign({}, _acPayloadOrigin, {'coin':'COQUI','conf':'COQUI.conf','path':confpath,'RELAY':-1,'VALIDATE':1,'startpend':4,'endpend':4,'maxpeers':8,'newcoin':'COQUI','name':'COQUI','netmagic':'4cbd5ef4','p2p':assetChainPorts.COQUI - 1,'rpc':assetChainPorts.COQUI}) : {},
'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,"RELAY":mode,"VALIDATE":mode,"startpend":tmpPendValue,"endpend":tmpPendValue,"maxpeers":8,"newcoin":"COQUI","name":"COQUI","netmagic":"4cbd5ef4","p2p":assetChainPorts.COQUI - 1,"rpc":assetChainPorts.COQUI}) 'AddCoinDataVar': Object.assign({}, _acPayloadOrigin, {'userpass':tmpIguanaRPCAuth,'RELAY':mode,'VALIDATE':mode,'startpend':tmpPendValue,'endpend':tmpPendValue,'maxpeers':8,'newcoin':'COQUI','name':'COQUI','netmagic':'4cbd5ef4','p2p':assetChainPorts.COQUI - 1,'rpc':assetChainPorts.COQUI})
} }
}; };

52
react/src/components/dashboard/about/about.js

@ -1,71 +1,59 @@
import React from "react"; import React from "react";
import { translate } from '../../../translate/translate';
class About extends React.Component { class About extends React.Component {
render() { render() {
return ( return (
<div className="page margin-left-0"> <div className="page margin-left-0">
<div className="page-content"> <div className="page-content">
<h2>About Agama</h2> <h2>{ translate('ABOUT.ABOUT_AGAMA') }</h2>
<p> <p>{ translate('ABOUT.AGAMA_MODES') }</p>
Agama Wallet is a desktop app that you can use to manage multiple cryptocurrency wallets. When you set up a
wallet, you can configure it to operate in one of the following modes:
</p>
<ul> <ul>
<li> <li>
<span className="font-weight-600">Basilisk Mode</span>:&nbsp; <span className="font-weight-600">{ translate('INDEX.BASILISK_MODE') }</span>:&nbsp;
Doesn't download the blockchain. Slightly slower { translate('ABOUT.BASILISK_MODE_DESC') }
transaction performance.
</li> </li>
<li> <li>
<span className="font-weight-600">Full Mode</span>:&nbsp; <span className="font-weight-600">{ translate('INDEX.FULL_MODE') }</span>:&nbsp;
Downloads the full blockchain, which can take a { translate('ABOUT.FULL_MODE_DESC') }
while. Good transaction performance.
</li> </li>
<li> <li>
<span className="font-weight-600">Native Mode</span>:&nbsp; <span className="font-weight-600">{ translate('INDEX.NATIVE_MODE') }</span>:&nbsp;
Only available for a few currencies. Like 'Full { translate('ABOUT.NATIVE_MODE_DESC') }
Mode' but provides advanced functionality.
</li> </li>
</ul> </ul>
Agama includes the following capabilities: { translate('ABOUT.AGAMA_CAPABILITIES') }
<ul> <ul>
<li> <li>
<span className="font-weight-600">BarterDEX</span>:&nbsp; <span className="font-weight-600">BarterDEX</span>:&nbsp;
Easily exchange cryptocurrencies via a { translate('ABOUT.BARTER_DEX_DESC') }&nbsp;
shapeshift-like service.&nbsp;
<a href="https://supernet.org/en/technology/whitepapers/easydex-a-practical-native-dex" target="_blank"> <a href="https://supernet.org/en/technology/whitepapers/easydex-a-practical-native-dex" target="_blank">
(BarterDEX A Practical Native DEX) (BarterDEX A Practical Native DEX)
</a> </a>
</li> </li>
<li> <li>
<span className="font-weight-600">Atomic Exporer</span>: &nbsp; <span className="font-weight-600">Atomic Exporer</span>: &nbsp;
A universal local explorer ensures you don't { translate('ABOUT.ATOMIC_EXPLORER_DESC') }
have query information from a centralized
server.
</li> </li>
</ul> </ul>
<span className="font-weight-600"> <span className="font-weight-600">{ translate('ABOUT.AGAMA_NOTE') }</span>
Note: Agama Wallet is still in development. It is safe to use,
but you should make proper backups. We do not recommend using it as the primarily wallet for your cryptocurrencies.
</span>
<br/><br/> <br/><br/>
<div className="font-weight-600">Testers</div> <div className="font-weight-600">{ translate('ABOUT.TESTERS') }</div>
You can help us test Agama. Just <a target="_blank" href="https://supernet.org/en/products/agama-wallet">download and install the latest release</a>. { translate('ABOUT.TESTERS_P1') } <a target="_blank" href="https://supernet.org/en/products/agama-wallet">{ translate('ABOUT.TESTERS_P2') }</a>.
Then, report any bugs you encounter to our developers on the <a target="_blank" href="https://sprnt.slack.com/messages/C0HT9MH96/">#testing-agama</a> Slack channel. { translate('ABOUT.TESTERS_P3') } <a target="_blank" href="https://sprnt.slack.com/messages/C0HT9MH96/">#testing-agama</a> Slack channel.
Your help is greatly appreciated! { translate('ABOUT.TESTERS_P4') }
<br /><br /> <br /><br />
Agama also supports the following desktop apps: { translate('ABOUT.AGAMA_DAPPS') }
<ul> <ul>
<li> <li>
<span className="font-weight-600">Jumblr</span>: A decentralized Bitcoin blockchain tumbler for privacy <span className="font-weight-600">Jumblr</span>: { translate('ABOUT.JUMBLR_DESC') }
and lower fees.
</li> </li>
<li> <li>
<span className="font-weight-600">BarterDEX</span>: A decentralized coin exchange. <span className="font-weight-600">BarterDEX</span>: { translate('ABOUT.BARTER_DEX_DESC_ALT') }
</li> </li>
</ul> </ul>
</div> </div>

375
react/src/components/dashboard/atomic/atomic.js

@ -26,55 +26,55 @@ class Atomic extends React.Component {
updateSelectedAPI(e) { updateSelectedAPI(e) {
this.setState(Object.assign({}, this.state, { this.setState(Object.assign({}, this.state, {
'api': e.target.value, api: e.target.value,
})); }));
} }
updateSelectedCoin(e) { updateSelectedCoin(e) {
this.setState(Object.assign({}, this.state, { this.setState(Object.assign({}, this.state, {
'coin': e.target.value.split('|')[0], coin: e.target.value.split('|')[0],
})); }));
} }
updateInput(e) { updateInput(e) {
this.setState(Object.assign({}, this.state, { this.setState(Object.assign({}, this.state, {
'input': e.target.value, input: e.target.value,
})); }));
} }
getAtomicData() { getAtomicData() {
const tmpIguanaRPCAuth = `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`; const tmpIguanaRPCAuth = `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`;
let ExplorerInputData; let explorerInputData;
const _coin = this.state.coin; const _coin = this.state.coin;
const _input = this.state.input; const _input = this.state.input;
switch (this.state.api) { switch (this.state.api) {
case 'history': case 'history':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'timeout': 20000, timeout: 20000,
'agent': 'basilisk', agent: 'basilisk',
'method': 'history', method: 'history',
'vals': { vals: {
'coin': _coin, coin: _coin,
'addresses': [ _input ], addresses: [ _input ],
} }
}; };
break; break;
case 'getbalance': case 'getbalance':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'coin': _coin, coin: _coin,
'method': 'getbalance', method: 'getbalance',
'params': [ _input ], params: [ _input ],
}; };
break; break;
case 'listunspent': case 'listunspent':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'coin': _coin, coin: _coin,
'method': 'listunspent', method: 'listunspent',
'params': [ params: [
1, 1,
9999999, 9999999,
[ _input ], [ _input ],
@ -82,253 +82,254 @@ class Atomic extends React.Component {
}; };
break; break;
case 'txid': case 'txid':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'coin': _coin, coin: _coin,
'method': 'getrawtransaction', method: 'getrawtransaction',
'params': [ _input ], params: [ _input ],
}; };
break; break;
case 'blockash': case 'blockash':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'coin': _coin, coin: _coin,
'agent': 'bitcoinrpc', agent: 'bitcoinrpc',
'method': 'getblockhash', method: 'getblockhash',
'height': _input, height: _input,
}; };
break; break;
case 'chaintip': case 'chaintip':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'coin': _coin, coin: _coin,
'agent': 'bitcoinrpc', agent: 'bitcoinrpc',
'method': 'getbestblockhash', method: 'getbestblockhash',
}; };
break; break;
case 'activehandle': case 'activehandle':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': 'SuperNET', agent: 'SuperNET',
'method': 'activehandle', method: 'activehandle',
}; };
break; break;
case 'gettransaction': case 'gettransaction':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'coin': _coin, coin: _coin,
'agent': 'bitcoinrpc', agent: 'bitcoinrpc',
'method': 'gettransaction', method: 'gettransaction',
'txid': _input, txid: _input,
}; };
break; break;
case 'dex_getinfo': case 'dex_getinfo':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': 'dex', agent: 'dex',
'method': 'getinfo', method: 'getinfo',
'symbol': _coin, symbol: _coin,
}; };
break; break;
case 'dex_getnotaries': case 'dex_getnotaries':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': 'dex', agent: 'dex',
'method': 'getnotaries', method: 'getnotaries',
'symbol': _coin, symbol: _coin,
}; };
break; break;
case 'dex_alladdresses': case 'dex_alladdresses':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': 'dex', agent: 'dex',
'method': 'alladdresses', method: 'alladdresses',
'symbol': _coin, symbol: _coin,
}; };
break; break;
case 'dex_importaddress': case 'dex_importaddress':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': 'dex', agent: 'dex',
'method': 'importaddress', method: 'importaddress',
'address': _input, address: _input,
'symbol': _coin, symbol: _coin,
}; };
break; break;
case 'dex_checkaddress': case 'dex_checkaddress':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': 'dex', agent: 'dex',
'method': 'checkaddress', method: 'checkaddress',
'ddress': _input, address: _input,
'symbol': _coin, symbol: _coin,
}; };
break; break;
case 'dex_validateaddress': case 'dex_validateaddress':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': 'dex', agent: 'dex',
'method': 'validateaddress', method: 'validateaddress',
'address': _input, address: _input,
'symbol': _coin, symbol: _coin,
}; };
break; break;
case 'dex_getbestblockhash': case 'dex_getbestblockhash':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': 'dex', agent: 'dex',
'method': 'getbestblockhash', method: 'getbestblockhash',
'symbol': _coin, symbol: _coin,
}; };
break; break;
case 'dex_listtransactions': case 'dex_listtransactions':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': 'dex', agent: 'dex',
'method': 'listtransactions', method: 'listtransactions',
'address': _input, address: _input,
'count': 100, count: 100,
'skip': 0, skip: 0,
'symbol': _coin, symbol: _coin,
}; };
break; break;
case 'dex_listtransactions2': case 'dex_listtransactions2':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': 'dex', agent: 'dex',
'method': 'listtransactions2', method: 'listtransactions2',
'address': _input, address: _input,
'count': 100, count: 100,
'skip': 0, skip: 0,
'symbol': _coin, symbol: _coin,
}; };
break; break;
case 'dex_listunspent': case 'dex_listunspent':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': 'dex', agent: 'dex',
'method': 'listunspent', method: 'listunspent',
'address': _input, address: _input,
'symbol': _coin, symbol: _coin,
}; };
break; break;
case 'dex_listspent': case 'dex_listspent':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': 'dex', agent: 'dex',
'method': 'listspent', method: 'listspent',
'address': _input, address: _input,
'symbol': _coin, symbol: _coin,
}; };
break; break;
case 'dex_listunspent2': case 'dex_listunspent2':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': 'dex', agent: 'dex',
'method': 'listunspent2', method: 'listunspent2',
'address': _input, address: _input,
'symbol': _coin, symbol: _coin,
}; };
break; break;
case 'dex_getblockhash': case 'dex_getblockhash':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': 'dex', agent: 'dex',
'method': 'getblockhash', method: 'getblockhash',
'height': 100, height: 100,
'symbol': _coin, symbol: _coin,
}; };
break; break;
case 'dex_getblock': case 'dex_getblock':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': 'dex', agent: 'dex',
'method': 'getblock', method: 'getblock',
'hash': _input, hash: _input,
'symbol': _coin, symbol: _coin,
}; };
break; break;
case 'dex_gettxin': case 'dex_gettxin':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': 'dex', agent: 'dex',
'method': 'gettxin', method: 'gettxin',
'vout': 0, vout: 0,
'txid': _input, txid: _input,
'symbol': _coin, symbol: _coin,
}; };
break; break;
case 'dex_gettxout': case 'dex_gettxout':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': 'dex', agent: 'dex',
'method': 'gettxout', method: 'gettxout',
'vout': 0, vout: 0,
'txid': _input, txid: _input,
'symbol': _coin, symbol: _coin,
}; };
break; break;
case 'dex_gettransaction': case 'dex_gettransaction':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': 'dex', agent: 'dex',
'method': 'gettransaction', method: 'gettransaction',
'txid': _input, txid: _input,
'symbol': _coin, symbol: _coin,
}; };
break; break;
case 'dex_getbalance': case 'dex_getbalance':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': 'dex', agent: 'dex',
'method': 'getbalance', method: 'getbalance',
'address': _input, address: _input,
'symbol': _coin, symbol: _coin,
}; };
break; break;
case 'dex_getsupply': case 'dex_getsupply':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': 'dex', agent: 'dex',
'method': 'getbalance', method: 'getbalance',
'address': '*', address: '*',
'symbol': _coin, symbol: _coin,
'timeout': 600000, timeout: 600000,
}; };
break; break;
case 'dex_sendrawtransaction': case 'dex_sendrawtransaction':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': 'dex', agent: 'dex',
'method': 'sendrawtransaction', method: 'sendrawtransaction',
'signedtx': _input, signedtx: _input,
'symbol': _coin, symbol: _coin,
}; };
break; break;
case 'basilisk_refresh': case 'basilisk_refresh':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': 'basilisk', agent: 'basilisk',
'method': 'refresh', method: 'refresh',
'address': _input, address: _input,
'symbol': _coin, symbol: _coin,
'timeout': 600000, timeout: 600000,
}; };
break; break;
case 'jumblr_status': case 'jumblr_status':
ExplorerInputData = { explorerInputData = {
'userpass': tmpIguanaRPCAuth, userpass: tmpIguanaRPCAuth,
'agent': 'jumblr', agent: 'jumblr',
'method': 'status', method: 'status',
}; };
break; break;
} }
Store.dispatch(atomic(ExplorerInputData)); Store.dispatch(atomic(explorerInputData));
} }
componentWillReceiveProps(props) { componentWillReceiveProps(props) {
if (props && props.Atomic.response) { if (props &&
props.Atomic.response) {
const _api = this.state.api; const _api = this.state.api;
const _propsAtomicRes = props.Atomic.response; const _propsAtomicRes = props.Atomic.response;
@ -337,18 +338,18 @@ class Atomic extends React.Component {
_api === 'dex_sendrawtransaction' || _api === 'dex_sendrawtransaction' ||
_api === 'dex_getblockhash') { _api === 'dex_getblockhash') {
this.setState(Object.assign({}, this.state, { this.setState(Object.assign({}, this.state, {
'output': _propsAtomicRes, output: _propsAtomicRes,
})); }));
} else { } else {
this.setState(Object.assign({}, this.state, { this.setState(Object.assign({}, this.state, {
'output': JSON.stringify(_propsAtomicRes, null, '\t'), output: JSON.stringify(_propsAtomicRes, null, '\t'),
})); }));
} }
if (_propsAtomicRes.error === 'less than required responses') { if (_propsAtomicRes.error === 'less than required responses') {
Store.dispatch( Store.dispatch(
triggerToaster( triggerToaster(
'Basilisk connection error', translate('TOASTR.BASILISK_CONN_ERROR'),
translate('TOASTR.SERVICE_NOTIFICATION'), translate('TOASTR.SERVICE_NOTIFICATION'),
'error' 'error'
) )

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

@ -5,7 +5,7 @@ import AddCoinOptionsCrypto from '../../addcoin/addcoinOptionsCrypto';
import AddCoinOptionsAC from '../../addcoin/addcoinOptionsAC'; import AddCoinOptionsAC from '../../addcoin/addcoinOptionsAC';
import AddCoinOptionsACFiat from '../../addcoin/addcoinOptionsACFiat'; import AddCoinOptionsACFiat from '../../addcoin/addcoinOptionsACFiat';
const AtomicRender = function () { const AtomicRender = function() {
return ( return (
<div className="page margin-left-0 full-height"> <div className="page margin-left-0 full-height">
<div className="page-content"> <div className="page-content">
@ -32,7 +32,7 @@ const AtomicRender = function () {
<select <select
className="form-control form-material" className="form-control form-material"
onChange={ this.updateSelectedAPI }> onChange={ this.updateSelectedAPI }>
<option value="">-{ translate('ATOMIC.SELECT_COMMAND') }-</option> <option value="">{ translate('ATOMIC.SELECT_COMMAND') }</option>
{ this.renderAtomicOptions() } { this.renderAtomicOptions() }
</select> </select>
</div> </div>

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

@ -79,7 +79,7 @@ class ClaimInterestModal extends React.Component {
} else if (json.result && json.result.length && json.result.length === 64) { } else if (json.result && json.result.length && json.result.length === 64) {
Store.dispatch( Store.dispatch(
triggerToaster( triggerToaster(
`Your full balance is sent to address ${this.state.transactionsList[0].address}. Check back your new balance in a few minutes.`, `translate('TOASTR.CLAIM_INTEREST_BALANCE_SENT_P1') ${this.state.transactionsList[0].address}. translate('TOASTR.CLAIM_INTEREST_BALANCE_SENT_P2')`,
translate('TOASTR.WALLET_NOTIFICATION'), translate('TOASTR.WALLET_NOTIFICATION'),
'success', 'success',
false false
@ -90,7 +90,8 @@ class ClaimInterestModal extends React.Component {
} }
checkTransactionsListLength() { checkTransactionsListLength() {
if (this.state.transactionsList && this.state.transactionsList.length) { if (this.state.transactionsList &&
this.state.transactionsList.length) {
return true; return true;
} else if (!this.state.transactionsList || !this.state.transactionsList.length) { } else if (!this.state.transactionsList || !this.state.transactionsList.length) {
return false; return false;
@ -104,7 +105,7 @@ class ClaimInterestModal extends React.Component {
} }
copyTxId(txid) { copyTxId(txid) {
Store.dispatch(copyString(txid, 'Transaction ID copied')); Store.dispatch(copyString(txid, translate('TOASTR.TXID_COPIED')));
} }
claimInterestTableRender() { claimInterestTableRender() {

25
react/src/components/dashboard/claimInterestModal/claimInterestModal.render.js

@ -8,7 +8,8 @@ export const _ClaimInterestTableRender = function() {
let _items = []; let _items = [];
for (let i = 0; i < _transactionsList.length; i++) { for (let i = 0; i < _transactionsList.length; i++) {
if ((_transactionsList[i].interest === 0 && this.state.showZeroInterest) || (_transactionsList[i].amount > 0 && _transactionsList[i].interest > 0)) { if ((_transactionsList[i].interest === 0 && this.state.showZeroInterest) ||
(_transactionsList[i].amount > 0 && _transactionsList[i].interest > 0)) {
_items.push( _items.push(
<tr key={ `${_transactionsList[i].txid}${_transactionsList[i].address}` }> <tr key={ `${_transactionsList[i].txid}${_transactionsList[i].address}` }>
<td> <td>
@ -38,7 +39,7 @@ export const _ClaimInterestTableRender = function() {
return ( return (
<span> <span>
<div className="padding-bottom-20"> <div className="padding-bottom-20">
<strong>Requirements to accrue interest:</strong> locktime field is set and amount is greater than <strong>10 KMD</strong> <strong>{ translate('CLAIM_INTEREST.REQ_P1') }:</strong> { translate('CLAIM_INTEREST.REQ_P2') } <strong>10 KMD</strong>
</div> </div>
<div className="text-left padding-top-10 padding-bottom-10"> <div className="text-left padding-top-10 padding-bottom-10">
<label className="switch"> <label className="switch">
@ -59,16 +60,16 @@ export const _ClaimInterestTableRender = function() {
type="button" type="button"
className="btn btn-success waves-effect waves-light claim-btn" className="btn btn-success waves-effect waves-light claim-btn"
onClick={ () => this.claimInterest() }> onClick={ () => this.claimInterest() }>
<i className="icon fa-dollar"></i> Claim interest <i className="icon fa-dollar"></i> { translate('CLAIM_INTEREST.CLAIM_INTEREST') }
</button> </button>
<div className="table-scroll"> <div className="table-scroll">
<table className="table table-hover dataTable table-striped"> <table className="table table-hover dataTable table-striped">
<thead> <thead>
<tr> <tr>
<th></th> <th></th>
<th>Address</th> <th>{ translate('INDEX.ADDRESS') }</th>
<th>Amount</th> <th>{ translate('INDEX.AMOUNT') }</th>
<th>Interest</th> <th>{ translate('INDEX.Address') }</th>
<th>Locktime</th> <th>Locktime</th>
</tr> </tr>
</thead> </thead>
@ -78,9 +79,9 @@ export const _ClaimInterestTableRender = function() {
<tfoot> <tfoot>
<tr> <tr>
<th></th> <th></th>
<th>Address</th> <th>{ translate('INDEX.ADDRESS') }</th>
<th>Amount</th> <th>{ translate('INDEX.AMOUNT') }</th>
<th>Interest</th> <th>{ translate('INDEX.Address') }</th>
<th>Locktime</th> <th>Locktime</th>
</tr> </tr>
</tfoot> </tfoot>
@ -103,7 +104,7 @@ export const ClaimInterestModalRender = function() {
onClick={ this.closeModal }> onClick={ this.closeModal }>
<span>×</span> <span>×</span>
</button> </button>
<h4 className="modal-title white text-left">Claim interest</h4> <h4 className="modal-title white text-left">{ translate('INDEX.CLAIM_INTEREST') }</h4>
</div> </div>
<div className="modal-body"> <div className="modal-body">
<i <i
@ -112,13 +113,13 @@ export const ClaimInterestModalRender = function() {
<div className="animsition vertical-align fade-in"> <div className="animsition vertical-align fade-in">
<div className="page-content vertical-align-middle full-width"> <div className="page-content vertical-align-middle full-width">
{ this.state.isLoading && { this.state.isLoading &&
<span>Loading interest data...</span> <span>{ translate('INDEX.LOADING') }...</span>
} }
{ !this.state.isLoading && this.checkTransactionsListLength() && { !this.state.isLoading && this.checkTransactionsListLength() &&
<div>{ this.claimInterestTableRender() }</div> <div>{ this.claimInterestTableRender() }</div>
} }
{ !this.state.isLoading && !this.checkTransactionsListLength() && { !this.state.isLoading && !this.checkTransactionsListLength() &&
<div>No data</div> <div>{ translate('INDEX.NO_DATA') }</div>
} }
</div> </div>
</div> </div>

14
react/src/components/dashboard/coinTile/coinTile.js

@ -28,14 +28,14 @@ class CoinTile extends React.Component {
allCoins) { allCoins) {
modes.map(function(mode) { modes.map(function(mode) {
allCoins[mode].map(function(coin) { allCoins[mode].map(function(coin) {
const _coinMode = getModeInfo(mode), const _coinMode = getModeInfo(mode);
modecode = _coinMode.code, const modecode = _coinMode.code;
modetip = _coinMode.tip, const modetip = _coinMode.tip;
modecolor = _coinMode.color; const modecolor = _coinMode.color;
const _coinTitle = getCoinTitle(coin), const _coinTitle = getCoinTitle(coin);
coinlogo = _coinTitle.logo, const coinlogo = _coinTitle.logo;
coinname = _coinTitle.name; const coinname = _coinTitle.name;
items.push({ items.push({
coinlogo, coinlogo,

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

@ -158,11 +158,11 @@ class CoinTileItem extends React.Component {
if (_basiliskMainAddress) { if (_basiliskMainAddress) {
Store.dispatch(fetchNewCacheData({ Store.dispatch(fetchNewCacheData({
'pubkey': _activeHandle.pubkey, pubkey: _activeHandle.pubkey,
'allcoins': false, allcoins: false,
'coin': coin, coin: coin,
'calls': 'listtransactions:getbalance', calls: 'listtransactions:getbalance',
'address': _basiliskMainAddress, address: _basiliskMainAddress,
})); }));
const _iguanaActiveHandle = setInterval(() => { const _iguanaActiveHandle = setInterval(() => {
@ -171,11 +171,11 @@ class CoinTileItem extends React.Component {
const _basiliskCache = setInterval(() => { const _basiliskCache = setInterval(() => {
Store.dispatch(fetchNewCacheData({ Store.dispatch(fetchNewCacheData({
'pubkey': _activeHandle.pubkey, pubkey: _activeHandle.pubkey,
'allcoins': false, allcoins: false,
'coin': this.props.ActiveCoin.coin, coin: this.props.ActiveCoin.coin,
'calls': 'listtransactions:getbalance', calls: 'listtransactions:getbalance',
'address': _basiliskMainAddress, address: _basiliskMainAddress,
})); }));
}, BASILISK_CACHE_UPDATE_TIMEOUT); }, BASILISK_CACHE_UPDATE_TIMEOUT);

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

@ -16,12 +16,12 @@ const CoindDownModalRender = function () {
onClick={ this.dismiss }> onClick={ this.dismiss }>
<span>×</span> <span>×</span>
</button> </button>
<h4 className="modal-title white">{ this.props.ActiveCoin.coin === 'KMD' ? 'Komodod' : `Komodod / ${this.props.ActiveCoin.coin}` } is down!</h4> <h4 className="modal-title white">{ this.props.ActiveCoin.coin === 'KMD' ? 'Komodod' : `Komodod / ${this.props.ActiveCoin.coin}` } { translate('INDEX.IS_DOWN') }!</h4>
</div> </div>
<div className="modal-body"> <div className="modal-body">
<div className="vertical-align text-center"> <div className="vertical-align text-center">
<div className="page-content vertical-align-middle"> <div className="page-content vertical-align-middle">
<strong>Debug.log (last 50 lines)</strong> <strong>Debug.log ({ translate('INDEX.LAST_50_LINES') })</strong>
<div className="form-group form-material floating"> <div className="form-group form-material floating">
<textarea <textarea
className="form-control" className="form-control"

30
react/src/components/dashboard/jumblr/jumblr.js

@ -35,7 +35,7 @@ import '../../../util/crypto/gen/crypto-scrypt.js';
import { Bitcoin } from '../../../util/crypto/gen/bitcoin.js'; import { Bitcoin } from '../../../util/crypto/gen/bitcoin.js';
if (!window.jumblrPasshrase) { // gen jumblr passphrase if (!window.jumblrPasshrase) { // gen jumblr passphrase
window.jumblrPasshrase = 'jumblr ' + PassPhraseGenerator.generatePassPhrase(256); window.jumblrPasshrase = `jumblr ${PassPhraseGenerator.generatePassPhrase(256)}`;
} }
class Jumblr extends React.Component { class Jumblr extends React.Component {
@ -140,7 +140,7 @@ class Jumblr extends React.Component {
if (this.state.secretAddressCount === '') { if (this.state.secretAddressCount === '') {
Store.dispatch( Store.dispatch(
triggerToaster( triggerToaster(
'Enter a correct address count value', translate('TOASTR.ENTER_CORRECT_ADDR_COUNT'),
'Jumblr', 'Jumblr',
'error' 'error'
) )
@ -163,8 +163,11 @@ class Jumblr extends React.Component {
_genKeys = this.generateKeys(); _genKeys = this.generateKeys();
} }
setJumblrAddress(this.props.ActiveCoin.coin, 'secret', _genKeys.address) setJumblrAddress(
.then((json) => { this.props.ActiveCoin.coin,
'secret',
_genKeys.address
).then((json) => {
if (json.error && if (json.error &&
json.error.code) { json.error.code) {
Store.dispatch( Store.dispatch(
@ -183,7 +186,7 @@ class Jumblr extends React.Component {
if (_apiSuccessCount === this.state.secretAddressCount - 1) { if (_apiSuccessCount === this.state.secretAddressCount - 1) {
Store.dispatch( Store.dispatch(
triggerToaster( triggerToaster(
this.state.secretAddressCount > 1 ? 'Jumblr secret addresses are set' : 'Jumblr secret address is set', this.state.secretAddressCount > 1 ? translate('TOASTR.JUMBLR_SECRET_ADDRESSES_SET') : translate('TOASTR.JUMBLR_SECRET_ADDRESS_SET'),
'Jumblr', 'Jumblr',
'success' 'success'
) )
@ -236,7 +239,7 @@ class Jumblr extends React.Component {
_errors.prefix) { _errors.prefix) {
Store.dispatch( Store.dispatch(
triggerToaster( triggerToaster(
'Provided passphrase has wrong format', translate('TOASTR.JUMBLR_WRONG_PASSPHRASE'),
'Jumblr', 'Jumblr',
'error', 'error',
false false
@ -256,7 +259,7 @@ class Jumblr extends React.Component {
if (this.state.secretAddressCountImport === '') { if (this.state.secretAddressCountImport === '') {
Store.dispatch( Store.dispatch(
triggerToaster( triggerToaster(
'Enter a correct address count value', translate('TOASTR.ENTER_CORRECT_ADDR_COUNT'),
'Jumblr', 'Jumblr',
'error' 'error'
) )
@ -289,7 +292,7 @@ class Jumblr extends React.Component {
if (_apiSuccessCount === this.state.secretAddressCountImport - 1) { if (_apiSuccessCount === this.state.secretAddressCountImport - 1) {
Store.dispatch( Store.dispatch(
triggerToaster( triggerToaster(
this.state.secretAddressCountImport > 1 ? 'Jumblr secret addresses imported' : 'Jumblr secret address imported', this.state.secretAddressCountImport > 1 ? translate('TOASTR.JUMBLR_SECRET_ADDRESSES_IMPORTED') : translate('TOASTR.JUMBLR_SECRET_ADDRESS_IMPORTED'),
'Jumblr', 'Jumblr',
'success' 'success'
) )
@ -342,8 +345,11 @@ class Jumblr extends React.Component {
.then((json) => { .then((json) => {
if (!json.id && !json.result && !json.error) { if (!json.id && !json.result && !json.error) {
// console.warn('importPrivkey', json); // console.warn('importPrivkey', json);
setJumblrAddress(this.props.ActiveCoin.coin, 'deposit', _genKeys.address) setJumblrAddress(
.then((json) => { this.props.ActiveCoin.coin,
'deposit',
_genKeys.address
).then((json) => {
if (json.error && if (json.error &&
json.error.code) { json.error.code) {
Store.dispatch( Store.dispatch(
@ -362,7 +368,7 @@ class Jumblr extends React.Component {
})); }));
Store.dispatch( Store.dispatch(
triggerToaster( triggerToaster(
'Jumblr deposit address is set', translate('TOASTR.JUMBLR_DEPOSIT_ADDRESS_SET'),
'Jumblr', 'Jumblr',
'success' 'success'
) )
@ -399,7 +405,7 @@ class Jumblr extends React.Component {
} }
copyPassphrase() { copyPassphrase() {
Store.dispatch(copyString(this.state.randomSeed, 'Passphrase copied')); Store.dispatch(copyString(this.state.randomSeed, translate('JUMBLR.PASSPHRASE_COPIED')));
} }
renderLB(_translationID) { renderLB(_translationID) {

110
react/src/components/dashboard/jumblr/jumblr.render.js

@ -74,14 +74,12 @@ export const JumblrRender = function() {
<span>×</span> <span>×</span>
</button> </button>
<span className="jumblr-header"> <span className="jumblr-header">
<i className="icon fa-paw"></i> About Jumblr <i className="icon fa-paw"></i> { translate('JUMBLR.ABOUT') }
</span> </span>
<br /> <br />
<p>{ translate('JUMBLR.JUMBLR_FUNCTIONS') }</p>
<p> <p>
Jumblr functions all locally which means no middle man is required to jumble your funds. You take control over the whole process. <strong>{ translate('JUMBLR.TIP') }:</strong> { translate('JUMBLR.TIP_DESC') }.
</p>
<p>
<strong>Tip:</strong> to achive maximum anonimity setup Jumblr node on a dedicated piece of hardware (laptop or VPS), use a separate IP address for main Jumblr node.
</p> </p>
</div> </div>
</div> </div>
@ -106,7 +104,7 @@ export const JumblrRender = function() {
<span <span
className="labelauty-unchecked" className="labelauty-unchecked"
style={{ display: this.state.jumblrMode === 'public' ? 'none' : 'inline-block' }}> style={{ display: this.state.jumblrMode === 'public' ? 'none' : 'inline-block' }}>
Public node { translate('JUMBLR.PUBLIC_NODE') }
</span> </span>
<span <span
className="labelauty-checked-image" className="labelauty-checked-image"
@ -114,7 +112,7 @@ export const JumblrRender = function() {
<span <span
className="labelauty-checked" className="labelauty-checked"
style={{ display: this.state.jumblrMode === 'public' ? 'inline-block' : 'none' }}> style={{ display: this.state.jumblrMode === 'public' ? 'inline-block' : 'none' }}>
Public node { translate('JUMBLR.PUBLIC_NODE') }
</span> </span>
</label> </label>
</div> </div>
@ -138,7 +136,7 @@ export const JumblrRender = function() {
<span <span
className="labelauty-unchecked" className="labelauty-unchecked"
style={{ display: this.state.jumblrMode === 'private' ? 'none' : 'inline-block' }}> style={{ display: this.state.jumblrMode === 'private' ? 'none' : 'inline-block' }}>
Private node { translate('JUMBLR.PRIVATE_NODE') }
</span> </span>
<span <span
className="labelauty-checked-image" className="labelauty-checked-image"
@ -146,7 +144,7 @@ export const JumblrRender = function() {
<span <span
className="labelauty-checked" className="labelauty-checked"
style={{ display: this.state.jumblrMode === 'private' ? 'inline-block' : 'none' }}> style={{ display: this.state.jumblrMode === 'private' ? 'inline-block' : 'none' }}>
Private node { translate('JUMBLR.PRIVATE_NODE') }
</span> </span>
</label> </label>
</div> </div>
@ -166,30 +164,22 @@ export const JumblrRender = function() {
<li <li
className={ this.state.activeTab === 0 ? 'active' : '' } className={ this.state.activeTab === 0 ? 'active' : '' }
onClick={ () => this.openTab(0) }> onClick={ () => this.openTab(0) }>
<a> <a>{ translate('JUMBLR.USING_JUMBLR') }</a>
{ translate('JUMBLR.USING_JUMBLR') }
</a>
</li> </li>
<li <li
className={ this.state.activeTab === 1 ? 'active' : '' } className={ this.state.activeTab === 1 ? 'active' : '' }
onClick={ () => this.openTab(1) }> onClick={ () => this.openTab(1) }>
<a> <a>{ translate('JUMBLR.DEPOSIT_ADDRESS') }</a>
Deposit address
</a>
</li> </li>
<li <li
className={ this.state.activeTab === 2 ? 'active' : '' } className={ this.state.activeTab === 2 ? 'active' : '' }
onClick={ () => this.openTab(2) }> onClick={ () => this.openTab(2) }>
<a> <a>{ translate('JUMBLR.SECRET_ADDRESS') }</a>
Secret address
</a>
</li> </li>
<li <li
className={ this.state.activeTab === 3 ? 'active' : '' } className={ this.state.activeTab === 3 ? 'active' : '' }
onClick={ () => this.openTab(3) }> onClick={ () => this.openTab(3) }>
<a> <a>{ translate('JUMBLR.DEPOSIT_FUNDS') }</a>
Deposit funds
</a>
</li> </li>
</ul> </ul>
<div className="tab-content padding-20"> <div className="tab-content padding-20">
@ -197,12 +187,12 @@ export const JumblrRender = function() {
<button <button
type="button" type="button"
className="btn btn-success waves-effect waves-light margin-top-20 btn-next" className="btn btn-success waves-effect waves-light margin-top-20 btn-next"
onClick={ () => this.openTab(1) }>Next</button> onClick={ () => this.openTab(1) }>{ translate('INDEX.NEXT') }</button>
<h5>How to use Jumblr</h5> <h5>{ translate('JUMBLR.HOW_TO_USE') }</h5>
<ul> <ul>
<li>Create deposit address</li> <li>{ translate('JUMBLR.CREATE_DEPOSIT_ADDRESS') }</li>
<li>Create secret address</li> <li>{ translate('JUMBLR.CREATE_SECRET_ADDRESS') }</li>
<li>Send funds to deposit address</li> <li>{ translate('JUMBLR.SEND_FUNDS_TO_DEPOSIT') }</li>
<li>{ translate('JUMBLR.KEEP_WALLET_OPEN') }</li> <li>{ translate('JUMBLR.KEEP_WALLET_OPEN') }</li>
<li>{ translate('JUMBLR.IMPORTANT_FUNDS') }</li> <li>{ translate('JUMBLR.IMPORTANT_FUNDS') }</li>
<li>{ translate('JUMBLR.LARGE_LOT') }</li> <li>{ translate('JUMBLR.LARGE_LOT') }</li>
@ -216,7 +206,7 @@ export const JumblrRender = function() {
<button <button
type="button" type="button"
className="btn btn-success waves-effect waves-light btn-next" className="btn btn-success waves-effect waves-light btn-next"
onClick={ () => this.openTab(2) }>Next</button> onClick={ () => this.openTab(2) }>{ translate('INDEX.NEXT') }</button>
<h5>{ translate('JUMBLR.FEW_SECURITY_NOTES') }</h5> <h5>{ translate('JUMBLR.FEW_SECURITY_NOTES') }</h5>
<div className="col-xs-12 nofloat"> <div className="col-xs-12 nofloat">
<ul className="padding-bottom-20"> <ul className="padding-bottom-20">
@ -231,15 +221,15 @@ export const JumblrRender = function() {
<div className="padding-bottom-30"> <div className="padding-bottom-30">
<div className="padding-bottom-20"> <div className="padding-bottom-20">
<p> <p>
<strong>Please write down your Jumblr passphrase and keept it safe.</strong> <strong>{ translate('JUMBLR.PLEASE_WRITE_DOWN_PASSPHRASE') }</strong>
</p> </p>
<p>This is your main recovery passphrase.</p> <p>{ translate('JUMBLR.THIS_IS_YOUR_MAIN_RECOVERY') }</p>
<p>All Jumblr addresses can be regenrated based on it.</p> <p>{ translate('JUMBLR.ALL_JUMBLR_ADDRESSES_CAN_BE') }</p>
<p> <p>
<strong>Tip:</strong> do not use smart editors to store your passphrase as they tend to add extra characters.<br />This may result in passphrase mismatch with the original passphrase. <strong>{ translate('JUMBLR.TIP') }:</strong> { translate('JUMBLR.DONT_USE_SMART_EDITORS') }
</p> </p>
</div> </div>
<label>Passphrase</label> <label>{ translate('INDEX.PASSPHRASE') }</label>
<input <input
type="text" type="text"
className="form-control" className="form-control"
@ -257,10 +247,10 @@ export const JumblrRender = function() {
<button <button
type="button" type="button"
className="btn btn-info waves-effect waves-light" className="btn btn-info waves-effect waves-light"
onClick={ this.generateJumblrDepositAddress }>Create Jumblr deposit address</button> onClick={ this.generateJumblrDepositAddress }>{ translate('JUMBLR.CREATE_JUMBLR_DEPOSIT_ADDRESS') }</button>
{ this.state.jumblrDepositAddress && this.state.jumblrDepositAddress.address && { this.state.jumblrDepositAddress && this.state.jumblrDepositAddress.address &&
<div className="padding-top-40"> <div className="padding-top-40">
<strong>Your Jumblr deposit address:</strong> <strong>{ translate('JUMBLR.YOUR_JUMBLR_DEPOSIT_ADDRESS') }:</strong>
<p> <p>
{ this.state.jumblrDepositAddress.address } { this.state.jumblrDepositAddress.address }
<button <button
@ -286,12 +276,12 @@ export const JumblrRender = function() {
<button <button
type="button" type="button"
className="btn btn-success waves-effect waves-light margin-top-20 btn-next" className="btn btn-success waves-effect waves-light margin-top-20 btn-next"
onClick={ () => this.openTab(3) }>Next</button> onClick={ () => this.openTab(3) }>{ translate('INDEX.NEXT') }</button>
<p>Jumblr secret addresses are used for the final z -> t transactions.</p> <p>{ translate('JUMBLR.JUMBLR_SECRET_DESC_P1') }</p>
<p>In order to allow larger accounts to obtain privacy, up to 777 secret addresses are supported.</p> <p>{ translate('JUMBLR.JUMBLR_SECRET_DESC_P2') }</p>
<p>Whenever a z -> t stage is activated, a random secret address from the list of the then active secret addresses is selected.</p> <p>{ translate('JUMBLR.JUMBLR_SECRET_DESC_P3') }</p>
<p>To add a new set of secret addresses enter address count below. The passphrase below is exactly the same you saw on the previous step.</p> <p>{ translate('JUMBLR.JUMBLR_SECRET_DESC_P4') }</p>
<p>Your Jumblr secret address recovery passphrase will have the following pattern <code>jumblr muffin smart educate tomato boss foil open dirt opinion pizza goddess skate action card garden cotton life write life note shine myself gloom summer XXX</code>. Where XXX any number from 001 to 777.</p> <p>{ translate('JUMBLR.JUMBLR_SECRET_DESC_P5') } <code>jumblr muffin smart educate tomato boss foil open dirt opinion pizza goddess skate action card garden cotton life write life note shine myself gloom summer XXX</code>. { translate('JUMBLR.JUMBLR_SECRET_DESC_P6') }.</p>
{ this.state.jumblrDepositAddressPBased && { this.state.jumblrDepositAddressPBased &&
<div className="padding-bottom-20 padding-top-20"> <div className="padding-bottom-20 padding-top-20">
@ -310,7 +300,7 @@ export const JumblrRender = function() {
</button> </button>
</div> </div>
} }
<div className="col-xs-2 nofloat padding-top-30">Number of secret addresses</div> <div className="col-xs-2 nofloat padding-top-30">{ translate('JUMBLR.NUMBER_OF_SECRET_ADDR') }</div>
<div className="col-xs-2 nofloat padding-left-10"> <div className="col-xs-2 nofloat padding-left-10">
<input <input
type="text" type="text"
@ -326,7 +316,7 @@ export const JumblrRender = function() {
<button <button
type="button" type="button"
className="btn btn-info waves-effect waves-light" className="btn btn-info waves-effect waves-light"
onClick={ this.generateJumblrSecretAddress }>Create Jumblr secret address(es)</button> onClick={ this.generateJumblrSecretAddress }>{ translate('JUMBLR.CREATE_JUMBLR_SECRET_ADDR') }</button>
</div> </div>
<div className="toggle-box padding-top-20"> <div className="toggle-box padding-top-20">
<span className="pointer"> <span className="pointer">
@ -341,7 +331,7 @@ export const JumblrRender = function() {
<div <div
className="toggle-label" className="toggle-label"
onClick={ () => this.toggle('jumblrSecretAddressShow') }> onClick={ () => this.toggle('jumblrSecretAddressShow') }>
Show address list { translate('JUMBLR.SHOW_ADDRESS_LIST') }
</div> </div>
</span> </span>
</div> </div>
@ -351,7 +341,7 @@ export const JumblrRender = function() {
<thead> <thead>
<tr> <tr>
<td> <td>
<strong>Address</strong> <strong>{ translate('INDEX.ADDRESS') }</strong>
</td> </td>
<td> <td>
<strong>Wif</strong> <strong>Wif</strong>
@ -366,8 +356,8 @@ export const JumblrRender = function() {
</div> </div>
</div> </div>
<div className={ 'tab-pane' + (this.state.activeTab === 3 ? ' active' : '') }> <div className={ 'tab-pane' + (this.state.activeTab === 3 ? ' active' : '') }>
<p>Use the form below to send funds to your jumblr deposit address.</p> <p>{ translate('JUMBLR.DEPOSIT_FORM_P1') }</p>
<p className="padding-bottom-20">You can also send funds to deposit address from an external service or another wallet.</p> <p className="padding-bottom-20">{ translate('JUMBLR.DEPOSIT_FORM_P2') }</p>
<WalletsNativeSend <WalletsNativeSend
{...this.props} {...this.props}
renderFormOnly="true" renderFormOnly="true"
@ -382,16 +372,12 @@ export const JumblrRender = function() {
<li <li
className={ this.state.activeTab === 0 ? 'active' : '' } className={ this.state.activeTab === 0 ? 'active' : '' }
onClick={ () => this.openTab(0) }> onClick={ () => this.openTab(0) }>
<a> <a>{ translate('JUMBLR.IMPORT_SECRET_ADDRESS') }</a>
Import secret address
</a>
</li> </li>
<li <li
className={ this.state.activeTab === 1 ? 'active' : '' } className={ this.state.activeTab === 1 ? 'active' : '' }
onClick={ () => this.openTab(1) }> onClick={ () => this.openTab(1) }>
<a> <a>{ translate('JUMBLR.CHECK_FUNDS') }</a>
Check funds
</a>
</li> </li>
</ul> </ul>
<div className="tab-content padding-20"> <div className="tab-content padding-20">
@ -399,16 +385,16 @@ export const JumblrRender = function() {
<button <button
type="button" type="button"
className="btn btn-success waves-effect waves-light margin-top-20 btn-next" className="btn btn-success waves-effect waves-light margin-top-20 btn-next"
onClick={ () => this.openTab(1) }>Next</button> onClick={ () => this.openTab(1) }>{ translate('INDEX.NEXT') }</button>
<div className="col-xlg-12 col-md-12 nofloat"> <div className="col-xlg-12 col-md-12 nofloat">
<p>Enter your Jumblr passphrase you got previously during Public node configuration to import secret address.</p> <p>{ translate('JUMBLR.SECRET_REGEN_DESC_P1') }</p>
<p>Passphrase example: <code>jumblr muffin smart educate tomato boss foil open dirt opinion pizza goddess skate action card garden cotton life write life note shine myself gloom summer</code>.</p> <p>{ translate('JUMBLR.SECRET_REGEN_DESC_P2') }: <code>jumblr muffin smart educate tomato boss foil open dirt opinion pizza goddess skate action card garden cotton life write life note shine myself gloom summer</code>.</p>
<p>The form below will "regenerate" Jumblr secret address based on passphrase provided.</p> <p>{ translate('JUMBLR.SECRET_REGEN_DESC_P3') }</p>
<p>After this final step expect to see funds processed and credited to your address after 2 days period.</p> <p>{ translate('JUMBLR.SECRET_REGEN_DESC_P4') }</p>
{ this.state.jumblrDepositAddressPBased && { this.state.jumblrDepositAddressPBased &&
<div className="padding-bottom-20 padding-top-20"> <div className="padding-bottom-20 padding-top-20">
<label>Passphrase</label> <label>{ translate('INDEX.PASSPHRASE') }</label>
<input <input
type="text" type="text"
className="form-control" className="form-control"
@ -417,7 +403,7 @@ export const JumblrRender = function() {
value={ this.state.jumblrPassphraseImport } /> value={ this.state.jumblrPassphraseImport } />
</div> </div>
} }
<div className="col-xs-2 nofloat padding-top-30">Number of secret addresses</div> <div className="col-xs-2 nofloat padding-top-30">{ translate('JUMBLR.NUMBER_OF_SECRET_ADDR') }</div>
<div className="col-xs-2 nofloat padding-left-10"> <div className="col-xs-2 nofloat padding-left-10">
<input <input
type="text" type="text"
@ -433,7 +419,7 @@ export const JumblrRender = function() {
<button <button
type="button" type="button"
className="btn btn-info waves-effect waves-light" className="btn btn-info waves-effect waves-light"
onClick={ this.importJumblrSecretAddress }>Import Jumblr secret address(es)</button> onClick={ this.importJumblrSecretAddress }>{ translate('JUMBLR.IMPORT_JUMLR_SECRET_ADDRESSES') }</button>
</div> </div>
<div className="toggle-box padding-top-20"> <div className="toggle-box padding-top-20">
<span className="pointer"> <span className="pointer">
@ -448,7 +434,7 @@ export const JumblrRender = function() {
<div <div
className="toggle-label" className="toggle-label"
onClick={ () => this.toggle('jumblrSecretAddressShowImport') }> onClick={ () => this.toggle('jumblrSecretAddressShowImport') }>
Show address list { translate('JUMBLR.SHOW_ADDRESS_LIST') }
</div> </div>
</span> </span>
</div> </div>
@ -458,7 +444,7 @@ export const JumblrRender = function() {
<thead> <thead>
<tr> <tr>
<td> <td>
<strong>Address</strong> <strong>{ translate('INDEX.ADDRESS') }</strong>
</td> </td>
<td> <td>
<strong>Wif</strong> <strong>Wif</strong>

4
react/src/components/dashboard/qrModal/qrModal.js

@ -34,11 +34,11 @@ class QRModal extends React.Component {
handleError(err) { handleError(err) {
if (err.name === 'NoVideoInputDevicesError') { if (err.name === 'NoVideoInputDevicesError') {
this.setState({ this.setState({
error: 'Error: No video input devices found!', error: translate('DASHBOARD.QR_ERR_NO_VIDEO_DEVICE'),
}); });
} else { } else {
this.setState({ this.setState({
error: 'Error: unknown error!', error: translate('DASHBOARD.QR_ERR_UNKNOWN'),
}); });
} }
} }

5
react/src/components/dashboard/receiveCoin/receiveCoin.render.js

@ -94,7 +94,7 @@ export const _ReceiveCoinTableRender = function() {
<th>{ translate('INDEX.TYPE') }</th> <th>{ translate('INDEX.TYPE') }</th>
<th>{ translate('INDEX.ADDRESS') }</th> <th>{ translate('INDEX.ADDRESS') }</th>
<th>{ translate('INDEX.BALANCE') }</th> <th>{ translate('INDEX.BALANCE') }</th>
<th> {translate('INDEX.INTEREST') }</th> <th>{translate('INDEX.INTEREST') }</th>
</tr> </tr>
} }
</thead> </thead>
@ -146,8 +146,7 @@ export const ReceiveCoinRender = function() {
<i className="icon md-arrows margin-right-10"></i> { translate('INDEX.GET_NEW_ADDRESS') } <i className="icon md-arrows margin-right-10"></i> { translate('INDEX.GET_NEW_ADDRESS') }
<span className="caret"></span> <span className="caret"></span>
</a> </a>
<ul <ul className="dropdown-menu dropdown-menu-right">
className="dropdown-menu dropdown-menu-right">
<li> <li>
<a onClick={ () => this.getNewAddress('public') }> <a onClick={ () => this.getNewAddress('public') }>
<i className="icon fa-eye"></i> { translate('INDEX.TRANSPARENT_ADDRESS') } <i className="icon fa-eye"></i> { translate('INDEX.TRANSPARENT_ADDRESS') }

48
react/src/components/dashboard/sendCoin/sendCoin.js

@ -138,11 +138,11 @@ class SendCoin extends React.Component {
_fetchNewUTXOData() { _fetchNewUTXOData() {
Store.dispatch(fetchUtxoCache({ Store.dispatch(fetchUtxoCache({
'pubkey': this.props.Dashboard.activeHandle.pubkey, pubkey: this.props.Dashboard.activeHandle.pubkey,
'allcoins': false, allcoins: false,
'coin': this.props.ActiveCoin.coin, coin: this.props.ActiveCoin.coin,
'calls': 'refresh', calls: 'refresh',
'address': this.state.sendFrom, address: this.state.sendFrom,
})); }));
} }
@ -152,10 +152,10 @@ class SendCoin extends React.Component {
!this.state.sendApiType && !this.state.sendApiType &&
this.props.ActiveCoin.cache && this.props.ActiveCoin.cache &&
this.props.ActiveCoin.cache[this.props.ActiveCoin.coin][this.state.sendFrom]) { this.props.ActiveCoin.cache[this.props.ActiveCoin.coin][this.state.sendFrom]) {
let refreshCacheData, let refreshCacheData;
timestamp, let timestamp;
isReadyToUpdate, let isReadyToUpdate;
waitUntilCallIsFinished = this.state.currentStackLength > 1 ? true : false; let waitUntilCallIsFinished = this.state.currentStackLength > 1 ? true : false;
const _cache = this.props.ActiveCoin.cache; const _cache = this.props.ActiveCoin.cache;
const _coin = this.props.ActiveCoin.coin; const _coin = this.props.ActiveCoin.coin;
const _sendFrom = this.state.sendFrom; const _sendFrom = this.state.sendFrom;
@ -311,7 +311,7 @@ class SendCoin extends React.Component {
<button <button
type="button" type="button"
className="btn dropdown-toggle btn-info" className="btn dropdown-toggle btn-info"
title={ `-${translate('SEND.SELECT_T_OR_Z_ADDR')}-` } title={ `${translate('SEND.SELECT_T_OR_Z_ADDR')}` }
onClick={ this.openDropMenu }> onClick={ this.openDropMenu }>
<span className="filter-option pull-left"> <span className="filter-option pull-left">
{ this.renderSelectorCurrentLabel() }&nbsp;&nbsp; { this.renderSelectorCurrentLabel() }&nbsp;&nbsp;
@ -438,14 +438,14 @@ class SendCoin extends React.Component {
const forceUpdateCache = this._fetchNewUTXOData; const forceUpdateCache = this._fetchNewUTXOData;
const _sendFrom = this.state.sendFrom; const _sendFrom = this.state.sendFrom;
const sendData = { const sendData = {
'coin': this.props.ActiveCoin.coin, coin: this.props.ActiveCoin.coin,
'sendfrom': this.state.sendFrom, sendfrom: this.state.sendFrom,
'sendtoaddr': this.state.sendTo, sendtoaddr: this.state.sendTo,
'amount': this.state.amount, amount: this.state.amount,
'txfee': this.state.fee, txfee: this.state.fee,
'sendsig': this.state.sendSig === true ? 0 : 1, sendsig: this.state.sendSig === true ? 0 : 1,
'utxos': utxoSet utxos: utxoSet,
}; };
// TODO: es arrows // TODO: es arrows
iguanaUTXORawTX(sendData, Store.dispatch) iguanaUTXORawTX(sendData, Store.dispatch)
@ -462,8 +462,8 @@ class SendCoin extends React.Component {
if (sendData.sendsig === 1) { if (sendData.sendsig === 1) {
const dexrawtxData = { const dexrawtxData = {
'signedtx': json.signedtx, signedtx: json.signedtx,
'coin': sendData.coin coin: sendData.coin,
}; };
dexSendRawTX( dexSendRawTX(
dexrawtxData, dexrawtxData,
@ -472,7 +472,7 @@ class SendCoin extends React.Component {
if (dexRawTxJSON.indexOf('"error":{"code"') > -1) { if (dexRawTxJSON.indexOf('"error":{"code"') > -1) {
Store.dispatch( Store.dispatch(
triggerToaster( triggerToaster(
'Transaction failed', translate('TOASTR.TRANSACTION_FAILED'),
translate('TOASTR.WALLET_NOTIFICATION'), translate('TOASTR.WALLET_NOTIFICATION'),
'error' 'error'
) )
@ -503,8 +503,8 @@ class SendCoin extends React.Component {
); );
edexGetTransaction({ edexGetTransaction({
'coin': sendData.coin, coin: sendData.coin,
'txid': dexRawTxJSON.txid ? dexRawTxJSON.txid : dexRawTxJSON txid: dexRawTxJSON.txid ? dexRawTxJSON.txid : dexRawTxJSON,
}, Store.dispatch) }, Store.dispatch)
.then(function(json) { .then(function(json) {
resolve(json); resolve(json);
@ -615,7 +615,7 @@ class SendCoin extends React.Component {
})); }));
} }
console.log(json); // console.log(json);
}.bind(this)); }.bind(this));
} }

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

@ -278,7 +278,7 @@ export const SendCoinRender = function() {
<div className="col-lg-12"> <div className="col-lg-12">
<strong> <strong>
{ translate('INDEX.TOTAL') }&nbsp; { translate('INDEX.TOTAL') }&nbsp;
({ translate('INDEX.AMOUNT_SM') } - fee): ({ translate('INDEX.AMOUNT_SM') } - { translate('INDEX.FEE') }):
</strong>&nbsp; </strong>&nbsp;
{ this.getTotalAmount() } { this.props.ActiveCoin.coin } { this.getTotalAmount() } { this.props.ActiveCoin.coin }
</div> </div>

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

@ -49,6 +49,7 @@ class Settings extends React.Component {
debugTarget: 'iguana', debugTarget: 'iguana',
activeTabHeight: '0', activeTabHeight: '0',
appSettings: {}, appSettings: {},
appConfigSchema: {},
tabElId: null, tabElId: null,
cliCmdString: '', cliCmdString: '',
cliCoin: null, cliCoin: null,
@ -66,7 +67,7 @@ class Settings extends React.Component {
}; };
this.exportWifKeys = this.exportWifKeys.bind(this); this.exportWifKeys = this.exportWifKeys.bind(this);
this.updateInput = this.updateInput.bind(this); this.updateInput = this.updateInput.bind(this);
this.updateInputSettings = this.updateInputSettings.bind(this); // this.updateInputSettings = this.updateInputSettings.bind(this);
this.importWifKey = this.importWifKey.bind(this); this.importWifKey = this.importWifKey.bind(this);
this.readDebugLog = this.readDebugLog.bind(this); this.readDebugLog = this.readDebugLog.bind(this);
this.checkNodes = this.checkNodes.bind(this); this.checkNodes = this.checkNodes.bind(this);
@ -95,6 +96,18 @@ class Settings extends React.Component {
componentWillMount() { componentWillMount() {
socket.on('patch', msg => this.updateSocketsData(msg)); socket.on('patch', msg => this.updateSocketsData(msg));
window.addEventListener('resize', this.updateTabDimensions); window.addEventListener('resize', this.updateTabDimensions);
try {
const _appConfigSchema = window.require('electron').remote.getCurrentWindow().appConfigSchema;
const _appSettings = this.props.Settings.appSettings ? this.props.Settings.appSettings : window.require('electron').remote.getCurrentWindow().appConfig;
this.setState(Object.assign({}, this.state, {
appConfigSchema: _appConfigSchema,
appSettings: _appSettings,
}));
console.warn(_appSettings);
} catch(e) {}
} }
componentWillUnmount() { componentWillUnmount() {
@ -111,6 +124,7 @@ class Settings extends React.Component {
if (!this.props.disableWalletSpecificUI) { if (!this.props.disableWalletSpecificUI) {
Store.dispatch(iguanaActiveHandle()); Store.dispatch(iguanaActiveHandle());
} }
Store.dispatch(getAppConfig()); Store.dispatch(getAppConfig());
Store.dispatch(getAppInfo()); Store.dispatch(getAppInfo());
} }
@ -135,7 +149,7 @@ class Settings extends React.Component {
const externalWindow = new BrowserWindow({ const externalWindow = new BrowserWindow({
width: 1280, width: 1280,
height: 800, height: 800,
title: 'Loading...', title: `${translate('INDEX.LOADING')}...`,
icon: remote.getCurrentWindow().iguanaIcon, icon: remote.getCurrentWindow().iguanaIcon,
}); });
@ -178,7 +192,7 @@ class Settings extends React.Component {
data.msg.progress && data.msg.progress &&
data.msg.progress === 100) { data.msg.progress === 100) {
let _updateLog = []; let _updateLog = [];
_updateLog.push('UI update downloaded. Verifying...'); _updateLog.push(`${translate('INDEX.UI_UPDATE_DOWNLOADED')}...`);
this.setState(Object.assign({}, this.state, { this.setState(Object.assign({}, this.state, {
updateLog: _updateLog, updateLog: _updateLog,
})); }));
@ -187,7 +201,7 @@ class Settings extends React.Component {
if (data.msg.status === 'done') { if (data.msg.status === 'done') {
let _updateLog = []; let _updateLog = [];
_updateLog.push('UI is updated!'); _updateLog.push(translate('INDEX.UI_UPDATED'));
this.setState(Object.assign({}, this.state, { this.setState(Object.assign({}, this.state, {
updateLog: _updateLog, updateLog: _updateLog,
updatePatch: null, updatePatch: null,
@ -197,7 +211,7 @@ class Settings extends React.Component {
if (data.msg.status === 'error') { if (data.msg.status === 'error') {
let _updateLog = []; let _updateLog = [];
_updateLog.push('Error while verifying update file! Please retry again.'); _updateLog.push(translate('INDEX.UI_UPDATE_ERROR'));
this.setState(Object.assign({}, this.state, { this.setState(Object.assign({}, this.state, {
updateLog: _updateLog, updateLog: _updateLog,
})); }));
@ -218,7 +232,7 @@ class Settings extends React.Component {
_checkForUpdateUIPromise() { _checkForUpdateUIPromise() {
let _updateLog = []; let _updateLog = [];
_updateLog.push('Checking for UI update...'); _updateLog.push(translate('INDEX.CHECKING_UI_UPDATE'));
this.setState(Object.assign({}, this.state, { this.setState(Object.assign({}, this.state, {
updateLog: _updateLog, updateLog: _updateLog,
})); }));
@ -226,7 +240,7 @@ class Settings extends React.Component {
checkForUpdateUIPromise() checkForUpdateUIPromise()
.then((res) => { .then((res) => {
let _updateLog = this.state.updateLog; let _updateLog = this.state.updateLog;
_updateLog.push(res.result === 'update' ? (`New UI update available ${res.version.remote}`) : 'You have the lastest UI version'); _updateLog.push(res.result === 'update' ? (`${translate('INDEX.NEW_UI_UPDATE')} ${res.version.remote}`) : translate('INDEX.YOU_HAVE_LATEST_UI'));
this.setState(Object.assign({}, this.state, { this.setState(Object.assign({}, this.state, {
updatePatch: res.result === 'update' ? true : false, updatePatch: res.result === 'update' ? true : false,
updateLog: _updateLog, updateLog: _updateLog,
@ -237,7 +251,7 @@ class Settings extends React.Component {
_updateUIPromise() { _updateUIPromise() {
updateProgressBar.patch = 0; updateProgressBar.patch = 0;
let _updateLog = []; let _updateLog = [];
_updateLog.push('Downloading UI update...'); _updateLog.push(`${translate('INDEX.DOWNLOADING_UI_UPDATE')}...`);
this.setState(Object.assign({}, this.state, { this.setState(Object.assign({}, this.state, {
updateLog: _updateLog, updateLog: _updateLog,
})); }));
@ -259,7 +273,7 @@ class Settings extends React.Component {
return ( return (
<div style={{ minHeight: '200px' }}> <div style={{ minHeight: '200px' }}>
<hr /> <hr />
<h5>Progress:</h5> <h5>{ translate('SETTINGS.PROGRESS') }:</h5>
<div className="padding-bottom-15">{ items }</div> <div className="padding-bottom-15">{ items }</div>
<div className={ updateProgressBar.patch > -1 ? 'progress progress-sm' : 'hide' }> <div className={ updateProgressBar.patch > -1 ? 'progress progress-sm' : 'hide' }>
<div <div
@ -407,9 +421,18 @@ class Settings extends React.Component {
} }
} }
updateInputSettings(e) { updateInputSettings(e, parentKey, childKey) {
console.warn(parentKey + ' | ' + childKey);
let _appSettings = this.state.appSettings; let _appSettings = this.state.appSettings;
_appSettings[e.target.name] = e.target.value; console.warn(this.state.appSettings);
if (!childKey && this.state.appConfigSchema[parentKey].type === 'boolean') {
_appSettings[parentKey] = typeof _appSettings[parentKey] !== undefined ? !_appSettings[parentKey] : !this.state.appSettings[parentKey];
} else if (childKey && this.state.appConfigSchema[parentKey].type === 'boolean') {
_appSettings[parentKey][childKey] = typeof _appSettings[parentKey][childKey] !== undefined ? !_appSettings[parentKey][childKey] : !this.state.appSettings[parentKey][childKey];
} else {
_appSettings[e.target.name] = e.target.value;
}
this.setState({ this.setState({
appSettings: _appSettings, appSettings: _appSettings,
@ -434,50 +457,111 @@ class Settings extends React.Component {
renderConfigEditForm() { renderConfigEditForm() {
let items = []; let items = [];
const _appConfig = this.props.Settings.appSettings; const _appConfig = this.state.appSettings;
for (let key in _appConfig) { for (let key in _appConfig) {
if (typeof _appConfig[key] === 'object') { if (typeof _appConfig[key] === 'object') {
items.push( if (this.state.appConfigSchema[key].display) {
<tr key={ `app-settings-${key}` }> items.push(
<td className="padding-15"> <tr key={ `app-settings-${key}` }>
{ key } <td className="padding-15">
</td> { this.state.appConfigSchema[key].displayName ? this.state.appConfigSchema[key].displayName : key }
<td className="padding-15"></td> { this.state.appConfigSchema[key].info &&
</tr> <i
); className="icon fa-question-circle settings-help"
title={ this.state.appConfigSchema[key].info }></i>
}
</td>
<td className="padding-15"></td>
</tr>
);
for (let _key in _appConfig[key]) { for (let _key in _appConfig[key]) {
items.push(
<tr key={ `app-settings-${key}-${_key}` }>
<td className="padding-15 padding-left-30">
{ this.state.appConfigSchema[key][_key].displayName ? this.state.appConfigSchema[key][_key].displayName : _key }
{ this.state.appConfigSchema[key][_key].info &&
<i
className="icon fa-question-circle settings-help"
title={ this.state.appConfigSchema[key][_key].info }></i>
}
</td>
<td className="padding-15">
{ this.state.appConfigSchema[key][_key].type === 'number' &&
<input
type="number"
pattern="[0-9]*"
type="text"
name={ `${key}__${_key}` }
defaultValue={ _appConfig[key][_key] }
onChange={ this.updateInputSettings } />
}
{ this.state.appConfigSchema[key][_key].type === 'boolean' &&
<span className="pointer toggle">
<label className="switch">
<input
type="checkbox"
name={ `${key}__${_key}` }
value={ _appConfig[key] }
checked={ _appConfig[key][_key] } />
<div
className="slider"
onClick={ (event) => this.updateInputSettings(event, key, _key) }></div>
</label>
</span>
}
</td>
</tr>
);
}
}
} else {
if (this.state.appConfigSchema[key].display) {
items.push( items.push(
<tr key={ `app-settings-${key}-${_key}` }> <tr key={ `app-settings-${key}` }>
<td className="padding-15 padding-left-30"> <td className="padding-15">
{ _key } { this.state.appConfigSchema[key].displayName ? this.state.appConfigSchema[key].displayName : key }
{ this.state.appConfigSchema[key].info &&
<i
className="icon fa-question-circle settings-help"
title={ this.state.appConfigSchema[key].info }></i>
}
</td> </td>
<td className="padding-15"> <td className="padding-15">
<input { this.state.appConfigSchema[key].type === 'number' &&
type="text" <input
name={ `${key}__${_key}` } type="number"
defaultValue={ _appConfig[key][_key] } pattern="[0-9]*"
onChange={ this.updateInputSettings } /> name={ `${key}` }
defaultValue={ _appConfig[key] }
onChange={ this.updateInputSettings } />
}
{ this.state.appConfigSchema[key].type === 'string' &&
<input
type="text"
name={ `${key}` }
defaultValue={ _appConfig[key] }
onChange={ this.updateInputSettings } />
}
{ this.state.appConfigSchema[key].type === 'boolean' &&
<span className="pointer toggle">
<label className="switch">
<input
type="checkbox"
name={ `${key}` }
value={ _appConfig[key] }
checked={ _appConfig[key] } />
<div
className="slider"
onClick={ (event) => this.updateInputSettings(event, key) }></div>
</label>
</span>
}
</td> </td>
</tr> </tr>
); );
} }
} else {
items.push(
<tr key={ `app-settings-${key}` }>
<td className="padding-15">
{ key }
</td>
<td className="padding-15">
<input
type="text"
name={ `${key}` }
defaultValue={ _appConfig[key] }
onChange={ this.updateInputSettings } />
</td>
</tr>
);
} }
} }
@ -600,7 +684,7 @@ class Settings extends React.Component {
return ( return (
<div> <div>
<div> <div>
<strong>CLI response:</strong> <strong>{ translate('SETTINGS.CLI_RESPONSE') }:</strong>
</div> </div>
{ _items } { _items }
</div> </div>
@ -676,7 +760,7 @@ class Settings extends React.Component {
items.push( items.push(
<tr key={ `wif-export-table-header-${i}` }> <tr key={ `wif-export-table-header-${i}` }>
<td className="padding-bottom-10 padding-top-10"> <td className="padding-bottom-10 padding-top-10">
<strong>{ i === 0 ? 'Address list' : 'Wif key list' }</strong> <strong>{ i === 0 ? translate('SETTINGS.ADDRESS_LIST') : translate('SETTINGS.WIF_KEY_LIST') }</strong>
</td> </td>
<td className="padding-bottom-10 padding-top-10"></td> <td className="padding-bottom-10 padding-top-10"></td>
</tr> </tr>

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

@ -540,7 +540,7 @@ export const SettingsRender = function() {
</tbody> </tbody>
</table> </table>
</div> </div>
<div className="col-sm-12 col-xs-12 text-align-center padding-top-25 padding-bottom-25"> <div className="col-sm-12 col-xs-12 text-align-center padding-top-35 padding-bottom-30">
<button <button
type="button" type="button"
className="btn btn-primary waves-effect waves-light" className="btn btn-primary waves-effect waves-light"
@ -639,8 +639,10 @@ export const SettingsRender = function() {
<div <div
className="support-box" className="support-box"
onClick={ () => this.openExternalWindow('http://support.supernet.org') }> onClick={ () => this.openExternalWindow('http://support.supernet.org') }>
<img src="assets/images/cryptologo/supernet.png" alt="Support tickets" /> <img
<div className="support-box-title">Support tickets</div> src="assets/images/cryptologo/supernet.png"
alt="Support tickets" />
<div className="support-box-title">{ translate('SETTINGS.SUPPORT_TICKETS') }</div>
<div className="support-box-link">support.supernet.org</div> <div className="support-box-link">support.supernet.org</div>
</div> </div>
</div> </div>
@ -648,7 +650,9 @@ export const SettingsRender = function() {
<div <div
className="support-box" className="support-box"
onClick={ () => this.openExternalWindow('https://sprnt.slack.com') }> onClick={ () => this.openExternalWindow('https://sprnt.slack.com') }>
<img src="assets/images/support/slack-icon.png" alt="Slack" /> <img
src="assets/images/support/slack-icon.png"
alt="Slack" />
<div className="support-box-title">Slack</div> <div className="support-box-title">Slack</div>
<div className="support-box-link">sprnt.slack.com</div> <div className="support-box-link">sprnt.slack.com</div>
</div> </div>
@ -657,8 +661,10 @@ export const SettingsRender = function() {
<div <div
className="support-box" className="support-box"
onClick={ () => this.openExternalWindow('http://slackinvite.supernet.org') }> onClick={ () => this.openExternalWindow('http://slackinvite.supernet.org') }>
<img src="assets/images/support/slack-invite-icon.png" alt="Slack invite" /> <img
<div className="support-box-title">Get Slack invite</div> src="assets/images/support/slack-invite-icon.png"
alt="Slack invite" />
<div className="support-box-title">{ translate('SETTINGS.GET_SLACK_INVITE') }</div>
<div className="support-box-link">slackinvite.supernet.org</div> <div className="support-box-link">slackinvite.supernet.org</div>
</div> </div>
</div> </div>
@ -666,7 +672,9 @@ export const SettingsRender = function() {
<div <div
className="support-box" className="support-box"
onClick={ () => this.openExternalWindow('https://github.com/SuperNETorg/Agama') }> onClick={ () => this.openExternalWindow('https://github.com/SuperNETorg/Agama') }>
<img src="assets/images/support/github-icon.png" alt="Github" /> <img
src="assets/images/support/github-icon.png"
alt="Github" />
<div className="support-box-title">Github</div> <div className="support-box-title">Github</div>
<div className="support-box-link">github.com/SuperNETorg/Agama</div> <div className="support-box-link">github.com/SuperNETorg/Agama</div>
</div> </div>

4
react/src/components/dashboard/syncOnly/syncOnly.js

@ -41,8 +41,8 @@ class SyncOnly extends React.Component {
const _coinTitle = getCoinTitle(coin); const _coinTitle = getCoinTitle(coin);
return { return {
'logo': _coinTitle.logo, logo: _coinTitle.logo,
'name': _coinTitle.name name: _coinTitle.name,
}; };
} }

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

@ -47,12 +47,12 @@ class WalletsBalance extends React.Component {
switch(_mode) { switch(_mode) {
case 'basilisk': case 'basilisk':
Store.dispatch(fetchNewCacheData({ Store.dispatch(fetchNewCacheData({
'pubkey': this.props.Dashboard.activeHandle.pubkey, pubkey: this.props.Dashboard.activeHandle.pubkey,
'allcoins': false, allcoins: false,
'coin': this.props.ActiveCoin.coin, coin: this.props.ActiveCoin.coin,
'calls': 'getbalance', calls: 'getbalance',
'skip': true, skip: true,
'address': this.state.currentAddress, address: this.state.currentAddress,
})); }));
break; break;
case 'native': case 'native':

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

@ -58,7 +58,7 @@ class WalletsData extends React.Component {
showPagination: true, showPagination: true,
searchTerm: null, searchTerm: null,
coin: null, coin: null,
txhistory: null txhistory: null,
}; };
this.toggleBasiliskActionsMenu = this.toggleBasiliskActionsMenu.bind(this); this.toggleBasiliskActionsMenu = this.toggleBasiliskActionsMenu.bind(this);
@ -112,7 +112,7 @@ class WalletsData extends React.Component {
className: 'colum--type', className: 'colum--type',
headerClassName: 'colum--type', headerClassName: 'colum--type',
footerClassName: 'colum--type', footerClassName: 'colum--type',
Cell: AddressTypeRender() Cell: AddressTypeRender(),
}); });
} }
@ -124,7 +124,7 @@ class WalletsData extends React.Component {
className: 'colum--direction', className: 'colum--direction',
headerClassName: 'colum--direction', headerClassName: 'colum--direction',
footerClassName: 'colum--direction', footerClassName: 'colum--direction',
accessor: (tx) => TxTypeRender.call(this, tx.category || tx.type) accessor: (tx) => TxTypeRender.call(this, tx.category || tx.type),
}, },
{ {
Header: translate('INDEX.CONFIRMATIONS'), Header: translate('INDEX.CONFIRMATIONS'),
@ -132,19 +132,19 @@ class WalletsData extends React.Component {
headerClassName: 'hidden-xs hidden-sm', headerClassName: 'hidden-xs hidden-sm',
footerClassName: 'hidden-xs hidden-sm', footerClassName: 'hidden-xs hidden-sm',
className: 'hidden-xs hidden-sm', className: 'hidden-xs hidden-sm',
accessor: 'confirmations' accessor: 'confirmations',
}, },
{ {
id: 'amount', id: 'amount',
Header: translate('INDEX.AMOUNT'), Header: translate('INDEX.AMOUNT'),
Footer: translate('INDEX.AMOUNT'), Footer: translate('INDEX.AMOUNT'),
accessor: (tx) => TxAmountRender.call(this, tx) accessor: (tx) => TxAmountRender.call(this, tx),
}, },
{ {
id: 'timestamp', id: 'timestamp',
Header: translate('INDEX.TIME'), Header: translate('INDEX.TIME'),
Footer: translate('INDEX.TIME'), Footer: translate('INDEX.TIME'),
accessor: (tx) => secondsToString(tx.blocktime || tx.timestamp || tx.time) accessor: (tx) => secondsToString(tx.blocktime || tx.timestamp || tx.time),
} }
]); ]);
@ -152,7 +152,7 @@ class WalletsData extends React.Component {
columns.push({ columns.push({
Header: translate('INDEX.DEST_ADDRESS'), Header: translate('INDEX.DEST_ADDRESS'),
Footer: translate('INDEX.DEST_ADDRESS'), Footer: translate('INDEX.DEST_ADDRESS'),
accessor: 'address' accessor: 'address',
}); });
} }
@ -161,7 +161,7 @@ class WalletsData extends React.Component {
id: 'destination-address', id: 'destination-address',
Header: translate('INDEX.DEST_ADDRESS'), Header: translate('INDEX.DEST_ADDRESS'),
Footer: translate('INDEX.DEST_ADDRESS'), Footer: translate('INDEX.DEST_ADDRESS'),
accessor: (tx) => AddressRender.call(this, tx) accessor: (tx) => AddressRender.call(this, tx),
}); });
} }
@ -174,7 +174,7 @@ class WalletsData extends React.Component {
className: 'colum--txinfo', className: 'colum--txinfo',
headerClassName: 'colum--txinfo', headerClassName: 'colum--txinfo',
footerClassName: 'colum--txinfo', footerClassName: 'colum--txinfo',
Cell: props => TransactionDetailRender.call(this, props.index) Cell: props => TransactionDetailRender.call(this, props.index),
}); });
return columns; return columns;
@ -252,12 +252,12 @@ class WalletsData extends React.Component {
switch(_mode) { switch(_mode) {
case 'basilisk': case 'basilisk':
Store.dispatch(fetchNewCacheData({ Store.dispatch(fetchNewCacheData({
'pubkey': this.props.Dashboard.activeHandle.pubkey, pubkey: this.props.Dashboard.activeHandle.pubkey,
'allcoins': false, allcoins: false,
'coin': _coin, coin: _coin,
'calls': 'listtransactions', calls: 'listtransactions',
'skip': true, skip: true,
'address': this.state.currentAddress, address: this.state.currentAddress,
})); }));
break; break;
case 'native': case 'native':
@ -271,21 +271,21 @@ class WalletsData extends React.Component {
removeAndFetchNewCache() { removeAndFetchNewCache() {
Store.dispatch(deleteCacheFile({ Store.dispatch(deleteCacheFile({
'pubkey': this.props.Dashboard.activeHandle.pubkey, pubkey: this.props.Dashboard.activeHandle.pubkey,
'allcoins': false, allcoins: false,
'coin': this.props.ActiveCoin.coin, coin: this.props.ActiveCoin.coin,
'calls': 'listtransactions:getbalance', calls: 'listtransactions:getbalance',
'address': this.state.currentAddress, address: this.state.currentAddress,
})); }));
} }
_fetchUtxoCache() { _fetchUtxoCache() {
Store.dispatch(fetchUtxoCache({ Store.dispatch(fetchUtxoCache({
'pubkey': this.props.Dashboard.activeHandle.pubkey, pubkey: this.props.Dashboard.activeHandle.pubkey,
'allcoins': false, allcoins: false,
'coin': this.props.ActiveCoin.coin, coin: this.props.ActiveCoin.coin,
'calls': 'refresh', calls: 'refresh',
'address': this.state.currentAddress, address: this.state.currentAddress,
})); }));
} }
@ -297,20 +297,20 @@ class WalletsData extends React.Component {
basiliskRefreshAction() { basiliskRefreshAction() {
Store.dispatch(fetchNewCacheData({ Store.dispatch(fetchNewCacheData({
'pubkey': this.props.Dashboard.activeHandle.pubkey, pubkey: this.props.Dashboard.activeHandle.pubkey,
'allcoins': false, allcoins: false,
'coin': this.props.ActiveCoin.coin, coin: this.props.ActiveCoin.coin,
'calls': 'listtransactions:getbalance', calls: 'listtransactions:getbalance',
})); }));
} }
basiliskRefreshActionOne() { basiliskRefreshActionOne() {
Store.dispatch(fetchNewCacheData({ Store.dispatch(fetchNewCacheData({
'pubkey': this.props.Dashboard.activeHandle.pubkey, pubkey: this.props.Dashboard.activeHandle.pubkey,
'allcoins': false, allcoins: false,
'coin': this.props.ActiveCoin.coin, coin: this.props.ActiveCoin.coin,
'calls': 'listtransactions:getbalance', calls: 'listtransactions:getbalance',
'address': this.props.ActiveCoin.activeAddress, address: this.props.ActiveCoin.activeAddress,
})); }));
} }
@ -408,7 +408,7 @@ class WalletsData extends React.Component {
} else { } else {
return ( return (
<tr className="hover--none"> <tr className="hover--none">
<td colSpan="7">Synchronization is in progress...</td> <td colSpan="7">{ translate('INDEX.SYNC_IN_PROGRESS') }...</td>
</tr> </tr>
); );
} }
@ -452,11 +452,11 @@ class WalletsData extends React.Component {
}, 100); }, 100);
Store.dispatch(fetchNewCacheData({ Store.dispatch(fetchNewCacheData({
'pubkey': this.props.Dashboard.activeHandle.pubkey, pubkey: this.props.Dashboard.activeHandle.pubkey,
'allcoins': false, allcoins: false,
'coin': this.props.ActiveCoin.coin, coin: this.props.ActiveCoin.coin,
'calls': 'listtransactions:getbalance', calls: 'listtransactions:getbalance',
'address': address, address: address,
})); }));
} }
} }
@ -563,7 +563,7 @@ class WalletsData extends React.Component {
); );
} else { } else {
return ( return (
<span>Filter by address</span> <span>{ translate('INDEX.FILTER_BY_ADDRESS') }</span>
); );
} }
} }
@ -587,7 +587,7 @@ class WalletsData extends React.Component {
onSearchTermChange(newSearchTerm) { onSearchTermChange(newSearchTerm) {
this.setState(Object.assign({}, this.state, { this.setState(Object.assign({}, this.state, {
searchTerm: newSearchTerm, searchTerm: newSearchTerm,
filteredItemsList: this.filterTransactions(this.state.itemsList, newSearchTerm) filteredItemsList: this.filterTransactions(this.state.itemsList, newSearchTerm),
})); }));
} }

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

@ -80,7 +80,7 @@ export const AddressListRender = function() {
<div className="dropdown-menu open"> <div className="dropdown-menu open">
<ul className="dropdown-menu inner"> <ul className="dropdown-menu inner">
<li className="no--hover"> <li className="no--hover">
<a><span className="text">{ this.props.ActiveCoin.mode === 'basilisk' ? 'Filter by address' : translate('KMD_NATIVE.SELECT_ADDRESS') }</span></a> <a><span className="text">{ this.props.ActiveCoin.mode === 'basilisk' ? translate('INDEX.FILTER_BY_ADDRESS') : translate('KMD_NATIVE.SELECT_ADDRESS') }</span></a>
</li> </li>
{ this.props.ActiveCoin.mode === 'native' && { this.props.ActiveCoin.mode === 'native' &&
<li className={ !this.state.currentAddress ? 'selected' : '' }> <li className={ !this.state.currentAddress ? 'selected' : '' }>

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

@ -46,7 +46,7 @@ const WalletsInfoRender = function() {
<button <button
type="button" type="button"
className="btn btn-success waves-effect waves-light margin-top-20 btn-next" className="btn btn-success waves-effect waves-light margin-top-20 btn-next"
onClick={ () => this.openClaimInterestModal() }>Claim interest</button> onClick={ () => this.openClaimInterestModal() }>{ translate('CLAIM_INTEREST.CLAIM_INTEREST') }</button>
<ClaimInterestModal {...this.props} /> <ClaimInterestModal {...this.props} />
</div> </div>
} }
@ -82,7 +82,7 @@ const WalletsInfoRender = function() {
</tr> </tr>
<tr> <tr>
<td> <td>
{ translate('INDEX.NOTARIZED') } Hash { translate('INDEX.NOTARIZED') } { translate('INDEX.HASH') }
</td> </td>
<td> <td>
{ this.props.Dashboard.progress.notarizedhash ? { this.props.Dashboard.progress.notarizedhash ?

2
react/src/components/dashboard/walletsNative/walletsNative.js

@ -29,7 +29,7 @@ class WalletsNative extends React.Component {
case 'run -reindex': case 'run -reindex':
Store.dispatch( Store.dispatch(
triggerToaster( triggerToaster(
'Restart Agama and run Komodo with -reindex param', translate('TOASTR.RESTART_AGAMA_WITH_REINDEX_PARAM'),
translate('TOASTR.WALLET_NOTIFICATION'), translate('TOASTR.WALLET_NOTIFICATION'),
'info', 'info',
false false

4
react/src/components/dashboard/walletsNativeSend/walletsNativeSend.js

@ -69,7 +69,7 @@ class WalletsNativeSend extends React.Component {
setRecieverFromScan(receiver) { setRecieverFromScan(receiver) {
this.setState({ this.setState({
sendTo: receiver sendTo: receiver,
}); });
document.getElementById('kmdWalletSendTo').focus(); document.getElementById('kmdWalletSendTo').focus();
@ -153,7 +153,7 @@ class WalletsNativeSend extends React.Component {
); );
} else { } else {
return ( return (
<span>Transparent funds</span> <span>{ translate('INDEX.T_FUNDS') }</span>
); );
} }
} }

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

@ -21,7 +21,7 @@ export const AddressListRender = function() {
className="selected" className="selected"
onClick={ () => this.updateAddressSelection(null, 'public', null) }> onClick={ () => this.updateAddressSelection(null, 'public', null) }>
<a> <a>
<span className="text">Transparent funds</span> <span className="text">{ translate('INDEX.T_FUNDS') }</span>
<span <span
className="glyphicon glyphicon-ok check-mark pull-right" className="glyphicon glyphicon-ok check-mark pull-right"
style={{ display: this.state.sendFrom === null ? 'inline-block' : 'none' }}></span> style={{ display: this.state.sendFrom === null ? 'inline-block' : 'none' }}></span>

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

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

12
react/src/components/login/login.js

@ -145,17 +145,17 @@ class Login extends React.Component {
if (props && if (props &&
props.Main && props.Main &&
props.Main.isLoggedIn) { props.Main.isLoggedIn) {
this.setState({ this.setState({
display: false, display: false,
}); });
} }
if (props && if (props &&
props.Main && props.Main &&
!props.Main.isLoggedIn) { !props.Main.isLoggedIn) {
this.setState({ this.setState({
display: true, display: true,
}); });
if (!this.props.Interval.interval.activeCoins) { if (!this.props.Interval.interval.activeCoins) {
// only start a new 'activeCoins' interval if a previous one doesn't exist // only start a new 'activeCoins' interval if a previous one doesn't exist

35
react/src/components/login/login.render.js

@ -26,7 +26,7 @@ const LoginRender = function () {
className="login-settings-dropdown-trigger" className="login-settings-dropdown-trigger"
onClick={ this.toggleLoginSettingsDropdown }> onClick={ this.toggleLoginSettingsDropdown }>
<i className="icon fa-cogs"></i>&nbsp; <i className="icon fa-cogs"></i>&nbsp;
<span className="login-settings-dropdown-label">Quick access</span> <span className="login-settings-dropdown-label">{ translate('LOGIN.QUICK_ACCESS') }</span>
</span> </span>
</div> </div>
<div> <div>
@ -50,36 +50,6 @@ const LoginRender = function () {
</div> </div>
</div> </div>
<div className={ this.state.activeLoginSection === 'ieWarning' ? 'show' : 'hide' }>
<div className="panel">
<div className="panel-heading">
<h3 className="panel-title">
{ translate('INDEX.UNSUPPORTED_BROWSER') }
</h3>
</div>
<div className="alert alert-danger alert-dismissible">
<button type="button">
<span>&times;</span>
<span className="sr-only">
{ translate('INDEX.CLOSE') }
</span>
</button>
{ translate('INDEX.IE_UNSUPPORTED') }
</div>
<div className="panel-body">
<p className="browser-usage-container">
{ translate('INDEX.PLEASE_USE') } <a href="https://www.google.com/chrome/">Google Chrome</a> { translate('INDEX.OR') } <a href="https://www.firefox.com">Mozilla FireFox</a> { translate('INDEX.TO_USE') } EasyDEX-GUI. { translate('INDEX.PLEASE_CLICK_ON') }.
</p>
<div className="col-sm-6 col-xs-6">
<a href="https://www.google.com/chrome/"><img className="brand-img" src="assets/images/browsers/chrome.png" alt="Google Chrome" /></a>
</div>
<div className="col-sm-6 col-xs-6">
<a href="https://www.firefox.com"><img className="brand-img" src="assets/images/browsers/firefox.png" alt="Mozilla FireFox" /></a>
</div>
</div>
</div>
</div>
<div className={ this.state.activeLoginSection === 'login' && !this.state.nativeOnly ? 'show' : 'hide' }> <div className={ this.state.activeLoginSection === 'login' && !this.state.nativeOnly ? 'show' : 'hide' }>
<h4 className="color-white"> <h4 className="color-white">
{ translate('INDEX.WELCOME_LOGIN') } { translate('INDEX.WELCOME_LOGIN') }
@ -232,8 +202,7 @@ const LoginRender = function () {
id="walletseed" id="walletseed"
value={ this.state.randomSeed } value={ this.state.randomSeed }
onChange={ (e) => this.updateWalletSeed(e) } onChange={ (e) => this.updateWalletSeed(e) }
readOnly={ !this.isCustomWalletSeed() } readOnly={ !this.isCustomWalletSeed() }></textarea>
></textarea>
<button className="copy-floating-label" <button className="copy-floating-label"
htmlFor="walletseed" htmlFor="walletseed"
onClick={ () => this.copyPassPhraseToClipboard() }>{ translate('INDEX.COPY') }</button> onClick={ () => this.copyPassPhraseToClipboard() }>{ translate('INDEX.COPY') }</button>

19
react/src/components/overrides.scss

@ -1041,6 +1041,7 @@ select{
} }
.modal-body { .modal-body {
background: #f3f4f5; background: #f3f4f5;
border-radius: 4px;
} }
.modal-footer { .modal-footer {
margin-top: 15px; margin-top: 15px;
@ -1054,4 +1055,22 @@ select{
margin-bottom: 20px; margin-bottom: 20px;
} }
} }
}
.settings-help {
font-size: 20px;
position: relative;
top: 2px;
left: 10px;
color: #5683ad;
}
#SettingsAccordion {
.toggle {
position: relative;
top: 4px;
}
table {
width: 80%;
}
} }

6
react/src/components/toaster/toaster-item.js

@ -18,7 +18,7 @@ class ToasterItem extends React.Component {
type: props._type, type: props._type,
title: props.title, title: props.title,
autoClose: props.autoClose, autoClose: props.autoClose,
toastId: props.toastId toastId: props.toastId,
}; };
this.dismissToast = this.dismissToast.bind(this); this.dismissToast = this.dismissToast.bind(this);
@ -33,7 +33,7 @@ class ToasterItem extends React.Component {
type: props._type, type: props._type,
title: props.title, title: props.title,
autoClose: props.autoClose, autoClose: props.autoClose,
toastId: props.toastId toastId: props.toastId,
}); });
} else { } else {
this.setState({ this.setState({
@ -41,7 +41,7 @@ class ToasterItem extends React.Component {
type: null, type: null,
title: null, title: null,
autoClose: true, autoClose: true,
toastId: null toastId: null,
}); });
} }
} }

8
react/src/components/toaster/toaster.js

@ -17,12 +17,12 @@ class Toaster extends React.Component {
props.toasts) { props.toasts) {
this.setState({ this.setState({
toasts: props.toasts, toasts: props.toasts,
toastId: props.toasts.length toastId: props.toasts.length,
}); });
} else { } else {
this.setState({ this.setState({
toasts: [], toasts: [],
toastId: 0 toastId: 0,
}); });
} }
} }
@ -37,7 +37,9 @@ class Toaster extends React.Component {
} }
return ( return (
<ToasterItem key={ toast.toastId } {...toast} /> <ToasterItem
key={ toast.toastId }
{...toast} />
); );
}); });
} else { } else {

143
react/src/translate/en.js

@ -1,5 +1,34 @@
export const _lang = { export const _lang = {
'EN': { 'EN': {
'CLAIM_INTEREST': {
'REQ_P1': 'Requirements to accrue interest',
'REQ_P2': 'locktime field is set and amount is greater than',
'CLAIM_INTEREST': 'Claim interest',
'LOADING': 'Loading interest data',
'NO_DATA': 'No data'
},
'ABOUT': {
'ABOUT_AGAMA': 'About Agama',
'AGAMA_MODES': 'Agama Wallet is a desktop app that you can use to manage multiple cryptocurrency wallets. ' +
'When you set up a wallet, you can configure it to operate in one of the following modes:',
'BASILISK_MODE_DESC': 'Doesn\'t download the blockchain. Slightly slower transaction performance.',
'FULL_MODE_DESC': 'Downloads the full blockchain, which can take a while. Good transaction performance.',
'NATIVE_MODE_DESC': 'Only available for a few currencies. Like \'Full Mode\' but provides advanced functionality.',
'AGAMA_CAPABILITIES': 'Agama includes the following capabilities:',
'BARTER_DEX_DESC': 'Easily exchange cryptocurrencies via a shapeshift-like service.',
'ATOMIC_EXPLORER_DESC': 'A universal local explorer ensures you don\'t have query information from a centralized server.',
'AGAMA_NOTE': 'Note: Agama Wallet is still in development. ' +
'It is safe to use, but you should make proper backups. ' +
'We do not recommend using it as the primarily wallet for your cryptocurrencies.',
'TESTERS': 'Testers',
'TESTERS_P1': 'You can help us test Agama. Just',
'TESTERS_P2': 'download and install the latest release',
'TESTERS_P3': 'Then, report any bugs you encounter to our developers on the',
'TESTERS_P4': 'Your help is greatly appreciated!',
'AGAMA_DAPPS': 'Agama also supports the following desktop apps:',
'JUMBLR_DESC': 'A decentralized Bitcoin blockchain tumbler for privacy and lower fees.',
'BARTER_DEX_DESC_ALT': 'A decentralized coin exchange.',
},
'API': { 'API': {
'ERROR_SM': 'error', 'ERROR_SM': 'error',
'ATOMIC_EXPLORER_ERR': 'Atomic Explorer error', 'ATOMIC_EXPLORER_ERR': 'Atomic Explorer error',
@ -17,6 +46,24 @@ export const _lang = {
'NO_ACTIVE_COIN': 'No active coin', 'NO_ACTIVE_COIN': 'No active coin',
}, },
'INDEX': { 'INDEX': {
'T_FUNDS': 'Transparent funds',
'HASH': 'Hash',
'SYNC_IN_PROGRESS': 'Synchronization is in progress',
'UI_UPDATE_DOWNLOADED': 'UI update downloaded. Verifying',
'UI_UPDATED': 'UI is updated!',
'UI_UPDATE_ERROR': 'Error while verifying update file! Please retry again.',
'CHECKING_UI_UPDATE': 'Checking for UI update',
'NEW_UI_UPDATE': 'New UI update available',
'YOU_HAVE_LATEST_UI': 'You have the lastest UI version',
'DOWNLOADING_UI_UPDATE': 'Downloading UI update',
'LAST_50_LINES': 'last 50 lines',
'IS_DOWN': 'is down',
'REINDEX': 'reindex',
'RESCAN': 'rescan',
'BACKGROUND_PROCESS': 'background process',
'NONE': 'none',
'DAEMON_PARAM': 'Daemon param',
'FILTER_BY_ADDRESS': 'Filter by address',
'RESCANNING_LAST_BLOCKS': 'Rescanning last blocks...', 'RESCANNING_LAST_BLOCKS': 'Rescanning last blocks...',
'NO_DATA_AVAILABLE': 'No data available', 'NO_DATA_AVAILABLE': 'No data available',
'LOADING': 'Loading', 'LOADING': 'Loading',
@ -257,7 +304,7 @@ export const _lang = {
'SCAN_QRCODE_WEBCAM': 'Scan QR Code with webcam', 'SCAN_QRCODE_WEBCAM': 'Scan QR Code with webcam',
'TOGGLE_ZERO_ADDRESSES': 'Toggle empty addresses', 'TOGGLE_ZERO_ADDRESSES': 'Toggle empty addresses',
'NEXT_PAGE': 'Next Page', 'NEXT_PAGE': 'Next Page',
'PREVIOUS_PAGE': 'Previous Page' 'PREVIOUS_PAGE': 'Previous Page',
}, },
'ATOMIC': { 'ATOMIC': {
'RAW_OUTPUT': 'Raw Output', 'RAW_OUTPUT': 'Raw Output',
@ -277,9 +324,49 @@ export const _lang = {
'MODE': 'mode', 'MODE': 'mode',
'CRYPTO_CURRENCIES': 'Crypto Currencies', 'CRYPTO_CURRENCIES': 'Crypto Currencies',
'ASSETCHAINS': 'Assetchains', 'ASSETCHAINS': 'Assetchains',
'FIAT_CURRENCIES': 'Fiat Currencies' 'FIAT_CURRENCIES': 'Fiat Currencies',
}, },
'JUMBLR': { 'JUMBLR': {
'ABOUT': 'About Jumblr',
'JUMBLR_FUNCTIONS': 'Jumblr functions all locally which means no middle man is required to jumble your funds. ' +
'You take control over the whole process.',
'TIP': 'Tip',
'TIP_DESC': 'to achive maximum anonimity setup Jumblr node on a dedicated piece of hardware (laptop or VPS), use a separate IP address for main Jumblr node',
'PUBLIC_NODE': 'Public node',
'PRIVATE_NODE': 'Private node',
'DEPOSIT_ADDRESS': 'Deposit address',
'SECRET_ADDRESS': 'Secret address',
'DEPOSIT_FUNDS': 'Deposit funds',
'HOW_TO_USE': 'How to use Jumblr',
'CREATE_DEPOSIT_ADDRESS': 'Create deposit address',
'CREATE_SECRET_ADDRESS': 'Create secret address',
'SEND_FUNDS_TO_DEPOSIT': 'Send funds to deposit address',
'PLEASE_WRITE_DOWN_PASSPHRASE': 'Please write down your Jumblr passphrase and keept it safe.',
'THIS_IS_YOUR_MAIN_RECOVERY': 'This is your main recovery passphrase.',
'ALL_JUMBLR_ADDRESSES_CAN_BE': 'All Jumblr addresses can be regenrated based on it.',
'DONT_USE_SMART_EDITORS': 'do not use smart editors to store your passphrase as they tend to add extra characters.<br />This may result in passphrase mismatch with the original passphrase.',
'PASSPHRASE_COPIED': 'Passphrase copied',
'CREATE_JUMBLR_DEPOSIT_ADDRESS': 'Create Jumblr deposit address',
'YOUR_JUMBLR_DEPOSIT_ADDRESS': 'Your Jumblr deposit address',
'JUMBLR_SECRET_DESC_P1': 'Jumblr secret addresses are used for the final z -> t transactions.',
'JUMBLR_SECRET_DESC_P2': 'In order to allow larger accounts to obtain privacy, up to 777 secret addresses are supported.',
'JUMBLR_SECRET_DESC_P3': 'Whenever a z -> t stage is activated, a random secret address from the list of the then active secret addresses is selected.',
'JUMBLR_SECRET_DESC_P4': 'To add a new set of secret addresses enter address count below. The passphrase below is exactly the same you saw on the previous step.',
'JUMBLR_SECRET_DESC_P5': 'Your Jumblr secret address recovery passphrase will have the following pattern',
'JUMBLR_SECRET_DESC_P6': 'Where XXX any number from 001 to 777',
'NUMBER_OF_SECRET_ADDR': 'Number of secret addresses',
'CREATE_JUMBLR_SECRET_ADDR': 'Create Jumblr secret address(es)',
'SHOW_ADDRESS_LIST': 'Show address list',
'DEPOSIT_FORM_P1': 'Use the form below to send funds to your jumblr deposit address.',
'DEPOSIT_FORM_P2': 'You can also send funds to deposit address from an external service or another wallet.',
'IMPORT_SECRET_ADDRESS': 'Import secret address',
'CHECK_FUNDS': 'Check funds',
'SECRET_REGEN_DESC_P1': 'Enter your Jumblr passphrase you got previously during Public node configuration to import secret address.',
'SECRET_REGEN_DESC_P2': 'Passphrase example',
'SECRET_REGEN_DESC_P3': 'The form below will "regenerate" Jumblr secret address based on passphrase provided.',
'SECRET_REGEN_DESC_P4': 'After this final step expect to see funds processed and credited to your address after 2 days period.',
'IMPORT_JUMLR_SECRET_ADDRESSES': 'Import Jumblr secret address(es)',
'SHOW_ADDRESS_LIST': 'Show address list',
'NOTICE': 'EXPERIMENTAL TEST VERSION ONLY', 'NOTICE': 'EXPERIMENTAL TEST VERSION ONLY',
'DESCRIPTION': 'Jumblr feature is very experimental and for now, is Only enabled for testing and debugging. ' + 'DESCRIPTION': 'Jumblr feature is very experimental and for now, is Only enabled for testing and debugging. ' +
'Please use the current version of Jumblr only with small amounts if you are participating in testing this feature.', 'Please use the current version of Jumblr only with small amounts if you are participating in testing this feature.',
@ -335,7 +422,7 @@ export const _lang = {
'PRIV_TO_PRIV': 'Private to Private', 'PRIV_TO_PRIV': 'Private to Private',
'PRIV_TO_PUB': 'Private to Public', 'PRIV_TO_PUB': 'Private to Public',
'FINISHED': 'Finished', 'FINISHED': 'Finished',
'PENDING': 'Pending' 'PENDING': 'Pending',
}, },
'DASHBOARD': { 'DASHBOARD': {
'SELECT_ADDRESS': '- Select Address -', 'SELECT_ADDRESS': '- Select Address -',
@ -351,9 +438,26 @@ export const _lang = {
'MINED': 'Mined', 'MINED': 'Mined',
'IMMATURE': 'Immature', 'IMMATURE': 'Immature',
'ZADDR_NOT_LISTED': 'Z Address not listed by wallet', 'ZADDR_NOT_LISTED': 'Z Address not listed by wallet',
'ADDR_COPIED': 'Address Copied' 'ADDR_COPIED': 'Address Copied',
'QR_ERR_NO_VIDEO_DEVICE': 'Error: No video input devices found!',
'QR_ERR_UNKNOWN': 'Error: unknown error!',
}, },
'TOASTR': { 'TOASTR': {
'RESTART_AGAMA_WITH_REINDEX_PARAM': 'Restart Agama and run Komodo with -reindex param',
'JUMBLR_DEPOSIT_ADDRESS_SET': 'Jumblr deposit address is set',
'JUMBLR_SECRET_ADDRESSES_IMPORTED': 'Jumblr secret addresses imported',
'JUMBLR_SECRET_ADDRESS_IMPORTED': 'Jumblr secret address imported',
'JUMBLR_WRONG_PASSPHRASE': 'Provided passphrase has wrong format',
'JUMBLR_SECRET_ADDRESS_SET': 'Jumblr secret address is set',
'JUMBLR_SECRET_ADDRESSES_SET': 'Jumblr secret addresses are set',
'ENTER_CORRECT_ADDR_COUNT': 'Enter a correct address count value',
'TXID_COPIED': 'Transaction ID copied',
'CLAIM_INTEREST_BALANCE_SENT_P1': 'Your full balance is sent to address',
'CLAIM_INTEREST_BALANCE_SENT_P2': 'Check back your new balance in a few minutes.',
'BASILISK_CONN_ERROR': 'Basilisk connection error',
'SETTINGS_RESET': 'Settings are reset to default',
'SETTINGS_SAVED': 'Settings are saved',
'TRANSACTION_FAILED': 'Transaction failed',
'WALLET_NOTIFICATION': 'Wallet Notification', 'WALLET_NOTIFICATION': 'Wallet Notification',
'ACCOUNT_NOTIFICATION': 'Account Notification', 'ACCOUNT_NOTIFICATION': 'Account Notification',
'BASILISK_NOTIFICATION': 'Basilisk Notification', 'BASILISK_NOTIFICATION': 'Basilisk Notification',
@ -416,16 +520,16 @@ export const _lang = {
'SELECTION_NOT_FOUND': 'Local coin list is not found', 'SELECTION_NOT_FOUND': 'Local coin list is not found',
'LOCAL_UTXO_UPDATED': 'Local UTXO data is updated. Ready to send new transaction.', 'LOCAL_UTXO_UPDATED': 'Local UTXO data is updated. Ready to send new transaction.',
'PROCESSING_UTXO': 'Processing UTXO', 'PROCESSING_UTXO': 'Processing UTXO',
'AWAITING_TX_RESP': 'Awaiting transaction data response' 'AWAITING_TX_RESP': 'Awaiting transaction data response',
}, },
'COIN_WALLETS': { 'COIN_WALLETS': {
'TX_FAILED': 'Transaction Failed', 'TX_FAILED': 'Transaction Failed',
'TX_SUCCESS': 'Transaction Successful', 'TX_SUCCESS': 'Transaction Successful',
'TX': 'Transaction' 'TX': 'Transaction',
}, },
'IAPI': { 'IAPI': {
'PUBLIC_SM': 'public', 'PUBLIC_SM': 'public',
'CON_STATUS': 'Connection status' 'CON_STATUS': 'Connection status',
}, },
'KMD_NATIVE': { 'KMD_NATIVE': {
'SELECT_ADDRESS': 'Select Transparent or Private Address', 'SELECT_ADDRESS': 'Select Transparent or Private Address',
@ -439,9 +543,10 @@ export const _lang = {
'SUCCESS': 'Success', 'SUCCESS': 'Success',
'MESSAGE': 'Message', 'MESSAGE': 'Message',
'EXECUTION_SECONDS': 'Execution Seconds', 'EXECUTION_SECONDS': 'Execution Seconds',
'WAIT_UNTIL_SYNCED': 'Transaction history is unavailable during synchronization progresss' 'WAIT_UNTIL_SYNCED': 'Transaction history is unavailable during synchronization progresss',
}, },
'LOGIN': { 'LOGIN': {
'QUICK_ACCESS': 'Quick access',
'PWD_REQ': 'Password is required.', 'PWD_REQ': 'Password is required.',
'WALLET_SEED_REQ': 'Wallet seed is required.', 'WALLET_SEED_REQ': 'Wallet seed is required.',
'SAVED_WALLET_SEED': 'Have you saved your wallet seed?', 'SAVED_WALLET_SEED': 'Have you saved your wallet seed?',
@ -462,13 +567,19 @@ export const _lang = {
'WAVES_SEED': 'Waves', 'WAVES_SEED': 'Waves',
'NXT_SEED': 'NXT', 'NXT_SEED': 'NXT',
'SEED_COPIED': 'Seed copied', 'SEED_COPIED': 'Seed copied',
'SEED_SUCCESSFULLY_COPIED': 'The seed was successfully copied' 'SEED_SUCCESSFULLY_COPIED': 'The seed was successfully copied',
}, },
'SIDEBAR': { 'SIDEBAR': {
'EDEX_MOTTO': 'Most Secure, Easy and Native Decentralised Exchange', 'EDEX_MOTTO': 'Most Secure, Easy and Native Decentralised Exchange',
'JUMBLR_MOTTO': 'Secure, Native and Decentralised Coin Anonymizer' 'JUMBLR_MOTTO': 'Secure, Native and Decentralised Coin Anonymizer',
}, },
'SETTINGS': { 'SETTINGS': {
'PROGRESS': 'Progress',
'SUPPORT_TICKETS': 'Support tickets',
'GET_SLACK_INVITE': 'Get Slack invite',
'ADDRESS_LIST': 'Address list',
'WIF_KEY_LIST': 'Wif key list',
'CLI_RESPONSE': 'CLI response',
'PASSPHRASE_REQ': 'Passphrase is required.', 'PASSPHRASE_REQ': 'Passphrase is required.',
'SAVE_APP_CONFIG': 'Save app config', 'SAVE_APP_CONFIG': 'Save app config',
'CONFIG_RESTART_REQUIRED': 'Most changes to app config require wallet restart!', 'CONFIG_RESTART_REQUIRED': 'Most changes to app config require wallet restart!',
@ -493,13 +604,13 @@ export const _lang = {
'ADD_PEER_IP': 'Add Peer IP', 'ADD_PEER_IP': 'Add Peer IP',
'APP_SESSION': 'App Session', 'APP_SESSION': 'App Session',
'EXPORT_KEYS_NOTE': 'Note: it\'s important that you provide the same passphrase you used to login to the wallet!<br>' + 'EXPORT_KEYS_NOTE': 'Note: it\'s important that you provide the same passphrase you used to login to the wallet!<br>' +
'In case passphrases will not match wallet is going to log you out of current session.' 'In case passphrases will not match wallet is going to log you out of current session.',
}, },
'TX_INFO': { 'TX_INFO': {
'ADDRESS': 'address', 'ADDRESS': 'address',
'AMOUNT': 'amount', 'AMOUNT': 'amount',
'CATEGORY': 'category', 'CATEGORY': 'category',
'CONFIRMATIONS': 'confirmations' 'CONFIRMATIONS': 'confirmations',
}, },
'SEND': { 'SEND': {
'PRESS_UPDATE_BTN': 'N/A. Press update button.', 'PRESS_UPDATE_BTN': 'N/A. Press update button.',
@ -526,7 +637,7 @@ export const _lang = {
'AMOUNT_POSITIVE_NUMBER': 'Amount must be a positive number', 'AMOUNT_POSITIVE_NUMBER': 'Amount must be a positive number',
'FEE_POSITIVE_NUMBER': 'Fee must be a positive number', 'FEE_POSITIVE_NUMBER': 'Fee must be a positive number',
'TOTAL_AMOUNT_POSITIVE_NUMBER': 'Total amount (amount - fee) must be a positive number', 'TOTAL_AMOUNT_POSITIVE_NUMBER': 'Total amount (amount - fee) must be a positive number',
'INSUFFICIENT_FUNDS': 'You don\'t have the necessary funds to make this transaction' 'INSUFFICIENT_FUNDS': 'You don\'t have the necessary funds to make this transaction',
}, },
'FIAT_CURRENCIES': { 'FIAT_CURRENCIES': {
'AUD': 'Australian Dollar (AUD)', 'AUD': 'Australian Dollar (AUD)',
@ -560,7 +671,7 @@ export const _lang = {
'CHF': 'Swiss Franc (CHF)', 'CHF': 'Swiss Franc (CHF)',
'THB': 'Thai Baht (THB)', 'THB': 'Thai Baht (THB)',
'TRY': 'Turkish Lira (TRY)', 'TRY': 'Turkish Lira (TRY)',
'USD': 'US Dollar (USD)' 'USD': 'US Dollar (USD)',
} },
} },
}; };

4
react/src/util/cacheFormat.js

@ -13,7 +13,7 @@ export function edexRemoveTXID(_obj, address, txidArray) {
if (_obj, _obj.basilisk) { if (_obj, _obj.basilisk) {
if (Object.keys(_obj.basilisk).length === 0) { if (Object.keys(_obj.basilisk).length === 0) {
console.log('no coin nodes to parse'); console.warn('no coin nodes to parse');
} else { } else {
for (let key in _obj.basilisk) { for (let key in _obj.basilisk) {
for (let coinAddr in _obj.basilisk[key]) { for (let coinAddr in _obj.basilisk[key]) {
@ -44,7 +44,7 @@ export function edexRemoveTXID(_obj, address, txidArray) {
} }
} }
} else { } else {
console.log('basilisk node is missing'); console.warn('basilisk node is missing');
} }
return _obj; return _obj;

10
react/src/util/coinHelper.js

@ -345,8 +345,8 @@ export function getCoinTitle(coin) {
} }
return { return {
'logo': coinlogo, logo: coinlogo,
'name': coinname, name: coinname,
titleBG, titleBG,
transparentBG, transparentBG,
}; };
@ -386,8 +386,8 @@ export function getModeInfo(mode) {
} }
return { return {
'code': modecode, code: modecode,
'tip': modetip, tip: modetip,
'color': modecolor color: modecolor,
}; };
} }

48
react/src/util/time.js

@ -1,33 +1,33 @@
export function secondsToString(seconds, skipMultiply, showSeconds) { export function secondsToString(seconds, skipMultiply, showSeconds) {
const a = new Date(seconds * (skipMultiply ? 1 : 1000)), const a = new Date(seconds * (skipMultiply ? 1 : 1000));
months = [ const months = [
'Jan', 'Jan',
'Feb', 'Feb',
'Mar', 'Mar',
'Apr', 'Apr',
'May', 'May',
'Jun', 'Jun',
'Jul', 'Jul',
'Aug', 'Aug',
'Sep', 'Sep',
'Oct', 'Oct',
'Nov', 'Nov',
'Dec' 'Dec'
], ];
year = a.getFullYear(), const year = a.getFullYear();
month = months[a.getMonth()], const month = months[a.getMonth()];
date = a.getDate(), const date = a.getDate();
hour = a.getHours() < 10 ? `0${a.getHours()}` : a.getHours(), const hour = a.getHours() < 10 ? `0${a.getHours()}` : a.getHours();
min = a.getMinutes() < 10 ? `0${a.getMinutes()}` : a.getMinutes(), const min = a.getMinutes() < 10 ? `0${a.getMinutes()}` : a.getMinutes();
sec = a.getSeconds(), const sec = a.getSeconds();
time = `${date} ${month} ${year} ${hour}:${min}${(showSeconds ? ':' + sec : '')}`; const time = `${date} ${month} ${year} ${hour}:${min}${(showSeconds ? ':' + sec : '')}`;
return time; return time;
} }
export function checkTimestamp(dateToCheck) { export function checkTimestamp(dateToCheck) {
const currentEpochTime = new Date(Date.now()) / 1000, const currentEpochTime = new Date(Date.now()) / 1000;
secondsElapsed = Number(currentEpochTime) - Number(dateToCheck / 1000); const secondsElapsed = Number(currentEpochTime) - Number(dateToCheck / 1000);
return Math.floor(secondsElapsed); return Math.floor(secondsElapsed);
} }

Loading…
Cancel
Save