diff --git a/js/src/3rdparty/etherscan/account.js b/js/src/3rdparty/etherscan/account.js index 8a8f4b1fc..7a6844759 100644 --- a/js/src/3rdparty/etherscan/account.js +++ b/js/src/3rdparty/etherscan/account.js @@ -21,15 +21,15 @@ const PAGE_SIZE = 25; import util from '../../api/util'; import { call } from './call'; -function _call (method, params, test) { - return call('account', method, params, test); +function _call (method, params, test, netVersion) { + return call('account', method, params, test, netVersion); } -function balance (address, test = false) { +function balance (address, test, netVersion) { return _call('balance', { address: address, tag: 'latest' - }, test).then((balance) => { + }, test, netVersion).then((balance) => { // same format as balancemulti below return { account: address, @@ -38,21 +38,21 @@ function balance (address, test = false) { }); } -function balances (addresses, test = false) { +function balances (addresses, test, netVersion) { return _call('balancemulti', { address: addresses.join(','), tag: 'latest' - }, test); + }, test, netVersion); } -function transactions (address, page, test = false) { +function transactions (address, page, test, netVersion) { // page offset from 0 return _call('txlist', { address: address, offset: PAGE_SIZE, page: (page || 0) + 1, sort: 'desc' - }, test).then((transactions) => { + }, test, netVersion).then((transactions) => { return transactions.map((tx) => { return { blockNumber: new BigNumber(tx.blockNumber || 0), @@ -67,9 +67,9 @@ function transactions (address, page, test = false) { } const account = { - balance: balance, - balances: balances, - transactions: transactions + balance, + balances, + transactions }; export { account }; diff --git a/js/src/3rdparty/etherscan/call.js b/js/src/3rdparty/etherscan/call.js index 3c3d1ef06..6b72e1bea 100644 --- a/js/src/3rdparty/etherscan/call.js +++ b/js/src/3rdparty/etherscan/call.js @@ -23,14 +23,32 @@ const options = { } }; -export function call (module, action, _params, test) { - const host = test ? 'testnet.etherscan.io' : 'api.etherscan.io'; +export function call (module, action, _params, test, netVersion) { + let prefix = 'api.'; + + switch (netVersion) { + case '2': + case '3': + prefix = 'testnet.'; + break; + + case '42': + prefix = 'kovan.'; + break; + + case '0': + default: + if (test) { + prefix = 'testnet.'; + } + break; + } const query = stringify(Object.assign({ module, action }, _params || {})); - return fetch(`https://${host}/api?${query}`, options) + return fetch(`https://${prefix}etherscan.io/api?${query}`, options) .then((response) => { if (!response.ok) { throw { code: response.status, message: response.statusText }; // eslint-disable-line diff --git a/js/src/3rdparty/etherscan/helpers.spec.js b/js/src/3rdparty/etherscan/helpers.spec.js index aeb6ef230..fa29c3d97 100644 --- a/js/src/3rdparty/etherscan/helpers.spec.js +++ b/js/src/3rdparty/etherscan/helpers.spec.js @@ -19,8 +19,8 @@ import { stringify } from 'qs'; import { url } from './links'; -function mockget (requests, test) { - let scope = nock(url(test)); +function mockget (requests, test, netVersion) { + let scope = nock(url(test, netVersion)); requests.forEach((request) => { scope = scope diff --git a/js/src/3rdparty/etherscan/links.js b/js/src/3rdparty/etherscan/links.js index 59ad51de7..8c9101268 100644 --- a/js/src/3rdparty/etherscan/links.js +++ b/js/src/3rdparty/etherscan/links.js @@ -14,14 +14,35 @@ // You should have received a copy of the GNU General Public License // along with Parity. If not, see . -export const url = (isTestnet = false) => { - return `https://${isTestnet ? 'testnet.' : ''}etherscan.io`; +// NOTE: Keep 'isTestnet' for backwards library compatibility +export const url = (isTestnet = false, netVersion = '0') => { + let prefix = ''; + + switch (netVersion) { + case '2': + case '3': + prefix = 'testnet.'; + break; + + case '42': + prefix = 'kovan.'; + break; + + case '0': + default: + if (isTestnet) { + prefix = 'testnet.'; + } + break; + } + + return `https://${prefix}etherscan.io`; }; -export const txLink = (hash, isTestnet = false) => { - return `${url(isTestnet)}/tx/${hash}`; +export const txLink = (hash, isTestnet = false, netVersion = '0') => { + return `${url(isTestnet, netVersion)}/tx/${hash}`; }; -export const addressLink = (address, isTestnet = false) => { - return `${url(isTestnet)}/address/${address}`; +export const addressLink = (address, isTestnet = false, netVersion = '0') => { + return `${url(isTestnet, netVersion)}/address/${address}`; }; diff --git a/js/src/dapps/registry/actions.js b/js/src/dapps/registry/actions.js index 2346cf323..00d851a37 100644 --- a/js/src/dapps/registry/actions.js +++ b/js/src/dapps/registry/actions.js @@ -32,16 +32,12 @@ const REGISTRY_V1_HASHES = [ '0x64c3ee34851517a9faecd995c102b339f03e564ad6772dc43a26f993238b20ec' // homestead ]; -export const setIsTestnet = (isTestnet) => ({ type: 'set isTestnet', isTestnet }); +export const setNetVersion = (netVersion) => ({ type: 'set netVersion', netVersion }); export const fetchIsTestnet = () => (dispatch) => api.net.version() .then((netVersion) => { - dispatch(setIsTestnet([ - '2', // morden - '3', // ropsten - '42' // kovan - ].includes(netVersion))); + dispatch(setNetVersion(netVersion)); }) .catch((err) => { console.error('could not check if testnet'); diff --git a/js/src/dapps/registry/reducers.js b/js/src/dapps/registry/reducers.js index cf5c82f02..6d0816273 100644 --- a/js/src/dapps/registry/reducers.js +++ b/js/src/dapps/registry/reducers.js @@ -22,8 +22,8 @@ import namesReducer from './Names/reducers.js'; import recordsReducer from './Records/reducers.js'; import reverseReducer from './Reverse/reducers.js'; -const isTestnetReducer = (state = null, action) => - action.type === 'set isTestnet' ? action.isTestnet : state; +const netVersionReducer = (state = null, action) => + action.type === 'set netVersion' ? action.netVersion : state; const contractReducer = (state = null, action) => action.type === 'set contract' ? action.contract : state; @@ -35,7 +35,7 @@ const ownerReducer = (state = null, action) => action.type === 'set owner' ? action.owner : state; const initialState = { - isTestnet: isTestnetReducer(undefined, { type: '' }), + netVersion: netVersionReducer(undefined, { type: '' }), accounts: accountsReducer(undefined, { type: '' }), contacts: contactsReducer(undefined, { type: '' }), contract: contractReducer(undefined, { type: '' }), @@ -49,7 +49,7 @@ const initialState = { }; export default (state = initialState, action) => ({ - isTestnet: isTestnetReducer(state.isTestnet, action), + netVersion: netVersionReducer(state.netVersion, action), accounts: accountsReducer(state.accounts, action), contacts: contactsReducer(state.contacts, action), contract: contractReducer(state.contract, action), diff --git a/js/src/dapps/registry/ui/address.js b/js/src/dapps/registry/ui/address.js index ab0500532..a01811fc4 100644 --- a/js/src/dapps/registry/ui/address.js +++ b/js/src/dapps/registry/ui/address.js @@ -28,7 +28,7 @@ class Address extends Component { static propTypes = { address: PropTypes.string.isRequired, account: nullableProptype(PropTypes.object.isRequired), - isTestnet: PropTypes.bool.isRequired, + netVersion: PropTypes.string.isRequired, key: PropTypes.string, shortenHash: PropTypes.bool }; @@ -56,7 +56,7 @@ class Address extends Component { } renderCaption () { - const { address, account, isTestnet, shortenHash } = this.props; + const { address, account, netVersion, shortenHash } = this.props; if (account) { const { name } = account; @@ -64,7 +64,7 @@ class Address extends Component { return ( { - const { isTestnet } = state; + const { netVersion } = state; const { address = '' } = props; const account = allAccounts[address] || null; return { account, - isTestnet + netVersion }; }; } diff --git a/js/src/dapps/registry/ui/hash.js b/js/src/dapps/registry/ui/hash.js index 88099fcf0..fe404f5b2 100644 --- a/js/src/dapps/registry/ui/hash.js +++ b/js/src/dapps/registry/ui/hash.js @@ -26,7 +26,7 @@ const leading0x = /^0x/; class Hash extends Component { static propTypes = { hash: PropTypes.string.isRequired, - isTestnet: PropTypes.bool.isRequired, + netVersion: PropTypes.string.isRequired, linked: PropTypes.bool } @@ -35,7 +35,7 @@ class Hash extends Component { } render () { - const { hash, isTestnet, linked } = this.props; + const { hash, netVersion, linked } = this.props; let shortened = hash.toLowerCase().replace(leading0x, ''); @@ -47,7 +47,7 @@ class Hash extends Component { return ( { shortened } @@ -61,7 +61,7 @@ class Hash extends Component { export default connect( (state) => ({ // mapStateToProps - isTestnet: state.isTestnet + netVersion: state.netVersion }), null // mapDispatchToProps )(Hash); diff --git a/js/src/dapps/registry/util/etherscan-url.js b/js/src/dapps/registry/util/etherscan-url.js index 88094a911..bb4e2fe98 100644 --- a/js/src/dapps/registry/util/etherscan-url.js +++ b/js/src/dapps/registry/util/etherscan-url.js @@ -14,13 +14,15 @@ // You should have received a copy of the GNU General Public License // along with Parity. If not, see . +import { url as externalUrl } from '~/3rdparty/etherscan/links'; + const leading0x = /^0x/; -const etherscanUrl = (hash, isTestnet) => { +const etherscanUrl = (hash, isTestnet, netVersion) => { hash = hash.toLowerCase().replace(leading0x, ''); const type = hash.length === 40 ? 'address' : 'tx'; - return `https://${isTestnet ? 'testnet.' : ''}etherscan.io/${type}/0x${hash}`; + return `https://${externalUrl(isTestnet, netVersion)}/${type}/0x${hash}`; }; export default etherscanUrl; diff --git a/js/src/dapps/tokendeploy/services.js b/js/src/dapps/tokendeploy/services.js index 1285371aa..9ca4c4f56 100644 --- a/js/src/dapps/tokendeploy/services.js +++ b/js/src/dapps/tokendeploy/services.js @@ -16,6 +16,7 @@ import BigNumber from 'bignumber.js'; +import { url as etherscanUrl } from '~/3rdparty/etherscan/links'; import * as abis from '~/contracts/abi'; import { api } from './parity'; @@ -28,7 +29,7 @@ const subscriptions = {}; let defaultSubscriptionId; let nextSubscriptionId = 1000; -let isTest = false; +let netVersion = '0'; export function subscribeEvents (addresses, callback) { const subscriptionId = nextSubscriptionId++; @@ -117,15 +118,16 @@ export function attachInstances () { return Promise .all([ api.parity.registryAddress(), - api.parity.netChain() + api.parity.netChain(), + api.partiy.netVersion() ]) - .then(([registryAddress, netChain]) => { + .then(([registryAddress, netChain, _netVersion]) => { const registry = api.newContract(abis.registry, registryAddress).instance; - isTest = ['kovan', 'morden', 'ropsten', 'testnet'].includes(netChain); + netVersion = _netVersion; console.log(`contract was found at registry=${registryAddress}`); - console.log(`running on ${netChain}, isTest=${isTest}`); + console.log(`running on ${netChain}, network ${netVersion}`); return Promise .all([ @@ -287,5 +289,5 @@ export function loadTokenBalance (tokenAddress, address) { } export function txLink (txHash) { - return `https://${isTest ? 'testnet.' : ''}etherscan.io/tx/${txHash}`; + return `https://${etherscanUrl(false, netVersion)}/tx/${txHash}`; } diff --git a/js/src/modals/ExecuteContract/executeContract.js b/js/src/modals/ExecuteContract/executeContract.js index 312f8bb27..20237acf9 100644 --- a/js/src/modals/ExecuteContract/executeContract.js +++ b/js/src/modals/ExecuteContract/executeContract.js @@ -84,7 +84,6 @@ class ExecuteContract extends Component { contract: PropTypes.object.isRequired, fromAddress: PropTypes.string, gasLimit: PropTypes.object.isRequired, - isTest: PropTypes.bool, onClose: PropTypes.func.isRequired, onFromAddressChange: PropTypes.func.isRequired } diff --git a/js/src/redux/providers/status.js b/js/src/redux/providers/status.js index 4cf8ea186..f671fbabe 100644 --- a/js/src/redux/providers/status.js +++ b/js/src/redux/providers/status.js @@ -302,6 +302,7 @@ export default class Status { defaultExtraData, netChain, netPort, + netVersion, rpcSettings, isTest, enode diff --git a/js/src/redux/providers/statusReducer.js b/js/src/redux/providers/statusReducer.js index c8eb5b7f6..1189f51c6 100644 --- a/js/src/redux/providers/statusReducer.js +++ b/js/src/redux/providers/statusReducer.js @@ -40,6 +40,7 @@ const initialState = { max: new BigNumber(0) }, netPort: new BigNumber(0), + netVersion: '0', rpcSettings: {}, syncing: true, isConnected: false, diff --git a/js/src/ui/TxHash/txHash.js b/js/src/ui/TxHash/txHash.js index 724004ae7..c5342ccd3 100644 --- a/js/src/ui/TxHash/txHash.js +++ b/js/src/ui/TxHash/txHash.js @@ -34,8 +34,8 @@ class TxHash extends Component { static propTypes = { hash: PropTypes.string.isRequired, - isTest: PropTypes.bool, maxConfirmations: PropTypes.number, + netVersion: PropTypes.string.isRequired, summary: PropTypes.bool } @@ -116,10 +116,10 @@ class TxHash extends Component { } render () { - const { hash, isTest, summary } = this.props; + const { hash, netVersion, summary } = this.props; const hashLink = ( - + ); @@ -255,9 +255,11 @@ class TxHash extends Component { } function mapStateToProps (state) { - const { isTest } = state.nodeStatus; + const { netVersion } = state.nodeStatus; - return { isTest }; + return { + netVersion + }; } export default connect( diff --git a/js/src/ui/TxHash/txHash.spec.js b/js/src/ui/TxHash/txHash.spec.js index 328a43836..8e44c7e57 100644 --- a/js/src/ui/TxHash/txHash.spec.js +++ b/js/src/ui/TxHash/txHash.spec.js @@ -69,7 +69,9 @@ function createRedux () { subscribe: sinon.stub(), getState: () => { return { - nodeStatus: { isTest: true } + nodeStatus: { + netVersion: '42' + } }; } }; diff --git a/js/src/ui/TxList/TxRow/txRow.js b/js/src/ui/TxList/TxRow/txRow.js index e42f64159..ef30fc8d1 100644 --- a/js/src/ui/TxList/TxRow/txRow.js +++ b/js/src/ui/TxList/TxRow/txRow.js @@ -35,7 +35,7 @@ class TxRow extends Component { static propTypes = { accountAddresses: PropTypes.array.isRequired, address: PropTypes.string.isRequired, - isTest: PropTypes.bool.isRequired, + netVersion: PropTypes.string.isRequired, tx: PropTypes.object.isRequired, block: PropTypes.object, @@ -48,7 +48,7 @@ class TxRow extends Component { }; render () { - const { tx, address, isTest, historic, className } = this.props; + const { address, className, historic, netVersion, tx } = this.props; return ( @@ -60,7 +60,7 @@ class TxRow extends Component {
{ `${tx.hash.substr(2, 6)}...${tx.hash.slice(-6)}` } @@ -156,8 +156,13 @@ function mapStateToProps (initState) { const { accounts } = initState.personal; const accountAddresses = Object.keys(accounts); - return () => { - return { accountAddresses }; + return (state) => { + const { netVersion } = state.nodeStatus; + + return { + accountAddresses, + netVersion + }; }; } @@ -165,4 +170,3 @@ export default connect( mapStateToProps, null )(TxRow); - diff --git a/js/src/ui/TxList/TxRow/txRow.spec.js b/js/src/ui/TxList/TxRow/txRow.spec.js index dc9f4d3cc..da0c21c14 100644 --- a/js/src/ui/TxList/TxRow/txRow.spec.js +++ b/js/src/ui/TxList/TxRow/txRow.spec.js @@ -30,6 +30,9 @@ const STORE = { subscribe: sinon.stub(), getState: () => { return { + nodeStatus: { + netVersion: '42' + }, personal: { accounts: { '0x123': {} @@ -61,7 +64,7 @@ describe('ui/TxList/TxRow', () => { value: new BigNumber(1) }; - expect(render({ address: '0x123', block, isTest: true, tx })).to.be.ok; + expect(render({ address: '0x123', block, netVersion: '42', tx })).to.be.ok; }); it('renders an account link', () => { @@ -75,7 +78,7 @@ describe('ui/TxList/TxRow', () => { value: new BigNumber(1) }; - const element = render({ address: '0x123', block, isTest: true, tx }); + const element = render({ address: '0x123', block, netVersion: '42', tx }); expect(element.find('Link').prop('to')).to.equal('/accounts/0x123'); }); @@ -91,7 +94,7 @@ describe('ui/TxList/TxRow', () => { value: new BigNumber(1) }; - const element = render({ address: '0x123', block, isTest: true, tx }); + const element = render({ address: '0x123', block, netVersion: '42', tx }); expect(element.find('Link').prop('to')).to.equal('/addresses/0x456'); }); diff --git a/js/src/ui/TxList/txList.js b/js/src/ui/TxList/txList.js index 044c6581c..f3043a47f 100644 --- a/js/src/ui/TxList/txList.js +++ b/js/src/ui/TxList/txList.js @@ -35,7 +35,7 @@ class TxList extends Component { PropTypes.array, PropTypes.object ]).isRequired, - isTest: PropTypes.bool.isRequired + netVersion: PropTypes.string.isRequired } store = new Store(this.context.api); @@ -63,7 +63,7 @@ class TxList extends Component { } renderRows () { - const { address, isTest } = this.props; + const { address, netVersion } = this.props; return this.store.sortedHashes.map((txhash) => { const tx = this.store.transactions[txhash]; @@ -76,7 +76,7 @@ class TxList extends Component { tx={ tx } block={ block } address={ address } - isTest={ isTest } + netVersion={ netVersion } /> ); }); @@ -84,10 +84,10 @@ class TxList extends Component { } function mapStateToProps (state) { - const { isTest } = state.nodeStatus; + const { netVersion } = state.nodeStatus; return { - isTest + netVersion }; } diff --git a/js/src/ui/TxList/txList.spec.js b/js/src/ui/TxList/txList.spec.js index 48ed5aac5..58a5237ac 100644 --- a/js/src/ui/TxList/txList.spec.js +++ b/js/src/ui/TxList/txList.spec.js @@ -30,7 +30,7 @@ const STORE = { getState: () => { return { nodeStatus: { - isTest: true + netVersion: '42' } }; } diff --git a/js/src/views/Account/Transactions/store.js b/js/src/views/Account/Transactions/store.js index 2ad962904..10d5af025 100644 --- a/js/src/views/Account/Transactions/store.js +++ b/js/src/views/Account/Transactions/store.js @@ -21,8 +21,8 @@ import etherscan from '~/3rdparty/etherscan'; export default class Store { @observable address = null; @observable isLoading = false; - @observable isTest = undefined; @observable isTracing = false; + @observable netVersion = '0'; @observable txHashes = []; constructor (api) { @@ -44,8 +44,8 @@ export default class Store { this.isLoading = isLoading; } - @action setTest = (isTest) => { - this.isTest = isTest; + @action setNetVersion = (netVersion) => { + this.netVersion = netVersion; } @action setTracing = (isTracing) => { @@ -55,7 +55,7 @@ export default class Store { @action updateProps = (props) => { transaction(() => { this.setAddress(props.address); - this.setTest(props.isTest); + this.setNetVersion(props.netVersion); // TODO: When tracing is enabled again, adjust to actually set this.setTracing(false && props.traceMode); @@ -65,7 +65,7 @@ export default class Store { } getTransactions () { - if (this.isTest === undefined) { + if (this.netVersion === '0') { return Promise.resolve(); } @@ -87,7 +87,7 @@ export default class Store { } fetchEtherscanTransactions () { - return etherscan.account.transactions(this.address, 0, this.isTest); + return etherscan.account.transactions(this.address, 0, false, this.netVersion); } fetchTraceTransactions () { diff --git a/js/src/views/Account/Transactions/store.spec.js b/js/src/views/Account/Transactions/store.spec.js index 04b89e1fb..c99e91512 100644 --- a/js/src/views/Account/Transactions/store.spec.js +++ b/js/src/views/Account/Transactions/store.spec.js @@ -43,7 +43,7 @@ function mockQuery () { sort: 'desc' }, reply: [{ hash: '123' }] - }], true); + }], false, '42'); } describe('views/Account/Transactions/store', () => { @@ -94,10 +94,10 @@ describe('views/Account/Transactions/store', () => { }); }); - describe('setTest', () => { - it('sets the isTest flag', () => { - store.setTest(true); - expect(store.isTest).to.be.true; + describe('setNetVersion', () => { + it('sets the netVersion', () => { + store.setNetVersion('testing'); + expect(store.netVersion).to.equal('testing'); }); }); @@ -124,7 +124,7 @@ describe('views/Account/Transactions/store', () => { it('retrieves the hashes via etherscan', () => { sinon.spy(store, 'fetchEtherscanTransactions'); store.setAddress(ADDRESS); - store.setTest(true); + store.setNetVersion('42'); store.setTracing(false); return store.getTransactions().then(() => { @@ -137,7 +137,7 @@ describe('views/Account/Transactions/store', () => { it('retrieves the hashes via tracing', () => { sinon.spy(store, 'fetchTraceTransactions'); store.setAddress(ADDRESS); - store.setTest(true); + store.setNetVersion('42'); store.setTracing(true); return store.getTransactions().then(() => { @@ -151,7 +151,7 @@ describe('views/Account/Transactions/store', () => { describe('fetchEtherscanTransactions', () => { it('retrieves the transactions', () => { store.setAddress(ADDRESS); - store.setTest(true); + store.setNetVersion('42'); return store.fetchEtherscanTransactions().then((transactions) => { expect(transactions).to.deep.equal([{ @@ -169,7 +169,7 @@ describe('views/Account/Transactions/store', () => { describe('fetchTraceTransactions', () => { it('retrieves the transactions', () => { store.setAddress(ADDRESS); - store.setTest(true); + store.setNetVersion('42'); return store.fetchTraceTransactions().then((transactions) => { expect(transactions).to.deep.equal([ diff --git a/js/src/views/Account/Transactions/transactions.js b/js/src/views/Account/Transactions/transactions.js index 1e74726c1..f36529713 100644 --- a/js/src/views/Account/Transactions/transactions.js +++ b/js/src/views/Account/Transactions/transactions.js @@ -32,7 +32,7 @@ class Transactions extends Component { static propTypes = { address: PropTypes.string.isRequired, - isTest: PropTypes.bool, + netVersion: PropTypes.string.isRequired, traceMode: PropTypes.bool } @@ -48,7 +48,7 @@ class Transactions extends Component { return; } - const hasChanged = ['isTest', 'address'] + const hasChanged = ['address', 'netVersion'] .map(key => newProps[key] !== this.props[key]) .reduce((truth, keyTruth) => truth || keyTruth, false); @@ -112,10 +112,10 @@ class Transactions extends Component { } function mapStateToProps (state) { - const { isTest, traceMode } = state.nodeStatus; + const { netVersion, traceMode } = state.nodeStatus; return { - isTest, + netVersion, traceMode }; } diff --git a/js/src/views/Account/account.test.js b/js/src/views/Account/account.test.js index 8683465fb..c88e0e156 100644 --- a/js/src/views/Account/account.test.js +++ b/js/src/views/Account/account.test.js @@ -36,7 +36,7 @@ function createRedux () { }, images: {}, nodeStatus: { - isTest: false, + netVersion: '1', traceMode: false }, personal: { diff --git a/js/src/views/Application/TabBar/tabBar.js b/js/src/views/Application/TabBar/tabBar.js index d9aa07089..d136029e9 100644 --- a/js/src/views/Application/TabBar/tabBar.js +++ b/js/src/views/Application/TabBar/tabBar.js @@ -32,8 +32,6 @@ class TabBar extends Component { }; static propTypes = { - isTest: PropTypes.bool, - netChain: PropTypes.string, pending: PropTypes.array, views: PropTypes.array.isRequired }; diff --git a/js/src/views/Application/application.js b/js/src/views/Application/application.js index 377dcecbc..da8a1235b 100644 --- a/js/src/views/Application/application.js +++ b/js/src/views/Application/application.js @@ -46,8 +46,6 @@ class Application extends Component { static propTypes = { blockNumber: PropTypes.object, children: PropTypes.node, - isTest: PropTypes.bool, - netChain: PropTypes.string, pending: PropTypes.array } @@ -86,7 +84,7 @@ class Application extends Component { } renderApp () { - const { blockNumber, children, pending, netChain, isTest } = this.props; + const { blockNumber, children, pending } = this.props; return ( - +
{ children }
@@ -125,15 +119,13 @@ class Application extends Component { } function mapStateToProps (state) { - const { blockNumber, netChain, isTest } = state.nodeStatus; + const { blockNumber } = state.nodeStatus; const { hasAccounts } = state.personal; const { pending } = state.signer; return { blockNumber, hasAccounts, - isTest, - netChain, pending }; } diff --git a/js/src/views/Contract/Events/Event/event.js b/js/src/views/Contract/Events/Event/event.js index 5e34e2dd7..64e4cdd49 100644 --- a/js/src/views/Contract/Events/Event/event.js +++ b/js/src/views/Contract/Events/Event/event.js @@ -32,7 +32,7 @@ export default class Event extends Component { static propTypes = { event: PropTypes.object.isRequired, - isTest: PropTypes.bool + netVersion: PropTypes.string.isRequired } state = { @@ -44,11 +44,11 @@ export default class Event extends Component { } render () { - const { event, isTest } = this.props; + const { event, netVersion } = this.props; const { block, transaction } = this.state; const classes = `${styles.event} ${styles[event.state]}`; - const url = txLink(event.transactionHash, isTest); + const url = txLink(event.transactionHash, false, netVersion); const keys = Object.keys(event.params).join(', '); const values = Object.keys(event.params).map((name, index) => { const param = event.params[name]; diff --git a/js/src/views/Contract/Events/events.js b/js/src/views/Contract/Events/events.js index 1731488d9..a709c137a 100644 --- a/js/src/views/Contract/Events/events.js +++ b/js/src/views/Contract/Events/events.js @@ -36,9 +36,9 @@ export default class Events extends Component { }; static propTypes = { - isTest: PropTypes.bool.isRequired, isLoading: PropTypes.bool, - events: PropTypes.array + events: PropTypes.array, + netVersion: PropTypes.string.isRequired }; static defaultProps = { @@ -47,7 +47,7 @@ export default class Events extends Component { }; render () { - const { events, isTest, isLoading } = this.props; + const { events, isLoading, netVersion } = this.props; if (isLoading) { return ( @@ -80,7 +80,7 @@ export default class Events extends Component { ); }); @@ -96,7 +96,9 @@ export default class Events extends Component { - { list } + + { list } +
); diff --git a/js/src/views/Contract/contract.js b/js/src/views/Contract/contract.js index 0a38166c4..801bd3f43 100644 --- a/js/src/views/Contract/contract.js +++ b/js/src/views/Contract/contract.js @@ -47,7 +47,7 @@ class Contract extends Component { accountsInfo: PropTypes.object, balances: PropTypes.object, contracts: PropTypes.object, - isTest: PropTypes.bool, + netVersion: PropTypes.string.isRequired, params: PropTypes.object }; @@ -115,7 +115,7 @@ class Contract extends Component { } render () { - const { accountsInfo, balances, contracts, params, isTest } = this.props; + const { accountsInfo, balances, contracts, netVersion, params } = this.props; const { allEvents, contract, queryValues, loadingEvents } = this.state; const account = contracts[params.address]; const balance = balances[params.address]; @@ -144,9 +144,9 @@ class Contract extends Component { values={ queryValues } /> { this.renderDetails(account) } @@ -518,14 +518,14 @@ class Contract extends Component { function mapStateToProps (state) { const { accounts, accountsInfo, contracts } = state.personal; const { balances } = state.balances; - const { isTest } = state.nodeStatus; + const { netVersion } = state.nodeStatus; return { - isTest, accounts, accountsInfo, + balances, contracts, - balances + netVersion }; } diff --git a/js/src/views/Signer/components/Account/AccountLink/accountLink.js b/js/src/views/Signer/components/Account/AccountLink/accountLink.js index 81f25f4e1..afa8e98e5 100644 --- a/js/src/views/Signer/components/Account/AccountLink/accountLink.js +++ b/js/src/views/Signer/components/Account/AccountLink/accountLink.js @@ -26,8 +26,7 @@ class AccountLink extends Component { address: PropTypes.string.isRequired, className: PropTypes.string, children: PropTypes.node, - externalLink: PropTypes.string.isRequired, - isTest: PropTypes.bool.isRequired + externalLink: PropTypes.string.isRequired } state = { @@ -35,15 +34,15 @@ class AccountLink extends Component { }; componentWillMount () { - const { address, externalLink, isTest } = this.props; + const { address, externalLink } = this.props; - this.updateLink(address, externalLink, isTest); + this.updateLink(address, externalLink); } componentWillReceiveProps (nextProps) { - const { address, externalLink, isTest } = nextProps; + const { address, externalLink } = nextProps; - this.updateLink(address, externalLink, isTest); + this.updateLink(address, externalLink); } render () { @@ -71,7 +70,7 @@ class AccountLink extends Component { ); } - updateLink (address, externalLink, isTest) { + updateLink (address, externalLink) { const { accountAddresses } = this.props; const isAccount = accountAddresses.includes(address); diff --git a/js/src/views/Signer/components/Account/account.js b/js/src/views/Signer/components/Account/account.js index f3f4b66e3..5a675abf7 100644 --- a/js/src/views/Signer/components/Account/account.js +++ b/js/src/views/Signer/components/Account/account.js @@ -27,7 +27,7 @@ export default class Account extends Component { className: PropTypes.string, disabled: PropTypes.bool, externalLink: PropTypes.string.isRequired, - isTest: PropTypes.bool.isRequired, + netVersion: PropTypes.string.isRequired, balance: PropTypes.object // eth BigNumber, not required since it mght take time to fetch }; @@ -53,14 +53,14 @@ export default class Account extends Component { } render () { - const { address, disabled, externalLink, isTest, className } = this.props; + const { address, className, disabled, externalLink, netVersion } = this.props; return (
; if (!name) { @@ -91,7 +91,7 @@ export default class Account extends Component { [{ this.shortAddress(address) }] @@ -102,7 +102,7 @@ export default class Account extends Component { { name } diff --git a/js/src/views/Signer/components/RequestPending/requestPending.js b/js/src/views/Signer/components/RequestPending/requestPending.js index 181d12462..671df6cbb 100644 --- a/js/src/views/Signer/components/RequestPending/requestPending.js +++ b/js/src/views/Signer/components/RequestPending/requestPending.js @@ -27,7 +27,7 @@ export default class RequestPending extends Component { gasLimit: PropTypes.object.isRequired, id: PropTypes.object.isRequired, isSending: PropTypes.bool.isRequired, - isTest: PropTypes.bool.isRequired, + netVersion: PropTypes.string.isRequired, onConfirm: PropTypes.func.isRequired, onReject: PropTypes.func.isRequired, origin: PropTypes.object.isRequired, @@ -45,7 +45,7 @@ export default class RequestPending extends Component { }; render () { - const { className, date, focus, gasLimit, id, isSending, isTest, onReject, payload, signerstore, origin } = this.props; + const { className, date, focus, gasLimit, id, isSending, netVersion, onReject, payload, signerstore, origin } = this.props; if (payload.sign) { const { sign } = payload; @@ -59,7 +59,7 @@ export default class RequestPending extends Component { id={ id } isFinished={ false } isSending={ isSending } - isTest={ isTest } + netVersion={ netVersion } onConfirm={ this.onConfirm } onReject={ onReject } origin={ origin } @@ -79,7 +79,7 @@ export default class RequestPending extends Component { gasLimit={ gasLimit } id={ id } isSending={ isSending } - isTest={ isTest } + netVersion={ netVersion } onConfirm={ this.onConfirm } onReject={ onReject } origin={ origin } diff --git a/js/src/views/Signer/components/RequestPending/requestPending.spec.js b/js/src/views/Signer/components/RequestPending/requestPending.spec.js index e21662fcf..686c23b67 100644 --- a/js/src/views/Signer/components/RequestPending/requestPending.spec.js +++ b/js/src/views/Signer/components/RequestPending/requestPending.spec.js @@ -54,8 +54,8 @@ function render (payload) { date={ new Date() } gasLimit={ new BigNumber(100000) } id={ new BigNumber(123) } - isTest={ false } isSending={ false } + netVersion='42' onConfirm={ onConfirm } onReject={ onReject } origin={ {} } diff --git a/js/src/views/Signer/components/SignRequest/signRequest.js b/js/src/views/Signer/components/SignRequest/signRequest.js index cc235aa58..373262d41 100644 --- a/js/src/views/Signer/components/SignRequest/signRequest.js +++ b/js/src/views/Signer/components/SignRequest/signRequest.js @@ -46,7 +46,7 @@ export default class SignRequest extends Component { data: PropTypes.string.isRequired, id: PropTypes.object.isRequired, isFinished: PropTypes.bool.isRequired, - isTest: PropTypes.bool.isRequired, + netVersion: PropTypes.string.isRequired, signerstore: PropTypes.object.isRequired, className: PropTypes.string, @@ -106,7 +106,7 @@ export default class SignRequest extends Component { renderDetails () { const { api } = this.context; - const { address, isTest, signerstore, data, origin } = this.props; + const { address, data, netVersion, origin, signerstore } = this.props; const { balances, externalLink } = signerstore; const balance = balances[address]; @@ -122,7 +122,7 @@ export default class SignRequest extends Component { address={ address } balance={ balance } externalLink={ externalLink } - isTest={ isTest } + netVersion={ netVersion } />
diff --git a/js/src/views/Signer/components/TransactionMainDetails/transactionMainDetails.js b/js/src/views/Signer/components/TransactionMainDetails/transactionMainDetails.js index c255fa0c3..ebbddf895 100644 --- a/js/src/views/Signer/components/TransactionMainDetails/transactionMainDetails.js +++ b/js/src/views/Signer/components/TransactionMainDetails/transactionMainDetails.js @@ -36,7 +36,7 @@ export default class TransactionMainDetails extends Component { fromBalance: PropTypes.object, gasStore: PropTypes.object, id: PropTypes.object.isRequired, - isTest: PropTypes.bool.isRequired, + netVersion: PropTypes.string.isRequired, origin: PropTypes.any, totalValue: PropTypes.object.isRequired, transaction: PropTypes.object.isRequired, @@ -63,7 +63,7 @@ export default class TransactionMainDetails extends Component { } render () { - const { children, disabled, externalLink, from, fromBalance, gasStore, isTest, transaction, origin } = this.props; + const { children, disabled, externalLink, from, fromBalance, gasStore, netVersion, transaction, origin } = this.props; return (
@@ -74,7 +74,7 @@ export default class TransactionMainDetails extends Component { balance={ fromBalance } disabled={ disabled } externalLink={ externalLink } - isTest={ isTest } + netVersion={ netVersion } />
diff --git a/js/src/views/Signer/components/TransactionPending/transactionPending.js b/js/src/views/Signer/components/TransactionPending/transactionPending.js index 49b9c3ef8..9b0b91ef6 100644 --- a/js/src/views/Signer/components/TransactionPending/transactionPending.js +++ b/js/src/views/Signer/components/TransactionPending/transactionPending.js @@ -43,7 +43,7 @@ class TransactionPending extends Component { gasLimit: PropTypes.object, id: PropTypes.object.isRequired, isSending: PropTypes.bool.isRequired, - isTest: PropTypes.bool.isRequired, + netVersion: PropTypes.string.isRequired, nonce: PropTypes.number, onConfirm: PropTypes.func.isRequired, onReject: PropTypes.func.isRequired, @@ -98,7 +98,7 @@ class TransactionPending extends Component { } renderTransaction () { - const { accounts, className, focus, id, isSending, isTest, signerstore, transaction, origin } = this.props; + const { accounts, className, focus, id, isSending, netVersion, origin, signerstore, transaction } = this.props; const { totalValue } = this.state; const { balances, externalLink } = signerstore; const { from, value } = transaction; @@ -116,7 +116,7 @@ class TransactionPending extends Component { fromBalance={ fromBalance } gasStore={ this.gasStore } id={ id } - isTest={ isTest } + netVersion={ netVersion } origin={ origin } totalValue={ totalValue } transaction={ transaction } diff --git a/js/src/views/Signer/components/TxHashLink/txHashLink.js b/js/src/views/Signer/components/TxHashLink/txHashLink.js index 629f30835..42cc336e7 100644 --- a/js/src/views/Signer/components/TxHashLink/txHashLink.js +++ b/js/src/views/Signer/components/TxHashLink/txHashLink.js @@ -22,17 +22,17 @@ export default class TxHashLink extends Component { static propTypes = { children: PropTypes.node, className: PropTypes.string, - isTest: PropTypes.bool.isRequired, + netVersion: PropTypes.string.isRequired, txHash: PropTypes.string.isRequired } render () { - const { children, className, isTest, txHash } = this.props; + const { children, className, netVersion, txHash } = this.props; return (
{ children || txHash } diff --git a/js/src/views/Signer/containers/Embedded/embedded.js b/js/src/views/Signer/containers/Embedded/embedded.js index ebb3d8e2d..6d63590c7 100644 --- a/js/src/views/Signer/containers/Embedded/embedded.js +++ b/js/src/views/Signer/containers/Embedded/embedded.js @@ -39,7 +39,7 @@ class Embedded extends Component { }).isRequired, externalLink: PropTypes.string, gasLimit: PropTypes.object.isRequired, - isTest: PropTypes.bool.isRequired, + netVersion: PropTypes.string.isRequired, signer: PropTypes.shape({ finished: PropTypes.array.isRequired, pending: PropTypes.array.isRequired @@ -80,7 +80,7 @@ class Embedded extends Component { } renderPending = (data, index) => { - const { actions, gasLimit, isTest } = this.props; + const { actions, gasLimit, netVersion } = this.props; const { date, id, isSending, payload, origin } = data; return ( @@ -91,7 +91,7 @@ class Embedded extends Component { gasLimit={ gasLimit } id={ id } isSending={ isSending } - isTest={ isTest } + netVersion={ netVersion } key={ id } onConfirm={ actions.startConfirmRequest } onReject={ actions.startRejectRequest } @@ -108,13 +108,13 @@ class Embedded extends Component { } function mapStateToProps (state) { - const { gasLimit, isTest } = state.nodeStatus; + const { gasLimit, netVersion } = state.nodeStatus; const { actions, signer } = state; return { actions, gasLimit, - isTest, + netVersion, signer }; } diff --git a/js/src/views/Signer/containers/RequestsPage/requestsPage.js b/js/src/views/Signer/containers/RequestsPage/requestsPage.js index deb8560f7..d90ed7693 100644 --- a/js/src/views/Signer/containers/RequestsPage/requestsPage.js +++ b/js/src/views/Signer/containers/RequestsPage/requestsPage.js @@ -40,7 +40,7 @@ class RequestsPage extends Component { startRejectRequest: PropTypes.func.isRequired }).isRequired, gasLimit: PropTypes.object.isRequired, - isTest: PropTypes.bool.isRequired, + netVersion: PropTypes.string.isRequired, signer: PropTypes.shape({ pending: PropTypes.array.isRequired, finished: PropTypes.array.isRequired @@ -106,7 +106,7 @@ class RequestsPage extends Component { } renderPending = (data, index) => { - const { actions, gasLimit, isTest } = this.props; + const { actions, gasLimit, netVersion } = this.props; const { date, id, isSending, payload, origin } = data; return ( @@ -117,7 +117,7 @@ class RequestsPage extends Component { gasLimit={ gasLimit } id={ id } isSending={ isSending } - isTest={ isTest } + netVersion={ netVersion } key={ id } onConfirm={ actions.startConfirmRequest } onReject={ actions.startRejectRequest } @@ -130,13 +130,13 @@ class RequestsPage extends Component { } function mapStateToProps (state) { - const { gasLimit, isTest } = state.nodeStatus; + const { gasLimit, netVersion } = state.nodeStatus; const { actions, signer } = state; return { actions, gasLimit, - isTest, + netVersion, signer }; } diff --git a/js/src/views/Wallet/Confirmations/confirmations.js b/js/src/views/Wallet/Confirmations/confirmations.js index 8f7e6ea52..bea1ffd95 100644 --- a/js/src/views/Wallet/Confirmations/confirmations.js +++ b/js/src/views/Wallet/Confirmations/confirmations.js @@ -37,7 +37,7 @@ class WalletConfirmations extends Component { static propTypes = { accounts: PropTypes.object.isRequired, address: PropTypes.string.isRequired, - isTest: PropTypes.bool.isRequired, + netVersion: PropTypes.string.isRequired, owners: PropTypes.array.isRequired, require: PropTypes.object.isRequired, confirmOperation: PropTypes.func.isRequired, @@ -115,7 +115,7 @@ class WalletConfirmation extends Component { accounts: PropTypes.object.isRequired, confirmation: PropTypes.object.isRequired, address: PropTypes.string.isRequired, - isTest: PropTypes.bool.isRequired, + netVersion: PropTypes.string.isRequired, owners: PropTypes.array.isRequired, require: PropTypes.object.isRequired, confirmOperation: PropTypes.func.isRequired, @@ -353,7 +353,7 @@ class WalletConfirmation extends Component { } renderTransactionRow (confirmation, className) { - const { address, isTest } = this.props; + const { address, netVersion } = this.props; const { operation, transactionHash, blockNumber, value, to, data } = confirmation; if (value && to && data) { @@ -362,7 +362,7 @@ class WalletConfirmation extends Component { address={ address } className={ className } historic={ false } - isTest={ isTest } + netVersion={ netVersion } key={ operation } tx={ { hash: transactionHash, diff --git a/js/src/views/Wallet/Transactions/transactions.js b/js/src/views/Wallet/Transactions/transactions.js index d81c2633a..0ef853a70 100644 --- a/js/src/views/Wallet/Transactions/transactions.js +++ b/js/src/views/Wallet/Transactions/transactions.js @@ -26,7 +26,7 @@ import txListStyles from '~/ui/TxList/txList.css'; export default class WalletTransactions extends Component { static propTypes = { address: PropTypes.string.isRequired, - isTest: PropTypes.bool.isRequired, + netVersion: PropTypes.string.isRequired, transactions: PropTypes.array }; @@ -51,7 +51,7 @@ export default class WalletTransactions extends Component { ); } renderTransactions () { - const { address, isTest, transactions } = this.props; + const { address, netVersion, transactions } = this.props; if (!transactions) { return null; @@ -76,7 +76,7 @@ export default class WalletTransactions extends Component { return ( ); @@ -51,7 +51,7 @@ class WalletContainer extends Component { return ( ); @@ -66,7 +66,7 @@ class Wallet extends Component { static propTypes = { address: PropTypes.string.isRequired, balance: nullableProptype(PropTypes.object.isRequired), - isTest: PropTypes.bool.isRequired, + netVersion: PropTypes.string.isRequired, owned: PropTypes.bool.isRequired, setVisibleAccounts: PropTypes.func.isRequired, wallet: PropTypes.object.isRequired, @@ -181,7 +181,7 @@ class Wallet extends Component { } renderDetails () { - const { address, isTest, wallet } = this.props; + const { address, netVersion, wallet } = this.props; const { owners, require, confirmations, transactions } = wallet; if (!owners || !require) { @@ -196,7 +196,7 @@ class Wallet extends Component { @@ -389,7 +389,7 @@ function mapStateToProps (_, initProps) { const { address } = initProps.params; return (state) => { - const { isTest } = state.nodeStatus; + const { netVersion } = state.nodeStatus; const { accountsInfo = {}, accounts = {} } = state.personal; const { balances } = state.balances; const walletAccount = accounts[address] || accountsInfo[address] || null; @@ -405,7 +405,7 @@ function mapStateToProps (_, initProps) { return { address, balance, - isTest, + netVersion, owned, wallet, walletAccount