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

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

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

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

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

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

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

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

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

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

@ -38,7 +38,7 @@ export function getBasiliskTransactionsList(coin, address) {
json = json.result.basilisk;
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 = {
mode,
chain,
cmd
cmd,
};
return new Promise((resolve, reject) => {
@ -19,7 +19,7 @@ export function shepherdCliPromise(mode, chain, cmd) {
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ 'payload': _payload }),
body: JSON.stringify({ payload: _payload }),
})
.catch(function(error) {
console.log(error);
@ -40,7 +40,7 @@ export function shepherdCli(mode, chain, cmd) {
const _payload = {
mode,
chain,
cmd
cmd,
};
return dispatch => {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -23,22 +23,22 @@ function getSyncInfoState(json) {
export function getSyncInfo(coin) {
const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'coin': coin,
'agent': 'bitcoinrpc',
'method': 'getinfo',
userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
coin: coin,
agent: 'bitcoinrpc',
method: 'getinfo',
};
return dispatch => {
const _timestamp = Date.now();
if (Config.debug) {
dispatch(logGuiHttp({
'timestamp': _timestamp,
'function': 'getSyncInfo',
'type': 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload,
'status': 'pending',
timestamp: _timestamp,
function: 'getSyncInfo',
type: 'post',
url: `http://127.0.0.1:${Config.iguanaCorePort}`,
payload: payload,
status: 'pending',
}));
}
@ -50,9 +50,9 @@ export function getSyncInfo(coin) {
console.log(error);
if (Config.debug) {
dispatch(logGuiHttp({
'timestamp': _timestamp,
'status': 'error',
'response': error,
timestamp: _timestamp,
status: 'error',
response: error,
}));
}
dispatch(
@ -71,9 +71,9 @@ export function getSyncInfo(coin) {
.then(function(json) {
if (Config.debug) {
dispatch(logGuiHttp({
'timestamp': _timestamp,
'status': 'success',
'response': json,
timestamp: _timestamp,
status: 'success',
response: json,
}));
}
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) {
const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': 'bitcoinrpc',
'method': 'encryptwallet',
'passphrase': _passphrase,
userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
agent: 'bitcoinrpc',
method: 'encryptwallet',
passphrase: _passphrase,
};
return dispatch => {
const _timestamp = Date.now();
if (Config.debug) {
dispatch(logGuiHttp({
'timestamp': _timestamp,
'function': 'encryptWallet',
'type': 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload,
'status': 'pending',
timestamp: _timestamp,
function: 'encryptWallet',
type: 'post',
url: `http://127.0.0.1:${Config.iguanaCorePort}`,
payload: payload,
status: 'pending',
}));
}
@ -43,9 +43,9 @@ export function encryptWallet(_passphrase, cb, coin) {
console.log(error);
if (Config.debug) {
dispatch(logGuiHttp({
'timestamp': _timestamp,
'status': 'error',
'response': error,
timestamp: _timestamp,
status: 'error',
response: error,
}));
}
dispatch(
@ -61,9 +61,9 @@ export function encryptWallet(_passphrase, cb, coin) {
.then(json => {
if (Config.debug) {
dispatch(logGuiHttp({
'timestamp': _timestamp,
'status': 'success',
'response': json,
timestamp: _timestamp,
status: 'success',
response: json,
}));
}
dispatch(
@ -79,23 +79,23 @@ export function encryptWallet(_passphrase, cb, coin) {
export function walletPassphrase(_passphrase) {
const payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': 'bitcoinrpc',
'method': 'walletpassphrase',
'password': _passphrase,
'timeout': '300000',
userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
agent: 'bitcoinrpc',
method: 'walletpassphrase',
password: _passphrase,
timeout: '300000',
};
return dispatch => {
const _timestamp = Date.now();
if (Config.debug) {
dispatch(logGuiHttp({
'timestamp': _timestamp,
'function': 'walletpassphrase',
'type': 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': payload,
'status': 'pending',
timestamp: _timestamp,
function: 'walletpassphrase',
type: 'post',
url: `http://127.0.0.1:${Config.iguanaCorePort}`,
payload: payload,
status: 'pending',
}));
}
@ -107,9 +107,9 @@ export function walletPassphrase(_passphrase) {
console.log(error);
if (Config.debug) {
dispatch(logGuiHttp({
'timestamp': _timestamp,
'status': 'error',
'response': error,
timestamp: _timestamp,
status: 'error',
response: error,
}));
}
dispatch(
@ -123,9 +123,9 @@ export function walletPassphrase(_passphrase) {
.then(json => {
if (Config.debug) {
dispatch(logGuiHttp({
'timestamp': _timestamp,
'status': 'success',
'response': json,
timestamp: _timestamp,
status: 'success',
response: json,
}));
}
})
@ -134,24 +134,24 @@ export function walletPassphrase(_passphrase) {
export function iguanaWalletPassphrase(_passphrase) {
const _payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'handle': '',
'password': _passphrase,
'timeout': '2592000',
'agent': 'bitcoinrpc',
'method': 'walletpassphrase',
userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
handle: '',
password: _passphrase,
timeout: '2592000',
agent: 'bitcoinrpc',
method: 'walletpassphrase',
};
return dispatch => {
const _timestamp = Date.now();
if (Config.debug) {
dispatch(logGuiHttp({
'timestamp': _timestamp,
'function': 'iguanaWalletPassphrase',
'type': 'post',
'url': `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': _payload,
'status': 'pending',
timestamp: _timestamp,
function: 'iguanaWalletPassphrase',
type: 'post',
url: `http://127.0.0.1:${Config.iguanaCorePort}`,
payload: _payload,
status: 'pending',
}));
}
@ -163,9 +163,9 @@ export function iguanaWalletPassphrase(_passphrase) {
console.log(error);
if (Config.debug) {
dispatch(logGuiHttp({
'timestamp': _timestamp,
'status': 'error',
'response': error,
timestamp: _timestamp,
status: 'error',
response: error,
}));
}
dispatch(
@ -180,9 +180,9 @@ export function iguanaWalletPassphrase(_passphrase) {
.then(json => {
if (Config.debug) {
dispatch(logGuiHttp({
'timestamp': _timestamp,
'status': 'success',
'response': json,
timestamp: _timestamp,
status: 'success',
response: json,
}));
}
dispatch(iguanaWalletPassphraseState(json, dispatch));
@ -192,21 +192,21 @@ export function iguanaWalletPassphrase(_passphrase) {
export function iguanaActiveHandle(getMainAddress) {
const _payload = {
'userpass': `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
'agent': 'SuperNET',
'method': 'activehandle',
userpass: `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`,
agent: 'SuperNET',
method: 'activehandle',
};
return dispatch => {
const _timestamp = Date.now();
if (Config.debug) {
dispatch(logGuiHttp({
'timestamp': _timestamp,
'function': 'iguanaActiveHandle',
'type': 'post',
'url': Config.iguanaLessMode ? `http://127.0.0.1:${Config.agamaPort}/shepherd/SuperNET/activehandle` : `http://127.0.0.1:${Config.iguanaCorePort}`,
'payload': _payload,
'status': 'pending',
timestamp: _timestamp,
function: 'iguanaActiveHandle',
type: 'post',
url: Config.iguanaLessMode ? `http://127.0.0.1:${Config.agamaPort}/shepherd/SuperNET/activehandle` : `http://127.0.0.1:${Config.iguanaCorePort}`,
payload: _payload,
status: 'pending',
}));
}
@ -232,9 +232,9 @@ export function iguanaActiveHandle(getMainAddress) {
console.log(error);
if (Config.debug) {
dispatch(logGuiHttp({
'timestamp': _timestamp,
'status': 'error',
'response': error,
timestamp: _timestamp,
status: 'error',
response: error,
}));
}
dispatch(updateErrosStack('activeHandle'));
@ -250,9 +250,9 @@ export function iguanaActiveHandle(getMainAddress) {
.then(json => {
if (Config.debug) {
dispatch(logGuiHttp({
'timestamp': _timestamp,
'status': 'success',
'response': json,
timestamp: _timestamp,
status: 'success',
response: json,
}));
}
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, {
coins: _coins
coins: _coins,
}));
}
@ -346,6 +346,7 @@ class AddCoin extends React.Component {
'error'
)
);
return true;
}
}

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

@ -162,10 +162,10 @@ const CoinSelectorsRender = function(item, coin, i) {
name="daemonParam"
onChange={ (event) => this.updateDaemonParam(event, i) }
autoFocus>
<option>Daemon param: none</option>
<option value="silent">Daemon param: background process</option>
<option value="reindex">Daemon param: reindex</option>
<option value="rescan">Daemon param: rescan</option>
<option>{ translate('INDEX.DAEMON_PARAM') }: none</option>
<option value="silent">{ translate('INDEX.DAEMON_PARAM') }: { translate('INDEX.BACKGROUND_PROCESS') }</option>
<option value="reindex">{ translate('INDEX.DAEMON_PARAM') }: { translate('INDEX.REINDEX') }</option>
<option value="rescan">{ translate('INDEX.DAEMON_PARAM') }: { translate('INDEX.RESCAN') }</option>
</select>
</div>
</div>
@ -180,7 +180,7 @@ const CoinSelectorsRender = function(item, coin, i) {
className="slider"
onClick={ () => this.toggleSyncOnlyMode(i) }></div>
</label>
<div
<div
className="toggle-label"
onClick={ () => this.toggleSyncOnlyMode(i) }>
{ 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;
}
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.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.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.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.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.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.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.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.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.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.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.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.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.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'};
if (coin === 'KMD') {
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 {
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 ( 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 {
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': {
'name': 'SUPERNET',
'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}) : {},
'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})
'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})
},
'REVS': {
'name': 'REVS',
'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}) : {},
'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})
'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})
},
'WLC': {
'name': 'WIRELESS',
'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}) : {},
'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})
'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})
},
'PANGEA': {
'name': 'PANGEA',
'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}) : {},
'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})
'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})
},
'DEX': {
'name': 'DEX',
'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}) : {},
'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})
'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})
},
'JUMBLR': {
'name': 'JUMBLR',
'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}) : {},
'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})
'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})
},
'BET': {
'name': 'BET',
'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}) : {},
'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})
'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})
},
'CRYPTO': {
'name': 'CRYPTO',
'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}) : {},
'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})
'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})
},
'HODL': {
'name': 'HODL',
'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}) : {},
'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})
'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})
},
'SHARK': {
'name': 'SHARK',
'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}) : {},
'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})
'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})
},
'BOTS': {
'name': 'BOTS',
'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}) : {},
'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})
'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})
},
'MGW': {
'name': 'MGW',
'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}) : {},
'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})
'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})
},
'MVP': {
'name': 'MVP',
'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}) : {},
'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})
'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})
},
'KV': {
'name': 'KV',
'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}) : {},
'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})
'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})
},
'CEAL': {
'name': 'CEAL',
'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}) : {},
'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})
'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})
},
'MESH': {
'name': 'MESH',
'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}) : {},
'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})
'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})
},
'COQUI': {
'name': 'COQUI',
'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}) : {},
'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})
'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})
}
};

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

@ -1,71 +1,59 @@
import React from "react";
import { translate } from '../../../translate/translate';
class About extends React.Component {
render() {
return (
<div className="page margin-left-0">
<div className="page-content">
<h2>About Agama</h2>
<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>
<h2>{ translate('ABOUT.ABOUT_AGAMA') }</h2>
<p>{ translate('ABOUT.AGAMA_MODES') }</p>
<ul>
<li>
<span className="font-weight-600">Basilisk Mode</span>:&nbsp;
Doesn't download the blockchain. Slightly slower
transaction performance.
<span className="font-weight-600">{ translate('INDEX.BASILISK_MODE') }</span>:&nbsp;
{ translate('ABOUT.BASILISK_MODE_DESC') }
</li>
<li>
<span className="font-weight-600">Full Mode</span>:&nbsp;
Downloads the full blockchain, which can take a
while. Good transaction performance.
<span className="font-weight-600">{ translate('INDEX.FULL_MODE') }</span>:&nbsp;
{ translate('ABOUT.FULL_MODE_DESC') }
</li>
<li>
<span className="font-weight-600">Native Mode</span>:&nbsp;
Only available for a few currencies. Like 'Full
Mode' but provides advanced functionality.
<span className="font-weight-600">{ translate('INDEX.NATIVE_MODE') }</span>:&nbsp;
{ translate('ABOUT.NATIVE_MODE_DESC') }
</li>
</ul>
Agama includes the following capabilities:
{ translate('ABOUT.AGAMA_CAPABILITIES') }
<ul>
<li>
<span className="font-weight-600">BarterDEX</span>:&nbsp;
Easily exchange cryptocurrencies via a
shapeshift-like service.&nbsp;
{ translate('ABOUT.BARTER_DEX_DESC') }&nbsp;
<a href="https://supernet.org/en/technology/whitepapers/easydex-a-practical-native-dex" target="_blank">
(BarterDEX A Practical Native DEX)
</a>
</li>
<li>
<span className="font-weight-600">Atomic Exporer</span>: &nbsp;
A universal local explorer ensures you don't
have query information from a centralized
server.
{ translate('ABOUT.ATOMIC_EXPLORER_DESC') }
</li>
</ul>
<span className="font-weight-600">
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>
<span className="font-weight-600">{ translate('ABOUT.AGAMA_NOTE') }</span>
<br/><br/>
<div className="font-weight-600">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>.
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.
Your help is greatly appreciated!
<div className="font-weight-600">{ translate('ABOUT.TESTERS') }</div>
{ translate('ABOUT.TESTERS_P1') } <a target="_blank" href="https://supernet.org/en/products/agama-wallet">{ translate('ABOUT.TESTERS_P2') }</a>.
{ translate('ABOUT.TESTERS_P3') } <a target="_blank" href="https://sprnt.slack.com/messages/C0HT9MH96/">#testing-agama</a> Slack channel.
{ translate('ABOUT.TESTERS_P4') }
<br /><br />
Agama also supports the following desktop apps:
{ translate('ABOUT.AGAMA_DAPPS') }
<ul>
<li>
<span className="font-weight-600">Jumblr</span>: A decentralized Bitcoin blockchain tumbler for privacy
and lower fees.
<span className="font-weight-600">Jumblr</span>: { translate('ABOUT.JUMBLR_DESC') }
</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>
</ul>
</div>

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

@ -26,55 +26,55 @@ class Atomic extends React.Component {
updateSelectedAPI(e) {
this.setState(Object.assign({}, this.state, {
'api': e.target.value,
api: e.target.value,
}));
}
updateSelectedCoin(e) {
this.setState(Object.assign({}, this.state, {
'coin': e.target.value.split('|')[0],
coin: e.target.value.split('|')[0],
}));
}
updateInput(e) {
this.setState(Object.assign({}, this.state, {
'input': e.target.value,
input: e.target.value,
}));
}
getAtomicData() {
const tmpIguanaRPCAuth = `tmpIgRPCUser@${sessionStorage.getItem('IguanaRPCAuth')}`;
let ExplorerInputData;
let explorerInputData;
const _coin = this.state.coin;
const _input = this.state.input;
switch (this.state.api) {
case 'history':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'timeout': 20000,
'agent': 'basilisk',
'method': 'history',
'vals': {
'coin': _coin,
'addresses': [ _input ],
explorerInputData = {
userpass: tmpIguanaRPCAuth,
timeout: 20000,
agent: 'basilisk',
method: 'history',
vals: {
coin: _coin,
addresses: [ _input ],
}
};
break;
case 'getbalance':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'coin': _coin,
'method': 'getbalance',
'params': [ _input ],
explorerInputData = {
userpass: tmpIguanaRPCAuth,
coin: _coin,
method: 'getbalance',
params: [ _input ],
};
break;
case 'listunspent':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'coin': _coin,
'method': 'listunspent',
'params': [
explorerInputData = {
userpass: tmpIguanaRPCAuth,
coin: _coin,
method: 'listunspent',
params: [
1,
9999999,
[ _input ],
@ -82,253 +82,254 @@ class Atomic extends React.Component {
};
break;
case 'txid':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'coin': _coin,
'method': 'getrawtransaction',
'params': [ _input ],
explorerInputData = {
userpass: tmpIguanaRPCAuth,
coin: _coin,
method: 'getrawtransaction',
params: [ _input ],
};
break;
case 'blockash':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'coin': _coin,
'agent': 'bitcoinrpc',
'method': 'getblockhash',
'height': _input,
explorerInputData = {
userpass: tmpIguanaRPCAuth,
coin: _coin,
agent: 'bitcoinrpc',
method: 'getblockhash',
height: _input,
};
break;
case 'chaintip':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'coin': _coin,
'agent': 'bitcoinrpc',
'method': 'getbestblockhash',
explorerInputData = {
userpass: tmpIguanaRPCAuth,
coin: _coin,
agent: 'bitcoinrpc',
method: 'getbestblockhash',
};
break;
case 'activehandle':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'agent': 'SuperNET',
'method': 'activehandle',
explorerInputData = {
userpass: tmpIguanaRPCAuth,
agent: 'SuperNET',
method: 'activehandle',
};
break;
case 'gettransaction':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'coin': _coin,
'agent': 'bitcoinrpc',
'method': 'gettransaction',
'txid': _input,
explorerInputData = {
userpass: tmpIguanaRPCAuth,
coin: _coin,
agent: 'bitcoinrpc',
method: 'gettransaction',
txid: _input,
};
break;
case 'dex_getinfo':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'agent': 'dex',
'method': 'getinfo',
'symbol': _coin,
explorerInputData = {
userpass: tmpIguanaRPCAuth,
agent: 'dex',
method: 'getinfo',
symbol: _coin,
};
break;
case 'dex_getnotaries':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'agent': 'dex',
'method': 'getnotaries',
'symbol': _coin,
explorerInputData = {
userpass: tmpIguanaRPCAuth,
agent: 'dex',
method: 'getnotaries',
symbol: _coin,
};
break;
case 'dex_alladdresses':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'agent': 'dex',
'method': 'alladdresses',
'symbol': _coin,
explorerInputData = {
userpass: tmpIguanaRPCAuth,
agent: 'dex',
method: 'alladdresses',
symbol: _coin,
};
break;
case 'dex_importaddress':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'agent': 'dex',
'method': 'importaddress',
'address': _input,
'symbol': _coin,
explorerInputData = {
userpass: tmpIguanaRPCAuth,
agent: 'dex',
method: 'importaddress',
address: _input,
symbol: _coin,
};
break;
case 'dex_checkaddress':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'agent': 'dex',
'method': 'checkaddress',
'ddress': _input,
'symbol': _coin,
explorerInputData = {
userpass: tmpIguanaRPCAuth,
agent: 'dex',
method: 'checkaddress',
address: _input,
symbol: _coin,
};
break;
case 'dex_validateaddress':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'agent': 'dex',
'method': 'validateaddress',
'address': _input,
'symbol': _coin,
explorerInputData = {
userpass: tmpIguanaRPCAuth,
agent: 'dex',
method: 'validateaddress',
address: _input,
symbol: _coin,
};
break;
case 'dex_getbestblockhash':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'agent': 'dex',
'method': 'getbestblockhash',
'symbol': _coin,
explorerInputData = {
userpass: tmpIguanaRPCAuth,
agent: 'dex',
method: 'getbestblockhash',
symbol: _coin,
};
break;
case 'dex_listtransactions':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'agent': 'dex',
'method': 'listtransactions',
'address': _input,
'count': 100,
'skip': 0,
'symbol': _coin,
explorerInputData = {
userpass: tmpIguanaRPCAuth,
agent: 'dex',
method: 'listtransactions',
address: _input,
count: 100,
skip: 0,
symbol: _coin,
};
break;
case 'dex_listtransactions2':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'agent': 'dex',
'method': 'listtransactions2',
'address': _input,
'count': 100,
'skip': 0,
'symbol': _coin,
explorerInputData = {
userpass: tmpIguanaRPCAuth,
agent: 'dex',
method: 'listtransactions2',
address: _input,
count: 100,
skip: 0,
symbol: _coin,
};
break;
case 'dex_listunspent':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'agent': 'dex',
'method': 'listunspent',
'address': _input,
'symbol': _coin,
explorerInputData = {
userpass: tmpIguanaRPCAuth,
agent: 'dex',
method: 'listunspent',
address: _input,
symbol: _coin,
};
break;
case 'dex_listspent':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'agent': 'dex',
'method': 'listspent',
'address': _input,
'symbol': _coin,
explorerInputData = {
userpass: tmpIguanaRPCAuth,
agent: 'dex',
method: 'listspent',
address: _input,
symbol: _coin,
};
break;
case 'dex_listunspent2':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'agent': 'dex',
'method': 'listunspent2',
'address': _input,
'symbol': _coin,
explorerInputData = {
userpass: tmpIguanaRPCAuth,
agent: 'dex',
method: 'listunspent2',
address: _input,
symbol: _coin,
};
break;
case 'dex_getblockhash':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'agent': 'dex',
'method': 'getblockhash',
'height': 100,
'symbol': _coin,
explorerInputData = {
userpass: tmpIguanaRPCAuth,
agent: 'dex',
method: 'getblockhash',
height: 100,
symbol: _coin,
};
break;
case 'dex_getblock':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'agent': 'dex',
'method': 'getblock',
'hash': _input,
'symbol': _coin,
explorerInputData = {
userpass: tmpIguanaRPCAuth,
agent: 'dex',
method: 'getblock',
hash: _input,
symbol: _coin,
};
break;
case 'dex_gettxin':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'agent': 'dex',
'method': 'gettxin',
'vout': 0,
'txid': _input,
'symbol': _coin,
explorerInputData = {
userpass: tmpIguanaRPCAuth,
agent: 'dex',
method: 'gettxin',
vout: 0,
txid: _input,
symbol: _coin,
};
break;
case 'dex_gettxout':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'agent': 'dex',
'method': 'gettxout',
'vout': 0,
'txid': _input,
'symbol': _coin,
explorerInputData = {
userpass: tmpIguanaRPCAuth,
agent: 'dex',
method: 'gettxout',
vout: 0,
txid: _input,
symbol: _coin,
};
break;
case 'dex_gettransaction':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'agent': 'dex',
'method': 'gettransaction',
'txid': _input,
'symbol': _coin,
explorerInputData = {
userpass: tmpIguanaRPCAuth,
agent: 'dex',
method: 'gettransaction',
txid: _input,
symbol: _coin,
};
break;
case 'dex_getbalance':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'agent': 'dex',
'method': 'getbalance',
'address': _input,
'symbol': _coin,
explorerInputData = {
userpass: tmpIguanaRPCAuth,
agent: 'dex',
method: 'getbalance',
address: _input,
symbol: _coin,
};
break;
case 'dex_getsupply':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'agent': 'dex',
'method': 'getbalance',
'address': '*',
'symbol': _coin,
'timeout': 600000,
explorerInputData = {
userpass: tmpIguanaRPCAuth,
agent: 'dex',
method: 'getbalance',
address: '*',
symbol: _coin,
timeout: 600000,
};
break;
case 'dex_sendrawtransaction':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'agent': 'dex',
'method': 'sendrawtransaction',
'signedtx': _input,
'symbol': _coin,
explorerInputData = {
userpass: tmpIguanaRPCAuth,
agent: 'dex',
method: 'sendrawtransaction',
signedtx: _input,
symbol: _coin,
};
break;
case 'basilisk_refresh':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'agent': 'basilisk',
'method': 'refresh',
'address': _input,
'symbol': _coin,
'timeout': 600000,
explorerInputData = {
userpass: tmpIguanaRPCAuth,
agent: 'basilisk',
method: 'refresh',
address: _input,
symbol: _coin,
timeout: 600000,
};
break;
case 'jumblr_status':
ExplorerInputData = {
'userpass': tmpIguanaRPCAuth,
'agent': 'jumblr',
'method': 'status',
explorerInputData = {
userpass: tmpIguanaRPCAuth,
agent: 'jumblr',
method: 'status',
};
break;
}
Store.dispatch(atomic(ExplorerInputData));
Store.dispatch(atomic(explorerInputData));
}
componentWillReceiveProps(props) {
if (props && props.Atomic.response) {
if (props &&
props.Atomic.response) {
const _api = this.state.api;
const _propsAtomicRes = props.Atomic.response;
@ -337,18 +338,18 @@ class Atomic extends React.Component {
_api === 'dex_sendrawtransaction' ||
_api === 'dex_getblockhash') {
this.setState(Object.assign({}, this.state, {
'output': _propsAtomicRes,
output: _propsAtomicRes,
}));
} else {
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') {
Store.dispatch(
triggerToaster(
'Basilisk connection error',
translate('TOASTR.BASILISK_CONN_ERROR'),
translate('TOASTR.SERVICE_NOTIFICATION'),
'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 AddCoinOptionsACFiat from '../../addcoin/addcoinOptionsACFiat';
const AtomicRender = function () {
const AtomicRender = function() {
return (
<div className="page margin-left-0 full-height">
<div className="page-content">
@ -32,7 +32,7 @@ const AtomicRender = function () {
<select
className="form-control form-material"
onChange={ this.updateSelectedAPI }>
<option value="">-{ translate('ATOMIC.SELECT_COMMAND') }-</option>
<option value="">{ translate('ATOMIC.SELECT_COMMAND') }</option>
{ this.renderAtomicOptions() }
</select>
</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) {
Store.dispatch(
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'),
'success',
false
@ -90,7 +90,8 @@ class ClaimInterestModal extends React.Component {
}
checkTransactionsListLength() {
if (this.state.transactionsList && this.state.transactionsList.length) {
if (this.state.transactionsList &&
this.state.transactionsList.length) {
return true;
} else if (!this.state.transactionsList || !this.state.transactionsList.length) {
return false;
@ -104,7 +105,7 @@ class ClaimInterestModal extends React.Component {
}
copyTxId(txid) {
Store.dispatch(copyString(txid, 'Transaction ID copied'));
Store.dispatch(copyString(txid, translate('TOASTR.TXID_COPIED')));
}
claimInterestTableRender() {

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

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

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

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

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

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

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

@ -16,12 +16,12 @@ const CoindDownModalRender = function () {
onClick={ this.dismiss }>
<span>×</span>
</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 className="modal-body">
<div className="vertical-align text-center">
<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">
<textarea
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';
if (!window.jumblrPasshrase) { // gen jumblr passphrase
window.jumblrPasshrase = 'jumblr ' + PassPhraseGenerator.generatePassPhrase(256);
window.jumblrPasshrase = `jumblr ${PassPhraseGenerator.generatePassPhrase(256)}`;
}
class Jumblr extends React.Component {
@ -140,7 +140,7 @@ class Jumblr extends React.Component {
if (this.state.secretAddressCount === '') {
Store.dispatch(
triggerToaster(
'Enter a correct address count value',
translate('TOASTR.ENTER_CORRECT_ADDR_COUNT'),
'Jumblr',
'error'
)
@ -163,8 +163,11 @@ class Jumblr extends React.Component {
_genKeys = this.generateKeys();
}
setJumblrAddress(this.props.ActiveCoin.coin, 'secret', _genKeys.address)
.then((json) => {
setJumblrAddress(
this.props.ActiveCoin.coin,
'secret',
_genKeys.address
).then((json) => {
if (json.error &&
json.error.code) {
Store.dispatch(
@ -183,7 +186,7 @@ class Jumblr extends React.Component {
if (_apiSuccessCount === this.state.secretAddressCount - 1) {
Store.dispatch(
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',
'success'
)
@ -236,7 +239,7 @@ class Jumblr extends React.Component {
_errors.prefix) {
Store.dispatch(
triggerToaster(
'Provided passphrase has wrong format',
translate('TOASTR.JUMBLR_WRONG_PASSPHRASE'),
'Jumblr',
'error',
false
@ -256,7 +259,7 @@ class Jumblr extends React.Component {
if (this.state.secretAddressCountImport === '') {
Store.dispatch(
triggerToaster(
'Enter a correct address count value',
translate('TOASTR.ENTER_CORRECT_ADDR_COUNT'),
'Jumblr',
'error'
)
@ -289,7 +292,7 @@ class Jumblr extends React.Component {
if (_apiSuccessCount === this.state.secretAddressCountImport - 1) {
Store.dispatch(
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',
'success'
)
@ -342,8 +345,11 @@ class Jumblr extends React.Component {
.then((json) => {
if (!json.id && !json.result && !json.error) {
// console.warn('importPrivkey', json);
setJumblrAddress(this.props.ActiveCoin.coin, 'deposit', _genKeys.address)
.then((json) => {
setJumblrAddress(
this.props.ActiveCoin.coin,
'deposit',
_genKeys.address
).then((json) => {
if (json.error &&
json.error.code) {
Store.dispatch(
@ -362,7 +368,7 @@ class Jumblr extends React.Component {
}));
Store.dispatch(
triggerToaster(
'Jumblr deposit address is set',
translate('TOASTR.JUMBLR_DEPOSIT_ADDRESS_SET'),
'Jumblr',
'success'
)
@ -399,7 +405,7 @@ class Jumblr extends React.Component {
}
copyPassphrase() {
Store.dispatch(copyString(this.state.randomSeed, 'Passphrase copied'));
Store.dispatch(copyString(this.state.randomSeed, translate('JUMBLR.PASSPHRASE_COPIED')));
}
renderLB(_translationID) {

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

@ -74,14 +74,12 @@ export const JumblrRender = function() {
<span>×</span>
</button>
<span className="jumblr-header">
<i className="icon fa-paw"></i> About Jumblr
<i className="icon fa-paw"></i> { translate('JUMBLR.ABOUT') }
</span>
<br />
<p>{ translate('JUMBLR.JUMBLR_FUNCTIONS') }</p>
<p>
Jumblr functions all locally which means no middle man is required to jumble your funds. You take control over the whole process.
</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.
<strong>{ translate('JUMBLR.TIP') }:</strong> { translate('JUMBLR.TIP_DESC') }.
</p>
</div>
</div>
@ -106,7 +104,7 @@ export const JumblrRender = function() {
<span
className="labelauty-unchecked"
style={{ display: this.state.jumblrMode === 'public' ? 'none' : 'inline-block' }}>
Public node
{ translate('JUMBLR.PUBLIC_NODE') }
</span>
<span
className="labelauty-checked-image"
@ -114,7 +112,7 @@ export const JumblrRender = function() {
<span
className="labelauty-checked"
style={{ display: this.state.jumblrMode === 'public' ? 'inline-block' : 'none' }}>
Public node
{ translate('JUMBLR.PUBLIC_NODE') }
</span>
</label>
</div>
@ -138,7 +136,7 @@ export const JumblrRender = function() {
<span
className="labelauty-unchecked"
style={{ display: this.state.jumblrMode === 'private' ? 'none' : 'inline-block' }}>
Private node
{ translate('JUMBLR.PRIVATE_NODE') }
</span>
<span
className="labelauty-checked-image"
@ -146,7 +144,7 @@ export const JumblrRender = function() {
<span
className="labelauty-checked"
style={{ display: this.state.jumblrMode === 'private' ? 'inline-block' : 'none' }}>
Private node
{ translate('JUMBLR.PRIVATE_NODE') }
</span>
</label>
</div>
@ -166,30 +164,22 @@ export const JumblrRender = function() {
<li
className={ this.state.activeTab === 0 ? 'active' : '' }
onClick={ () => this.openTab(0) }>
<a>
{ translate('JUMBLR.USING_JUMBLR') }
</a>
<a>{ translate('JUMBLR.USING_JUMBLR') }</a>
</li>
<li
className={ this.state.activeTab === 1 ? 'active' : '' }
onClick={ () => this.openTab(1) }>
<a>
Deposit address
</a>
<a>{ translate('JUMBLR.DEPOSIT_ADDRESS') }</a>
</li>
<li
className={ this.state.activeTab === 2 ? 'active' : '' }
onClick={ () => this.openTab(2) }>
<a>
Secret address
</a>
<a>{ translate('JUMBLR.SECRET_ADDRESS') }</a>
</li>
<li
className={ this.state.activeTab === 3 ? 'active' : '' }
onClick={ () => this.openTab(3) }>
<a>
Deposit funds
</a>
<a>{ translate('JUMBLR.DEPOSIT_FUNDS') }</a>
</li>
</ul>
<div className="tab-content padding-20">
@ -197,12 +187,12 @@ export const JumblrRender = function() {
<button
type="button"
className="btn btn-success waves-effect waves-light margin-top-20 btn-next"
onClick={ () => this.openTab(1) }>Next</button>
<h5>How to use Jumblr</h5>
onClick={ () => this.openTab(1) }>{ translate('INDEX.NEXT') }</button>
<h5>{ translate('JUMBLR.HOW_TO_USE') }</h5>
<ul>
<li>Create deposit address</li>
<li>Create secret address</li>
<li>Send funds to deposit address</li>
<li>{ translate('JUMBLR.CREATE_DEPOSIT_ADDRESS') }</li>
<li>{ translate('JUMBLR.CREATE_SECRET_ADDRESS') }</li>
<li>{ translate('JUMBLR.SEND_FUNDS_TO_DEPOSIT') }</li>
<li>{ translate('JUMBLR.KEEP_WALLET_OPEN') }</li>
<li>{ translate('JUMBLR.IMPORTANT_FUNDS') }</li>
<li>{ translate('JUMBLR.LARGE_LOT') }</li>
@ -216,7 +206,7 @@ export const JumblrRender = function() {
<button
type="button"
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>
<div className="col-xs-12 nofloat">
<ul className="padding-bottom-20">
@ -231,15 +221,15 @@ export const JumblrRender = function() {
<div className="padding-bottom-30">
<div className="padding-bottom-20">
<p>
<strong>Please write down your Jumblr passphrase and keept it safe.</strong>
<strong>{ translate('JUMBLR.PLEASE_WRITE_DOWN_PASSPHRASE') }</strong>
</p>
<p>This is your main recovery passphrase.</p>
<p>All Jumblr addresses can be regenrated based on it.</p>
<p>{ translate('JUMBLR.THIS_IS_YOUR_MAIN_RECOVERY') }</p>
<p>{ translate('JUMBLR.ALL_JUMBLR_ADDRESSES_CAN_BE') }</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>
</div>
<label>Passphrase</label>
<label>{ translate('INDEX.PASSPHRASE') }</label>
<input
type="text"
className="form-control"
@ -257,10 +247,10 @@ export const JumblrRender = function() {
<button
type="button"
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 &&
<div className="padding-top-40">
<strong>Your Jumblr deposit address:</strong>
<strong>{ translate('JUMBLR.YOUR_JUMBLR_DEPOSIT_ADDRESS') }:</strong>
<p>
{ this.state.jumblrDepositAddress.address }
<button
@ -286,12 +276,12 @@ export const JumblrRender = function() {
<button
type="button"
className="btn btn-success waves-effect waves-light margin-top-20 btn-next"
onClick={ () => this.openTab(3) }>Next</button>
<p>Jumblr secret addresses are used for the final z -> t transactions.</p>
<p>In order to allow larger accounts to obtain privacy, up to 777 secret addresses are supported.</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>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>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>
onClick={ () => this.openTab(3) }>{ translate('INDEX.NEXT') }</button>
<p>{ translate('JUMBLR.JUMBLR_SECRET_DESC_P1') }</p>
<p>{ translate('JUMBLR.JUMBLR_SECRET_DESC_P2') }</p>
<p>{ translate('JUMBLR.JUMBLR_SECRET_DESC_P3') }</p>
<p>{ translate('JUMBLR.JUMBLR_SECRET_DESC_P4') }</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 &&
<div className="padding-bottom-20 padding-top-20">
@ -310,7 +300,7 @@ export const JumblrRender = function() {
</button>
</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">
<input
type="text"
@ -326,7 +316,7 @@ export const JumblrRender = function() {
<button
type="button"
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 className="toggle-box padding-top-20">
<span className="pointer">
@ -341,7 +331,7 @@ export const JumblrRender = function() {
<div
className="toggle-label"
onClick={ () => this.toggle('jumblrSecretAddressShow') }>
Show address list
{ translate('JUMBLR.SHOW_ADDRESS_LIST') }
</div>
</span>
</div>
@ -351,7 +341,7 @@ export const JumblrRender = function() {
<thead>
<tr>
<td>
<strong>Address</strong>
<strong>{ translate('INDEX.ADDRESS') }</strong>
</td>
<td>
<strong>Wif</strong>
@ -366,8 +356,8 @@ export const JumblrRender = function() {
</div>
</div>
<div className={ 'tab-pane' + (this.state.activeTab === 3 ? ' active' : '') }>
<p>Use the form below to send funds to your jumblr deposit address.</p>
<p className="padding-bottom-20">You can also send funds to deposit address from an external service or another wallet.</p>
<p>{ translate('JUMBLR.DEPOSIT_FORM_P1') }</p>
<p className="padding-bottom-20">{ translate('JUMBLR.DEPOSIT_FORM_P2') }</p>
<WalletsNativeSend
{...this.props}
renderFormOnly="true"
@ -382,16 +372,12 @@ export const JumblrRender = function() {
<li
className={ this.state.activeTab === 0 ? 'active' : '' }
onClick={ () => this.openTab(0) }>
<a>
Import secret address
</a>
<a>{ translate('JUMBLR.IMPORT_SECRET_ADDRESS') }</a>
</li>
<li
className={ this.state.activeTab === 1 ? 'active' : '' }
onClick={ () => this.openTab(1) }>
<a>
Check funds
</a>
<a>{ translate('JUMBLR.CHECK_FUNDS') }</a>
</li>
</ul>
<div className="tab-content padding-20">
@ -399,16 +385,16 @@ export const JumblrRender = function() {
<button
type="button"
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">
<p>Enter your Jumblr passphrase you got previously during Public node configuration to import secret address.</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>The form below will "regenerate" Jumblr secret address based on passphrase provided.</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_P1') }</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>{ translate('JUMBLR.SECRET_REGEN_DESC_P3') }</p>
<p>{ translate('JUMBLR.SECRET_REGEN_DESC_P4') }</p>
{ this.state.jumblrDepositAddressPBased &&
<div className="padding-bottom-20 padding-top-20">
<label>Passphrase</label>
<label>{ translate('INDEX.PASSPHRASE') }</label>
<input
type="text"
className="form-control"
@ -417,7 +403,7 @@ export const JumblrRender = function() {
value={ this.state.jumblrPassphraseImport } />
</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">
<input
type="text"
@ -433,7 +419,7 @@ export const JumblrRender = function() {
<button
type="button"
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 className="toggle-box padding-top-20">
<span className="pointer">
@ -448,7 +434,7 @@ export const JumblrRender = function() {
<div
className="toggle-label"
onClick={ () => this.toggle('jumblrSecretAddressShowImport') }>
Show address list
{ translate('JUMBLR.SHOW_ADDRESS_LIST') }
</div>
</span>
</div>
@ -458,7 +444,7 @@ export const JumblrRender = function() {
<thead>
<tr>
<td>
<strong>Address</strong>
<strong>{ translate('INDEX.ADDRESS') }</strong>
</td>
<td>
<strong>Wif</strong>

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

@ -34,11 +34,11 @@ class QRModal extends React.Component {
handleError(err) {
if (err.name === 'NoVideoInputDevicesError') {
this.setState({
error: 'Error: No video input devices found!',
error: translate('DASHBOARD.QR_ERR_NO_VIDEO_DEVICE'),
});
} else {
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.ADDRESS') }</th>
<th>{ translate('INDEX.BALANCE') }</th>
<th> {translate('INDEX.INTEREST') }</th>
<th>{translate('INDEX.INTEREST') }</th>
</tr>
}
</thead>
@ -146,8 +146,7 @@ export const ReceiveCoinRender = function() {
<i className="icon md-arrows margin-right-10"></i> { translate('INDEX.GET_NEW_ADDRESS') }
<span className="caret"></span>
</a>
<ul
className="dropdown-menu dropdown-menu-right">
<ul className="dropdown-menu dropdown-menu-right">
<li>
<a onClick={ () => this.getNewAddress('public') }>
<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() {
Store.dispatch(fetchUtxoCache({
'pubkey': this.props.Dashboard.activeHandle.pubkey,
'allcoins': false,
'coin': this.props.ActiveCoin.coin,
'calls': 'refresh',
'address': this.state.sendFrom,
pubkey: this.props.Dashboard.activeHandle.pubkey,
allcoins: false,
coin: this.props.ActiveCoin.coin,
calls: 'refresh',
address: this.state.sendFrom,
}));
}
@ -152,10 +152,10 @@ class SendCoin extends React.Component {
!this.state.sendApiType &&
this.props.ActiveCoin.cache &&
this.props.ActiveCoin.cache[this.props.ActiveCoin.coin][this.state.sendFrom]) {
let refreshCacheData,
timestamp,
isReadyToUpdate,
waitUntilCallIsFinished = this.state.currentStackLength > 1 ? true : false;
let refreshCacheData;
let timestamp;
let isReadyToUpdate;
let waitUntilCallIsFinished = this.state.currentStackLength > 1 ? true : false;
const _cache = this.props.ActiveCoin.cache;
const _coin = this.props.ActiveCoin.coin;
const _sendFrom = this.state.sendFrom;
@ -311,7 +311,7 @@ class SendCoin extends React.Component {
<button
type="button"
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 }>
<span className="filter-option pull-left">
{ this.renderSelectorCurrentLabel() }&nbsp;&nbsp;
@ -438,14 +438,14 @@ class SendCoin extends React.Component {
const forceUpdateCache = this._fetchNewUTXOData;
const _sendFrom = this.state.sendFrom;
const sendData = {
'coin': this.props.ActiveCoin.coin,
'sendfrom': this.state.sendFrom,
'sendtoaddr': this.state.sendTo,
'amount': this.state.amount,
'txfee': this.state.fee,
'sendsig': this.state.sendSig === true ? 0 : 1,
'utxos': utxoSet
};
coin: this.props.ActiveCoin.coin,
sendfrom: this.state.sendFrom,
sendtoaddr: this.state.sendTo,
amount: this.state.amount,
txfee: this.state.fee,
sendsig: this.state.sendSig === true ? 0 : 1,
utxos: utxoSet,
};
// TODO: es arrows
iguanaUTXORawTX(sendData, Store.dispatch)
@ -462,8 +462,8 @@ class SendCoin extends React.Component {
if (sendData.sendsig === 1) {
const dexrawtxData = {
'signedtx': json.signedtx,
'coin': sendData.coin
signedtx: json.signedtx,
coin: sendData.coin,
};
dexSendRawTX(
dexrawtxData,
@ -472,7 +472,7 @@ class SendCoin extends React.Component {
if (dexRawTxJSON.indexOf('"error":{"code"') > -1) {
Store.dispatch(
triggerToaster(
'Transaction failed',
translate('TOASTR.TRANSACTION_FAILED'),
translate('TOASTR.WALLET_NOTIFICATION'),
'error'
)
@ -503,8 +503,8 @@ class SendCoin extends React.Component {
);
edexGetTransaction({
'coin': sendData.coin,
'txid': dexRawTxJSON.txid ? dexRawTxJSON.txid : dexRawTxJSON
coin: sendData.coin,
txid: dexRawTxJSON.txid ? dexRawTxJSON.txid : dexRawTxJSON,
}, Store.dispatch)
.then(function(json) {
resolve(json);
@ -615,7 +615,7 @@ class SendCoin extends React.Component {
}));
}
console.log(json);
// console.log(json);
}.bind(this));
}

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

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

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

@ -49,6 +49,7 @@ class Settings extends React.Component {
debugTarget: 'iguana',
activeTabHeight: '0',
appSettings: {},
appConfigSchema: {},
tabElId: null,
cliCmdString: '',
cliCoin: null,
@ -66,7 +67,7 @@ class Settings extends React.Component {
};
this.exportWifKeys = this.exportWifKeys.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.readDebugLog = this.readDebugLog.bind(this);
this.checkNodes = this.checkNodes.bind(this);
@ -95,6 +96,18 @@ class Settings extends React.Component {
componentWillMount() {
socket.on('patch', msg => this.updateSocketsData(msg));
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() {
@ -111,6 +124,7 @@ class Settings extends React.Component {
if (!this.props.disableWalletSpecificUI) {
Store.dispatch(iguanaActiveHandle());
}
Store.dispatch(getAppConfig());
Store.dispatch(getAppInfo());
}
@ -135,7 +149,7 @@ class Settings extends React.Component {
const externalWindow = new BrowserWindow({
width: 1280,
height: 800,
title: 'Loading...',
title: `${translate('INDEX.LOADING')}...`,
icon: remote.getCurrentWindow().iguanaIcon,
});
@ -178,7 +192,7 @@ class Settings extends React.Component {
data.msg.progress &&
data.msg.progress === 100) {
let _updateLog = [];
_updateLog.push('UI update downloaded. Verifying...');
_updateLog.push(`${translate('INDEX.UI_UPDATE_DOWNLOADED')}...`);
this.setState(Object.assign({}, this.state, {
updateLog: _updateLog,
}));
@ -187,7 +201,7 @@ class Settings extends React.Component {
if (data.msg.status === 'done') {
let _updateLog = [];
_updateLog.push('UI is updated!');
_updateLog.push(translate('INDEX.UI_UPDATED'));
this.setState(Object.assign({}, this.state, {
updateLog: _updateLog,
updatePatch: null,
@ -197,7 +211,7 @@ class Settings extends React.Component {
if (data.msg.status === 'error') {
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, {
updateLog: _updateLog,
}));
@ -218,7 +232,7 @@ class Settings extends React.Component {
_checkForUpdateUIPromise() {
let _updateLog = [];
_updateLog.push('Checking for UI update...');
_updateLog.push(translate('INDEX.CHECKING_UI_UPDATE'));
this.setState(Object.assign({}, this.state, {
updateLog: _updateLog,
}));
@ -226,7 +240,7 @@ class Settings extends React.Component {
checkForUpdateUIPromise()
.then((res) => {
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, {
updatePatch: res.result === 'update' ? true : false,
updateLog: _updateLog,
@ -237,7 +251,7 @@ class Settings extends React.Component {
_updateUIPromise() {
updateProgressBar.patch = 0;
let _updateLog = [];
_updateLog.push('Downloading UI update...');
_updateLog.push(`${translate('INDEX.DOWNLOADING_UI_UPDATE')}...`);
this.setState(Object.assign({}, this.state, {
updateLog: _updateLog,
}));
@ -259,7 +273,7 @@ class Settings extends React.Component {
return (
<div style={{ minHeight: '200px' }}>
<hr />
<h5>Progress:</h5>
<h5>{ translate('SETTINGS.PROGRESS') }:</h5>
<div className="padding-bottom-15">{ items }</div>
<div className={ updateProgressBar.patch > -1 ? 'progress progress-sm' : 'hide' }>
<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;
_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({
appSettings: _appSettings,
@ -434,50 +457,111 @@ class Settings extends React.Component {
renderConfigEditForm() {
let items = [];
const _appConfig = this.props.Settings.appSettings;
const _appConfig = this.state.appSettings;
for (let key in _appConfig) {
if (typeof _appConfig[key] === 'object') {
items.push(
<tr key={ `app-settings-${key}` }>
<td className="padding-15">
{ key }
</td>
<td className="padding-15"></td>
</tr>
);
if (this.state.appConfigSchema[key].display) {
items.push(
<tr key={ `app-settings-${key}` }>
<td className="padding-15">
{ 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 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(
<tr key={ `app-settings-${key}-${_key}` }>
<td className="padding-15 padding-left-30">
{ _key }
<tr key={ `app-settings-${key}` }>
<td className="padding-15">
{ 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 className="padding-15">
<input
type="text"
name={ `${key}__${_key}` }
defaultValue={ _appConfig[key][_key] }
onChange={ this.updateInputSettings } />
{ this.state.appConfigSchema[key].type === 'number' &&
<input
type="number"
pattern="[0-9]*"
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>
</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 (
<div>
<div>
<strong>CLI response:</strong>
<strong>{ translate('SETTINGS.CLI_RESPONSE') }:</strong>
</div>
{ _items }
</div>
@ -676,7 +760,7 @@ class Settings extends React.Component {
items.push(
<tr key={ `wif-export-table-header-${i}` }>
<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 className="padding-bottom-10 padding-top-10"></td>
</tr>

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

@ -540,7 +540,7 @@ export const SettingsRender = function() {
</tbody>
</table>
</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
type="button"
className="btn btn-primary waves-effect waves-light"
@ -639,8 +639,10 @@ export const SettingsRender = function() {
<div
className="support-box"
onClick={ () => this.openExternalWindow('http://support.supernet.org') }>
<img src="assets/images/cryptologo/supernet.png" alt="Support tickets" />
<div className="support-box-title">Support tickets</div>
<img
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>
</div>
@ -648,7 +650,9 @@ export const SettingsRender = function() {
<div
className="support-box"
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-link">sprnt.slack.com</div>
</div>
@ -657,8 +661,10 @@ export const SettingsRender = function() {
<div
className="support-box"
onClick={ () => this.openExternalWindow('http://slackinvite.supernet.org') }>
<img src="assets/images/support/slack-invite-icon.png" alt="Slack invite" />
<div className="support-box-title">Get Slack invite</div>
<img
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>
</div>
@ -666,7 +672,9 @@ export const SettingsRender = function() {
<div
className="support-box"
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-link">github.com/SuperNETorg/Agama</div>
</div>

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

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

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

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

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

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

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

@ -46,7 +46,7 @@ const WalletsInfoRender = function() {
<button
type="button"
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} />
</div>
}
@ -82,7 +82,7 @@ const WalletsInfoRender = function() {
</tr>
<tr>
<td>
{ translate('INDEX.NOTARIZED') } Hash
{ translate('INDEX.NOTARIZED') } { translate('INDEX.HASH') }
</td>
<td>
{ 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':
Store.dispatch(
triggerToaster(
'Restart Agama and run Komodo with -reindex param',
translate('TOASTR.RESTART_AGAMA_WITH_REINDEX_PARAM'),
translate('TOASTR.WALLET_NOTIFICATION'),
'info',
false

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

@ -69,7 +69,7 @@ class WalletsNativeSend extends React.Component {
setRecieverFromScan(receiver) {
this.setState({
sendTo: receiver
sendTo: receiver,
});
document.getElementById('kmdWalletSendTo').focus();
@ -153,7 +153,7 @@ class WalletsNativeSend extends React.Component {
);
} else {
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"
onClick={ () => this.updateAddressSelection(null, 'public', null) }>
<a>
<span className="text">Transparent funds</span>
<span className="text">{ translate('INDEX.T_FUNDS') }</span>
<span
className="glyphicon glyphicon-ok check-mark pull-right"
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 { translate } from '../../../translate/translate';
import { secondsToString } from '../../../util/time';
import { formatValue } from '../../../util/formatValue';
import Config from '../../../config';
const WalletsTxInfoRender = function(txInfo) {
@ -55,7 +54,7 @@ const WalletsTxInfoRender = function(txInfo) {
<tr>
<td>{ translate('TX_INFO.AMOUNT') }</td>
<td>
{ Config.roundValues ? formatValue('round', txInfo.amount, -10) : txInfo.amount }
{ txInfo.amount }
</td>
</tr>
<tr>

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

@ -145,17 +145,17 @@ class Login extends React.Component {
if (props &&
props.Main &&
props.Main.isLoggedIn) {
this.setState({
display: false,
});
this.setState({
display: false,
});
}
if (props &&
props.Main &&
!props.Main.isLoggedIn) {
this.setState({
display: true,
});
this.setState({
display: true,
});
if (!this.props.Interval.interval.activeCoins) {
// 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"
onClick={ this.toggleLoginSettingsDropdown }>
<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>
</div>
<div>
@ -50,36 +50,6 @@ const LoginRender = function () {
</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' }>
<h4 className="color-white">
{ translate('INDEX.WELCOME_LOGIN') }
@ -232,8 +202,7 @@ const LoginRender = function () {
id="walletseed"
value={ this.state.randomSeed }
onChange={ (e) => this.updateWalletSeed(e) }
readOnly={ !this.isCustomWalletSeed() }
></textarea>
readOnly={ !this.isCustomWalletSeed() }></textarea>
<button className="copy-floating-label"
htmlFor="walletseed"
onClick={ () => this.copyPassPhraseToClipboard() }>{ translate('INDEX.COPY') }</button>

19
react/src/components/overrides.scss

@ -1041,6 +1041,7 @@ select{
}
.modal-body {
background: #f3f4f5;
border-radius: 4px;
}
.modal-footer {
margin-top: 15px;
@ -1054,4 +1055,22 @@ select{
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,
title: props.title,
autoClose: props.autoClose,
toastId: props.toastId
toastId: props.toastId,
};
this.dismissToast = this.dismissToast.bind(this);
@ -33,7 +33,7 @@ class ToasterItem extends React.Component {
type: props._type,
title: props.title,
autoClose: props.autoClose,
toastId: props.toastId
toastId: props.toastId,
});
} else {
this.setState({
@ -41,7 +41,7 @@ class ToasterItem extends React.Component {
type: null,
title: null,
autoClose: true,
toastId: null
toastId: null,
});
}
}

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

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

143
react/src/translate/en.js

@ -1,5 +1,34 @@
export const _lang = {
'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': {
'ERROR_SM': 'error',
'ATOMIC_EXPLORER_ERR': 'Atomic Explorer error',
@ -17,6 +46,24 @@ export const _lang = {
'NO_ACTIVE_COIN': 'No active coin',
},
'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...',
'NO_DATA_AVAILABLE': 'No data available',
'LOADING': 'Loading',
@ -257,7 +304,7 @@ export const _lang = {
'SCAN_QRCODE_WEBCAM': 'Scan QR Code with webcam',
'TOGGLE_ZERO_ADDRESSES': 'Toggle empty addresses',
'NEXT_PAGE': 'Next Page',
'PREVIOUS_PAGE': 'Previous Page'
'PREVIOUS_PAGE': 'Previous Page',
},
'ATOMIC': {
'RAW_OUTPUT': 'Raw Output',
@ -277,9 +324,49 @@ export const _lang = {
'MODE': 'mode',
'CRYPTO_CURRENCIES': 'Crypto Currencies',
'ASSETCHAINS': 'Assetchains',
'FIAT_CURRENCIES': 'Fiat Currencies'
'FIAT_CURRENCIES': 'Fiat Currencies',
},
'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',
'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.',
@ -335,7 +422,7 @@ export const _lang = {
'PRIV_TO_PRIV': 'Private to Private',
'PRIV_TO_PUB': 'Private to Public',
'FINISHED': 'Finished',
'PENDING': 'Pending'
'PENDING': 'Pending',
},
'DASHBOARD': {
'SELECT_ADDRESS': '- Select Address -',
@ -351,9 +438,26 @@ export const _lang = {
'MINED': 'Mined',
'IMMATURE': 'Immature',
'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': {
'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',
'ACCOUNT_NOTIFICATION': 'Account Notification',
'BASILISK_NOTIFICATION': 'Basilisk Notification',
@ -416,16 +520,16 @@ export const _lang = {
'SELECTION_NOT_FOUND': 'Local coin list is not found',
'LOCAL_UTXO_UPDATED': 'Local UTXO data is updated. Ready to send new transaction.',
'PROCESSING_UTXO': 'Processing UTXO',
'AWAITING_TX_RESP': 'Awaiting transaction data response'
'AWAITING_TX_RESP': 'Awaiting transaction data response',
},
'COIN_WALLETS': {
'TX_FAILED': 'Transaction Failed',
'TX_SUCCESS': 'Transaction Successful',
'TX': 'Transaction'
'TX': 'Transaction',
},
'IAPI': {
'PUBLIC_SM': 'public',
'CON_STATUS': 'Connection status'
'CON_STATUS': 'Connection status',
},
'KMD_NATIVE': {
'SELECT_ADDRESS': 'Select Transparent or Private Address',
@ -439,9 +543,10 @@ export const _lang = {
'SUCCESS': 'Success',
'MESSAGE': 'Message',
'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': {
'QUICK_ACCESS': 'Quick access',
'PWD_REQ': 'Password is required.',
'WALLET_SEED_REQ': 'Wallet seed is required.',
'SAVED_WALLET_SEED': 'Have you saved your wallet seed?',
@ -462,13 +567,19 @@ export const _lang = {
'WAVES_SEED': 'Waves',
'NXT_SEED': 'NXT',
'SEED_COPIED': 'Seed copied',
'SEED_SUCCESSFULLY_COPIED': 'The seed was successfully copied'
'SEED_SUCCESSFULLY_COPIED': 'The seed was successfully copied',
},
'SIDEBAR': {
'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': {
'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.',
'SAVE_APP_CONFIG': 'Save app config',
'CONFIG_RESTART_REQUIRED': 'Most changes to app config require wallet restart!',
@ -493,13 +604,13 @@ export const _lang = {
'ADD_PEER_IP': 'Add Peer IP',
'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>' +
'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': {
'ADDRESS': 'address',
'AMOUNT': 'amount',
'CATEGORY': 'category',
'CONFIRMATIONS': 'confirmations'
'CONFIRMATIONS': 'confirmations',
},
'SEND': {
'PRESS_UPDATE_BTN': 'N/A. Press update button.',
@ -526,7 +637,7 @@ export const _lang = {
'AMOUNT_POSITIVE_NUMBER': 'Amount 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',
'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': {
'AUD': 'Australian Dollar (AUD)',
@ -560,7 +671,7 @@ export const _lang = {
'CHF': 'Swiss Franc (CHF)',
'THB': 'Thai Baht (THB)',
'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 (Object.keys(_obj.basilisk).length === 0) {
console.log('no coin nodes to parse');
console.warn('no coin nodes to parse');
} else {
for (let key in _obj.basilisk) {
for (let coinAddr in _obj.basilisk[key]) {
@ -44,7 +44,7 @@ export function edexRemoveTXID(_obj, address, txidArray) {
}
}
} else {
console.log('basilisk node is missing');
console.warn('basilisk node is missing');
}
return _obj;

10
react/src/util/coinHelper.js

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

48
react/src/util/time.js

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

Loading…
Cancel
Save