diff --git a/app/scripts/controllers/network/enums.js b/app/scripts/controllers/network/enums.js index 1a9890e8b..e9a58ec68 100644 --- a/app/scripts/controllers/network/enums.js +++ b/app/scripts/controllers/network/enums.js @@ -1,64 +1,80 @@ +const POA = 'poa' +const DAI = 'dai' +const POA_SOKOL = 'sokol' +const MAINNET = 'mainnet' const ROPSTEN = 'ropsten' const RINKEBY = 'rinkeby' const KOVAN = 'kovan' -const MAINNET = 'mainnet' -const POA_SOKOL = 'sokol' -const POA = 'poa' -const DAI = 'dai' +const RSK = 'rsk' +const RSK_TESTNET = 'rsk_testnet' const LOCALHOST = 'localhost' -const MAINNET_CODE = 1 -const ROPSTEN_CODE = 3 -const RINKEYBY_CODE = 4 -const KOVAN_CODE = 42 -const POA_SOKOL_CODE = 77 const POA_CODE = 99 const DAI_CODE = 100 +const POA_SOKOL_CODE = 77 +const MAINNET_CODE = 1 +const ROPSTEN_CODE = 3 +const RINKEBY_CODE = 4 +const KOVAN_CODE = 42 +const RSK_CODE = 30 +const RSK_TESTNET_CODE = 31 +const POA_DISPLAY_NAME = 'POA Network' +const DAI_DISPLAY_NAME = 'xDai Chain' +const POA_SOKOL_DISPLAY_NAME = 'Sokol' +const MAINNET_DISPLAY_NAME = 'Main Ethereum Network' const ROPSTEN_DISPLAY_NAME = 'Ropsten' const RINKEBY_DISPLAY_NAME = 'Rinkeby' const KOVAN_DISPLAY_NAME = 'Kovan' -const POA_SOKOL_DISPLAY_NAME = 'Sokol' -const POA_DISPLAY_NAME = 'POA Network' -const DAI_DISPLAY_NAME = 'xDai Chain' -const MAINNET_DISPLAY_NAME = 'Main Ethereum Network' +const RSK_DISPLAY_NAME = 'RSK Mainnet' +const RSK_TESTNET_DISPLAY_NAME = 'RSK Testnet' +const DROPDOWN_POA_DISPLAY_NAME = POA_DISPLAY_NAME +const DROPDOWN_DAI_DISPLAY_NAME = DAI_DISPLAY_NAME +const DROPDOWN_POA_SOKOL_DISPLAY_NAME = 'Sokol Network' +const DROPDOWN_MAINNET_DISPLAY_NAME = 'Main Network' const DROPDOWN_ROPSTEN_DISPLAY_NAME = 'Ropsten Test Net' const DROPDOWN_RINKEBY_DISPLAY_NAME = 'Rinkeby Test Net' const DROPDOWN_KOVAN_DISPLAY_NAME = 'Kovan Test Net' -const DROPDOWN_POA_SOKOL_DISPLAY_NAME = 'Sokol Network' -const DROPDOWN_POA_DISPLAY_NAME = POA_DISPLAY_NAME -const DROPDOWN_DAI_DISPLAY_NAME = DAI_DISPLAY_NAME -const DROPDOWN_MAINNET_DISPLAY_NAME = 'Main Network' +const DROPDOWN_RSK_DISPLAY_NAME = 'RSK Main Net' +const DROPDOWN_RSK_TESTNET_DISPLAY_NAME = 'RSK Test Net' module.exports = { + POA, + DAI, + POA_SOKOL, + MAINNET, ROPSTEN, RINKEBY, KOVAN, - MAINNET, - POA_SOKOL, - POA, - DAI, + RSK, + RSK_TESTNET, LOCALHOST, - MAINNET_CODE, - ROPSTEN_CODE, - RINKEYBY_CODE, - KOVAN_CODE, - POA_SOKOL_CODE, POA_CODE, DAI_CODE, + POA_SOKOL_CODE, + MAINNET_CODE, + ROPSTEN_CODE, + RINKEBY_CODE, + KOVAN_CODE, + RSK_CODE, + RSK_TESTNET_CODE, + POA_DISPLAY_NAME, + DAI_DISPLAY_NAME, + POA_SOKOL_DISPLAY_NAME, + MAINNET_DISPLAY_NAME, ROPSTEN_DISPLAY_NAME, RINKEBY_DISPLAY_NAME, KOVAN_DISPLAY_NAME, - MAINNET_DISPLAY_NAME, - POA_SOKOL_DISPLAY_NAME, - POA_DISPLAY_NAME, - DAI_DISPLAY_NAME, + RSK_DISPLAY_NAME, + RSK_TESTNET_DISPLAY_NAME, + DROPDOWN_POA_DISPLAY_NAME, + DROPDOWN_DAI_DISPLAY_NAME, + DROPDOWN_POA_SOKOL_DISPLAY_NAME, + DROPDOWN_MAINNET_DISPLAY_NAME, DROPDOWN_ROPSTEN_DISPLAY_NAME, DROPDOWN_RINKEBY_DISPLAY_NAME, DROPDOWN_KOVAN_DISPLAY_NAME, - DROPDOWN_POA_SOKOL_DISPLAY_NAME, - DROPDOWN_POA_DISPLAY_NAME, - DROPDOWN_DAI_DISPLAY_NAME, - DROPDOWN_MAINNET_DISPLAY_NAME, + DROPDOWN_RSK_DISPLAY_NAME, + DROPDOWN_RSK_TESTNET_DISPLAY_NAME, } diff --git a/app/scripts/controllers/network/network.js b/app/scripts/controllers/network/network.js index 97eea4cbc..3a1a0bd44 100644 --- a/app/scripts/controllers/network/network.js +++ b/app/scripts/controllers/network/network.js @@ -11,6 +11,7 @@ const createInfuraClient = require('./createInfuraClient') const createJsonRpcClient = require('./createJsonRpcClient') const createLocalhostClient = require('./createLocalhostClient') const { createSwappableProxy, createEventEmitterProxy } = require('swappable-obj-proxy') +const ethNetProps = require('eth-net-props') const { ROPSTEN, @@ -21,10 +22,14 @@ const { POA_SOKOL, POA, DAI, + RSK, + RSK_TESTNET, + POA_CODE, + DAI_CODE, + POA_SOKOL_CODE, + RSK_CODE, + RSK_TESTNET_CODE, } = require('./enums') -const POA_RPC_URL = 'https://core.poa.network' -const DAI_RPC_URL = 'https://dai.poa.network' -const SOKOL_RPC_URL = 'https://sokol.poa.network' const INFURA_PROVIDER_TYPES = [ROPSTEN, RINKEBY, KOVAN, MAINNET] const env = process.env.METAMASK_ENV @@ -109,7 +114,14 @@ module.exports = class NetworkController extends EventEmitter { async setProviderType (type) { assert.notEqual(type, 'rpc', `NetworkController - cannot call "setProviderType" with type 'rpc'. use "setRpcTarget"`) - assert(INFURA_PROVIDER_TYPES.includes(type) || type === LOCALHOST || type === POA_SOKOL || type === POA || type === DAI, `NetworkController - Unknown rpc type "${type}"`) + assert(INFURA_PROVIDER_TYPES.includes(type) || + type === LOCALHOST || + type === POA_SOKOL || + type === POA || + type === DAI || + type === RSK || + type === RSK_TESTNET + , `NetworkController - Unknown rpc type "${type}"`) const providerConfig = { type } this.providerConfig = providerConfig } @@ -145,11 +157,15 @@ module.exports = class NetworkController extends EventEmitter { this._configureInfuraProvider(opts) // other type-based rpc endpoints } else if (type === POA) { - this._configureStandardProvider({ rpcUrl: POA_RPC_URL }) + this._configureStandardProvider({ rpcUrl: ethNetProps.RPCEndpoints(POA_CODE)[0] }) } else if (type === DAI) { - this._configureStandardProvider({ rpcUrl: DAI_RPC_URL }) + this._configureStandardProvider({ rpcUrl: ethNetProps.RPCEndpoints(DAI_CODE)[0] }) } else if (type === POA_SOKOL) { - this._configureStandardProvider({ rpcUrl: SOKOL_RPC_URL }) + this._configureStandardProvider({ rpcUrl: ethNetProps.RPCEndpoints(POA_SOKOL_CODE)[0] }) + } else if (type === RSK) { + this._configureStandardProvider({ rpcUrl: ethNetProps.RPCEndpoints(RSK_CODE)[0] }) + } else if (type === RSK_TESTNET) { + this._configureStandardProvider({ rpcUrl: ethNetProps.RPCEndpoints(RSK_TESTNET_CODE)[0] }) } else if (type === LOCALHOST) { this._configureLocalhostProvider() // url-based rpc endpoints diff --git a/app/scripts/controllers/network/util.js b/app/scripts/controllers/network/util.js index 414e1feb8..1a0059a17 100644 --- a/app/scripts/controllers/network/util.js +++ b/app/scripts/controllers/network/util.js @@ -1,39 +1,137 @@ const { - POA_SOKOL, POA, + DAI, + POA_SOKOL, + MAINNET, ROPSTEN, RINKEBY, KOVAN, - MAINNET, - POA_SOKOL_CODE, - ROPSTEN_CODE, - RINKEYBY_CODE, - KOVAN_CODE, + RSK, + RSK_TESTNET, POA_CODE, + DAI_CODE, + POA_SOKOL_CODE, + MAINNET_CODE, + ROPSTEN_CODE, + RINKEBY_CODE, + KOVAN_CODE, + RSK_CODE, + RSK_TESTNET_CODE, + POA_DISPLAY_NAME, + DAI_DISPLAY_NAME, POA_SOKOL_DISPLAY_NAME, + MAINNET_DISPLAY_NAME, ROPSTEN_DISPLAY_NAME, RINKEBY_DISPLAY_NAME, KOVAN_DISPLAY_NAME, - MAINNET_DISPLAY_NAME, - POA_DISPLAY_NAME, + RSK_DISPLAY_NAME, + RSK_TESTNET_DISPLAY_NAME, + DROPDOWN_POA_DISPLAY_NAME, + DROPDOWN_DAI_DISPLAY_NAME, + DROPDOWN_POA_SOKOL_DISPLAY_NAME, + DROPDOWN_MAINNET_DISPLAY_NAME, + DROPDOWN_ROPSTEN_DISPLAY_NAME, + DROPDOWN_RINKEBY_DISPLAY_NAME, + DROPDOWN_KOVAN_DISPLAY_NAME, + DROPDOWN_RSK_DISPLAY_NAME, + DROPDOWN_RSK_TESTNET_DISPLAY_NAME, } = require('./enums') -const networkToNameMap = { - [POA_SOKOL]: POA_SOKOL_DISPLAY_NAME, - [POA]: POA_SOKOL_DISPLAY_NAME, - [ROPSTEN]: ROPSTEN_DISPLAY_NAME, - [RINKEBY]: RINKEBY_DISPLAY_NAME, - [KOVAN]: KOVAN_DISPLAY_NAME, - [MAINNET]: MAINNET_DISPLAY_NAME, - [POA_SOKOL_CODE]: POA_SOKOL_DISPLAY_NAME, - [ROPSTEN_CODE]: ROPSTEN_DISPLAY_NAME, - [RINKEYBY_CODE]: RINKEBY_DISPLAY_NAME, - [KOVAN_CODE]: KOVAN_DISPLAY_NAME, - [POA_CODE]: POA_DISPLAY_NAME, -} +const networks = {} -const getNetworkDisplayName = key => networkToNameMap[key] +const POA_OBJ = { + order: 1, + providerName: POA, + networkID: POA_CODE, + displayName: POA_DISPLAY_NAME, + displayNameDropdown: DROPDOWN_POA_DISPLAY_NAME, +} +networks[POA_CODE] = POA_OBJ +networks[POA] = POA_OBJ + +const DAI_OBJ = { + order: 2, + providerName: DAI, + networkID: DAI_CODE, + displayName: DAI_DISPLAY_NAME, + displayNameDropdown: DROPDOWN_DAI_DISPLAY_NAME, +} +networks[DAI_CODE] = DAI_OBJ +networks[DAI] = DAI_OBJ + +const POA_SOKOL_OBJ = { + order: 3, + providerName: POA_SOKOL, + networkID: POA_SOKOL_CODE, + displayName: POA_SOKOL_DISPLAY_NAME, + displayNameDropdown: DROPDOWN_POA_SOKOL_DISPLAY_NAME, +} +networks[POA_SOKOL_CODE] = POA_SOKOL_OBJ +networks[POA_SOKOL] = POA_SOKOL_OBJ + +const MAINNET_OBJ = { + order: 4, + providerName: MAINNET, + networkID: MAINNET_CODE, + displayName: MAINNET_DISPLAY_NAME, + displayNameDropdown: DROPDOWN_MAINNET_DISPLAY_NAME, +} +networks[MAINNET_CODE] = MAINNET_OBJ +networks[MAINNET] = MAINNET_OBJ + +const ROPSTEN_OBJ = { + order: 5, + providerName: ROPSTEN, + networkID: ROPSTEN_CODE, + displayName: ROPSTEN_DISPLAY_NAME, + displayNameDropdown: DROPDOWN_ROPSTEN_DISPLAY_NAME, +} +networks[ROPSTEN_CODE] = ROPSTEN_OBJ +networks[ROPSTEN] = ROPSTEN_OBJ + +const KOVAN_OBJ = { + order: 6, + providerName: KOVAN, + networkID: KOVAN_CODE, + displayName: KOVAN_DISPLAY_NAME, + displayNameDropdown: DROPDOWN_KOVAN_DISPLAY_NAME, +} +networks[KOVAN_CODE] = KOVAN_OBJ +networks[KOVAN] = KOVAN_OBJ + +const RINKEBY_OBJ = { + order: 7, + providerName: RINKEBY, + networkID: RINKEBY_CODE, + displayName: RINKEBY_DISPLAY_NAME, + displayNameDropdown: DROPDOWN_RINKEBY_DISPLAY_NAME, +} +networks[RINKEBY_CODE] = RINKEBY_OBJ +networks[RINKEBY] = RINKEBY_OBJ + +const RSK_OBJ = { + order: 8, + providerName: RSK, + networkID: RSK_CODE, + displayName: RSK_DISPLAY_NAME, + displayNameDropdown: DROPDOWN_RSK_DISPLAY_NAME, +} +networks[RSK_CODE] = RSK_OBJ +networks[RSK] = RSK_OBJ + +const RSK_TESTNET_OBJ = { + order: 9, + providerName: RSK_TESTNET, + networkID: RSK_TESTNET_CODE, + displayName: RSK_TESTNET_DISPLAY_NAME, + displayNameDropdown: DROPDOWN_RSK_TESTNET_DISPLAY_NAME, +} +networks[RSK_TESTNET_CODE] = RSK_TESTNET_OBJ +networks[RSK_TESTNET] = RSK_TESTNET_OBJ + +const getNetworkDisplayName = key => networks[key].displayName module.exports = { + networks, getNetworkDisplayName, } diff --git a/app/scripts/lib/buy-eth-url.js b/app/scripts/lib/buy-eth-url.js index db2fafd82..9bb09885b 100644 --- a/app/scripts/lib/buy-eth-url.js +++ b/app/scripts/lib/buy-eth-url.js @@ -5,6 +5,16 @@ module.exports = { } const ethNetProps = require('eth-net-props') +const { POA_CODE, + DAI_CODE, + POA_SOKOL_CODE, + MAINNET_CODE, + ROPSTEN_CODE, + RINKEBY_CODE, + KOVAN_CODE, + RSK_CODE, + RSK_TESTNET_CODE } = require('../controllers/network/enums') + /** * Gives the caller a url at which the user can acquire coin, depending on the network they are in * @@ -19,16 +29,18 @@ const ethNetProps = require('eth-net-props') */ function getBuyEthUrl ({ network, amount, address, ind }) { let url - switch (network) { - case '1': - case '99': - case '100': + switch (Number(network)) { + case MAINNET_CODE: + case POA_CODE: + case DAI_CODE: + case RSK_CODE: url = getExchanges({network, amount, address})[ind].link break - case '3': - case '4': - case '42': - case '77': + case ROPSTEN_CODE: + case RINKEBY_CODE: + case KOVAN_CODE: + case POA_SOKOL_CODE: + case RSK_TESTNET_CODE: url = getFaucets(network)[ind] break } @@ -85,5 +97,7 @@ function getExchanges ({network, amount, address}) { link: 'https://dai-bridge.poa.network/', }, ] + default: + return [] } } diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index cc13c9ad7..9e0fc30d1 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -52,6 +52,10 @@ const EthQuery = require('eth-query') const ethUtil = require('ethereumjs-util') const sigUtil = require('eth-sig-util') +const { POA_CODE, + DAI_CODE, + POA_SOKOL_CODE } = require('./controllers/network/enums') + module.exports = class MetamaskController extends EventEmitter { /** @@ -1390,7 +1394,7 @@ module.exports = class MetamaskController extends EventEmitter { const networkIdStr = networkController.store.getState().network const networkId = parseInt(networkIdStr) - const isPOA = networkId === 77 || networkId === 99 + const isPOA = networkId === POA_SOKOL_CODE || networkId === POA_CODE || networkId === DAI_CODE // Return 1 gwei if using a POA network of if there are no blocks have been observed: if (isPOA || recentBlocks.length === 0) { diff --git a/app/scripts/platforms/extension.js b/app/scripts/platforms/extension.js index 7d74bf41e..1952d6b99 100644 --- a/app/scripts/platforms/extension.js +++ b/app/scripts/platforms/extension.js @@ -1,6 +1,9 @@ const extension = require('extensionizer') const explorerLinks = require('eth-net-props').explorerLinks const { capitalizeFirstLetter } = require('../lib/util') +const { POA_CODE, + DAI_CODE, + POA_SOKOL_CODE } = require('../controllers/network/enums') class ExtensionPlatform { @@ -125,7 +128,10 @@ class ExtensionPlatform { _getExplorer (hash, networkId) { let explorerName - if (networkId === 99 || networkId === 100 || networkId === 77) { + if (networkId === POA_CODE || + networkId === DAI_CODE || + networkId === POA_SOKOL_CODE + ) { explorerName = 'BlockScout' } else { explorerName = 'Etherscan' diff --git a/old-ui/app/accounts/import/contract.js b/old-ui/app/accounts/import/contract.js index 6d855e0f8..c279e8227 100644 --- a/old-ui/app/accounts/import/contract.js +++ b/old-ui/app/accounts/import/contract.js @@ -6,6 +6,14 @@ import Web3 from 'web3' import log from 'loglevel' import copyToClipboard from 'copy-to-clipboard' +import { POA_CODE, + DAI_CODE, + POA_SOKOL_CODE, + MAINNET_CODE, + ROPSTEN_CODE, + RINKEBY_CODE, + KOVAN_CODE } from '../../../../app/scripts/controllers/network/enums' + class ContractImportView extends Component { constructor (props) { super(props) @@ -186,19 +194,19 @@ class ContractImportView extends Component { getBlockscoutApiNetworkSuffix () { const { network } = this.props switch (Number(network)) { - case 1: + case MAINNET_CODE: return 'mainnet' - case 99: + case POA_CODE: return 'core' - case 77: + case POA_SOKOL_CODE: return 'sokol' - case 100: + case DAI_CODE: return 'dai' - case 42: + case KOVAN_CODE: return 'kovan' - case 3: + case ROPSTEN_CODE: return 'ropsten' - case 4: + case RINKEBY_CODE: return 'rinkeby' default: return '' diff --git a/old-ui/app/components/add-token/add-token.component.js b/old-ui/app/components/add-token/add-token.component.js index 2bcfe4699..3bef803b6 100644 --- a/old-ui/app/components/add-token/add-token.component.js +++ b/old-ui/app/components/add-token/add-token.component.js @@ -18,6 +18,8 @@ const emptyAddr = '0x0000000000000000000000000000000000000000' const SEARCH_TAB = 'SEARCH' const CUSTOM_TOKEN_TAB = 'CUSTOM_TOKEN' +const { POA_CODE, MAINNET_CODE } = require('../../../../app/scripts/controllers/network/enums') + class AddTokenScreen extends Component { static contextTypes = { @@ -93,8 +95,9 @@ class AddTokenScreen extends Component { const { network } = this.props const networkID = parseInt(network) let views = [] - const isProdNetwork = networkID === 1 || networkID === 99 - isProdNetwork ? views = [h(TabBar, { + const isProdNetworkWithKnownTokens = networkID === MAINNET_CODE || + networkID === POA_CODE + isProdNetworkWithKnownTokens ? views = [h(TabBar, { style: { paddingTop: '0px', }, diff --git a/old-ui/app/components/app-bar.js b/old-ui/app/components/app-bar.js index 42449b28c..aefa3a4e9 100644 --- a/old-ui/app/components/app-bar.js +++ b/old-ui/app/components/app-bar.js @@ -9,6 +9,9 @@ const NetworkIndicator = require('./network') const {AccountDropdowns} = require('./account-dropdowns') const ethNetProps = require('eth-net-props') +const { LOCALHOST } = require('../../../app/scripts/controllers/network/enums') +const { networks } = require('../../../app/scripts/controllers/network/util') + const LOCALHOST_RPC_URL = 'http://localhost:8545' module.exports = class AppBar extends Component { @@ -243,6 +246,35 @@ module.exports = class AppBar extends Component { const state = this.state || {} const isOpen = state.isNetworkMenuOpen + const networkDropdownItems = Object.keys(networks) + .filter((networkID) => { + return !isNaN(networkID) + }) + .sort((networkID1, networkID2) => { + const networkObj1 = networks[networkID1] + const networkObj2 = networks[networkID2] + return networkObj1.order - networkObj2.order + }) + .map((networkID) => { + const networkObj = networks[networkID] + return h( + DropdownMenuItem, + { + key: networkObj.providerName, + closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }), + onClick: () => props.dispatch(actions.setProviderType(networkObj.providerName)), + style: { + paddingLeft: '20px', + fontSize: '16px', + color: providerType === networkObj.providerName ? 'white' : '', + }, + }, + [h(providerType === networkObj.providerName ? 'div.selected-network' : ''), + ethNetProps.props.getNetworkDisplayName(networkID), + ] + ) + }) + return h(Dropdown, { useCssTransition: true, isOpen, @@ -272,124 +304,7 @@ module.exports = class AppBar extends Component { }, }, [ - h( - DropdownMenuItem, - { - key: 'poa', - closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }), - onClick: () => props.dispatch(actions.setProviderType('poa')), - style: { - paddingLeft: '20px', - fontSize: '16px', - color: providerType === 'poa' ? 'white' : '', - }, - }, - [h(providerType === 'poa' ? 'div.selected-network' : ''), - ethNetProps.props.getNetworkDisplayName(99), - ] - ), - - h( - DropdownMenuItem, - { - key: 'dai', - closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }), - onClick: () => props.dispatch(actions.setProviderType('dai')), - style: { - paddingLeft: '20px', - fontSize: '16px', - color: providerType === 'dai' ? 'white' : '', - }, - }, - [h(providerType === 'dai' ? 'div.selected-network' : ''), - ethNetProps.props.getNetworkDisplayName(100), - ] - ), - - h( - DropdownMenuItem, - { - key: 'sokol', - closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }), - onClick: () => props.dispatch(actions.setProviderType('sokol')), - style: { - paddingLeft: '20px', - fontSize: '16px', - color: providerType === 'sokol' ? 'white' : '', - }, - }, - [h(providerType === 'sokol' ? 'div.selected-network' : ''), - ethNetProps.props.getNetworkDisplayName(77), - ] - ), - - h( - DropdownMenuItem, - { - key: 'main', - closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }), - onClick: () => props.dispatch(actions.setProviderType('mainnet')), - style: { - paddingLeft: '20px', - fontSize: '16px', - color: providerType === 'mainnet' ? 'white' : '', - }, - }, - [h(providerType === 'mainnet' ? 'div.selected-network' : ''), - ethNetProps.props.getNetworkDisplayName(1), - ] - ), - - h( - DropdownMenuItem, - { - key: 'ropsten', - closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }), - onClick: () => props.dispatch(actions.setProviderType('ropsten')), - style: { - paddingLeft: '20px', - fontSize: '16px', - color: providerType === 'ropsten' ? 'white' : '', - }, - }, - [h(providerType === 'ropsten' ? 'div.selected-network' : ''), - ethNetProps.props.getNetworkDisplayName(3), - ] - ), - - h( - DropdownMenuItem, - { - key: 'kovan', - closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }), - onClick: () => props.dispatch(actions.setProviderType('kovan')), - style: { - paddingLeft: '20px', - fontSize: '16px', - color: providerType === 'kovan' ? 'white' : '', - }, - }, - [h(providerType === 'kovan' ? 'div.selected-network' : ''), - ethNetProps.props.getNetworkDisplayName(42), - ] - ), - - h( - DropdownMenuItem, - { - key: 'rinkeby', - closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }), - onClick: () => props.dispatch(actions.setProviderType('rinkeby')), - style: { - paddingLeft: '20px', - fontSize: '16px', - color: providerType === 'rinkeby' ? 'white' : '', - }, - }, - [h(providerType === 'rinkeby' ? 'div.selected-network' : ''), - ethNetProps.props.getNetworkDisplayName(4), - ] - ), + ...networkDropdownItems, h( DropdownMenuItem, @@ -398,15 +313,15 @@ module.exports = class AppBar extends Component { closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }), onClick: () => { props.dispatch(actions.setRpcTarget('http://localhost:8545')) - props.dispatch(actions.setProviderType('localhost')) + props.dispatch(actions.setProviderType(LOCALHOST)) }, style: { paddingLeft: '20px', fontSize: '16px', - color: providerType === 'localhost' ? 'white' : '', + color: providerType === LOCALHOST ? 'white' : '', }, }, - [h(providerType === 'localhost' ? 'div.selected-network' : ''), + [h(providerType === LOCALHOST ? 'div.selected-network' : ''), 'Localhost 8545', ] ), diff --git a/old-ui/app/components/buy-button-subview.js b/old-ui/app/components/buy-button-subview.js index b6205c5a5..a367c2d54 100644 --- a/old-ui/app/components/buy-button-subview.js +++ b/old-ui/app/components/buy-button-subview.js @@ -8,6 +8,7 @@ import AccountPanel from './account-panel' import RadioList from './custom-radio-list' import { getNetworkDisplayName } from '../../../app/scripts/controllers/network/util' import { getFaucets, getExchanges } from '../../../app/scripts/lib/buy-eth-url' +import { MAINNET_CODE } from '../../../app/scripts/controllers/network/enums' import ethNetProps from 'eth-net-props' import PropTypes from 'prop-types' @@ -157,8 +158,8 @@ class BuyButtonSubview extends Component { } formVersionSubview () { - const network = this.props.network - if (network === '1') { + const { network } = this.props + if (Number(network) === MAINNET_CODE) { if (this.props.buyView.formView.coinbase) { return } else if (this.props.buyView.formView.shapeshift) { diff --git a/old-ui/app/components/fiat-value.js b/old-ui/app/components/fiat-value.js index 96d6cbb43..63a83d133 100644 --- a/old-ui/app/components/fiat-value.js +++ b/old-ui/app/components/fiat-value.js @@ -1,14 +1,15 @@ import React, { Component } from 'react' import { formatBalance, countSignificantDecimals } from '../util' import PropTypes from 'prop-types' +import { DAI_CODE, POA_SOKOL_CODE } from '../../../app/scripts/controllers/network/enums' class FiatValue extends Component { render = () => { const props = this.props let { conversionRate } = props const { currentCurrency, network } = props - const isSokol = parseInt(network) === 77 - const isDai = parseInt(network) === 100 + const isSokol = parseInt(network) === POA_SOKOL_CODE + const isDai = parseInt(network) === DAI_CODE if (isSokol) { conversionRate = 0 } else if (isDai) { diff --git a/old-ui/app/components/network.js b/old-ui/app/components/network.js index 3c30e6b2c..760014a0c 100644 --- a/old-ui/app/components/network.js +++ b/old-ui/app/components/network.js @@ -2,15 +2,7 @@ const Component = require('react').Component const h = require('react-hyperscript') const inherits = require('util').inherits const ethNetProps = require('eth-net-props') -const { - DROPDOWN_ROPSTEN_DISPLAY_NAME, - DROPDOWN_RINKEBY_DISPLAY_NAME, - DROPDOWN_KOVAN_DISPLAY_NAME, - DROPDOWN_POA_SOKOL_DISPLAY_NAME, - DROPDOWN_POA_DISPLAY_NAME, - DROPDOWN_DAI_DISPLAY_NAME, - DROPDOWN_MAINNET_DISPLAY_NAME, -} = require('../../../app/scripts/controllers/network/enums') +const { networks } = require('../../../app/scripts/controllers/network/util') module.exports = Network @@ -23,12 +15,6 @@ function Network () { Network.prototype.render = function () { const props = this.props const { provider, network: networkNumber } = props - let providerName - try { - providerName = provider.type - } catch (e) { - providerName = null - } let displayName, hoverText if (networkNumber === 'loading') { @@ -51,26 +37,8 @@ Network.prototype.render = function () { h('i.fa.fa-caret-down'), ]) } else { - if (providerName === 'mainnet' || parseInt(networkNumber) === 1) { - displayName = DROPDOWN_MAINNET_DISPLAY_NAME - hoverText = ethNetProps.props.getNetworkDisplayName(networkNumber) - } else if (providerName === 'ropsten' || parseInt(networkNumber) === 3) { - displayName = DROPDOWN_ROPSTEN_DISPLAY_NAME - hoverText = ethNetProps.props.getNetworkDisplayName(networkNumber) - } else if (providerName === 'sokol' || parseInt(networkNumber) === 77) { - displayName = DROPDOWN_POA_SOKOL_DISPLAY_NAME - hoverText = ethNetProps.props.getNetworkDisplayName(networkNumber) - } else if (providerName === 'kovan' || parseInt(networkNumber) === 42) { - displayName = DROPDOWN_KOVAN_DISPLAY_NAME - hoverText = ethNetProps.props.getNetworkDisplayName(networkNumber) - } else if (providerName === 'rinkeby' || parseInt(networkNumber) === 4) { - displayName = DROPDOWN_RINKEBY_DISPLAY_NAME - hoverText = ethNetProps.props.getNetworkDisplayName(networkNumber) - } else if (providerName === 'poa' || parseInt(networkNumber) === 99) { - displayName = DROPDOWN_POA_DISPLAY_NAME - hoverText = ethNetProps.props.getNetworkDisplayName(networkNumber) - } else if (providerName === 'dai' || parseInt(networkNumber) === 100) { - displayName = DROPDOWN_DAI_DISPLAY_NAME + if (networkNumber && networks[networkNumber]) { + displayName = networks[networkNumber].displayNameDropdown hoverText = ethNetProps.props.getNetworkDisplayName(networkNumber) } else { displayName = 'Private Network' diff --git a/old-ui/app/components/send/send-contract.js b/old-ui/app/components/send/send-contract.js index 1d93ff52c..f97c7309d 100644 --- a/old-ui/app/components/send/send-contract.js +++ b/old-ui/app/components/send/send-contract.js @@ -387,7 +387,6 @@ class SendTransactionScreen extends PersistentForm { } setOutputValue = (val, type) => { - console.log(val) if (!type) { return val || '' } diff --git a/old-ui/app/components/token-cell.js b/old-ui/app/components/token-cell.js index bc82f4d07..c311be35d 100644 --- a/old-ui/app/components/token-cell.js +++ b/old-ui/app/components/token-cell.js @@ -9,6 +9,7 @@ const ethUtil = require('ethereumjs-util') const copyToClipboard = require('copy-to-clipboard') const actions = require('../../../ui/app/actions') const connect = require('react-redux').connect +const { MAINNET_CODE } = require('../../../app/scripts/controllers/network/enums') import { countSignificantDecimals } from '../util' const tokenCellDropDownPrefix = 'token-cell_dropdown_' @@ -33,7 +34,7 @@ TokenCell.prototype.render = function () { return ( h(`li#token-cell_${ind}.token-cell`, { style: { - cursor: network === '1' ? 'pointer' : 'default', + cursor: Number(network) === MAINNET_CODE ? 'pointer' : 'default', borderBottom: isLastTokenCell ? 'none' : '1px solid #e2e2e2', padding: '20px 0', margin: '0 30px', diff --git a/old-ui/app/components/transaction-list-item.js b/old-ui/app/components/transaction-list-item.js index dd681e072..2ae3d03fa 100644 --- a/old-ui/app/components/transaction-list-item.js +++ b/old-ui/app/components/transaction-list-item.js @@ -15,6 +15,16 @@ const ethNetProps = require('eth-net-props') const TransactionIcon = require('./transaction-list-item-icon') const ShiftListItem = require('./shift-list-item') +const { POA_CODE, + DAI_CODE, + POA_SOKOL_CODE, + MAINNET_CODE, + ROPSTEN_CODE, + RINKEBY_CODE, + KOVAN_CODE, + RSK_CODE, + RSK_TESTNET_CODE } = require('../../../app/scripts/controllers/network/enums') + const mapDispatchToProps = dispatch => { return { retryTransaction: transactionId => dispatch(actions.retryTransaction(transactionId)), @@ -59,13 +69,21 @@ TransactionListItem.prototype.render = function () { const { transaction, network, conversionRate, currentCurrency } = this.props const { status } = transaction if (transaction.key === 'shapeshift') { - if (network === '1') return h(ShiftListItem, transaction) + if (Number(network) === MAINNET_CODE) return h(ShiftListItem, transaction) } var date = formatDate(transaction.time) let isLinkable = false const numericNet = parseInt(network) - isLinkable = numericNet === 1 || numericNet === 3 || numericNet === 4 || numericNet === 42 || numericNet === 77 || numericNet === 99 || numericNet === 100 + isLinkable = numericNet === MAINNET_CODE || + numericNet === ROPSTEN_CODE || + numericNet === RINKEBY_CODE || + numericNet === KOVAN_CODE || + numericNet === POA_SOKOL_CODE || + numericNet === POA_CODE || + numericNet === DAI_CODE || + numericNet === RSK_CODE || + numericNet === RSK_TESTNET_CODE var isMsg = ('msgParams' in transaction) var isTx = ('txParams' in transaction) diff --git a/old-ui/app/components/transaction-list.js b/old-ui/app/components/transaction-list.js index 8cd6e776d..762f5c0ac 100644 --- a/old-ui/app/components/transaction-list.js +++ b/old-ui/app/components/transaction-list.js @@ -3,6 +3,7 @@ const h = require('react-hyperscript') const inherits = require('util').inherits const TransactionListItem = require('./transaction-list-item') +const { MAINNET_CODE } = require('../../../app/scripts/controllers/network/enums') module.exports = TransactionList @@ -16,7 +17,7 @@ TransactionList.prototype.render = function () { const { transactions, network, unapprovedMsgs, conversionRate } = this.props var shapeShiftTxList - if (network === '1') { + if (Number(network) === MAINNET_CODE) { shapeShiftTxList = this.props.shapeShiftTxList } const txsToRender = !shapeShiftTxList ? transactions.concat(unapprovedMsgs) : transactions.concat(unapprovedMsgs, shapeShiftTxList) diff --git a/old-ui/app/conf-tx.js b/old-ui/app/conf-tx.js index da5321579..2ed13bfe6 100644 --- a/old-ui/app/conf-tx.js +++ b/old-ui/app/conf-tx.js @@ -13,6 +13,7 @@ import PendingMsg from './components/pending-msg' import PendingPersonalMsg from './components/pending-personal-msg' import PendingTypedMsg from './components/pending-typed-msg' const Loading = require('./components/loading') +const { DAI_CODE, POA_SOKOL_CODE } = require('../../app/scripts/controllers/network/enums') module.exports = connect(mapStateToProps)(ConfirmTxScreen) @@ -55,8 +56,8 @@ ConfirmTxScreen.prototype.render = function () { unapprovedMsgs, unapprovedPersonalMsgs, unapprovedTypedMessages, blockGasLimit } = props let { conversionRate } = props - const isSokol = parseInt(network) === 77 - const isDai = parseInt(network) === 100 + const isSokol = parseInt(network) === POA_SOKOL_CODE + const isDai = parseInt(network) === DAI_CODE if (isSokol) { conversionRate = 0 } else if (isDai) { diff --git a/old-ui/app/config.js b/old-ui/app/config.js index d6284067e..3b27a6c7e 100644 --- a/old-ui/app/config.js +++ b/old-ui/app/config.js @@ -12,6 +12,7 @@ const validUrl = require('valid-url') const exportAsFile = require('./util').exportAsFile const Modal = require('../../ui/app/components/modals/index').Modal const ethNetProps = require('eth-net-props') +const { networks } = require('../../app/scripts/controllers/network/util') module.exports = connect(mapStateToProps)(ConfigScreen) @@ -290,46 +291,12 @@ function currentProviderDisplay (metamaskState, state) { const provider = metamaskState.provider let title, value - switch (provider.type) { - - case 'mainnet': - title = 'Current Network' - value = ethNetProps.props.getNetworkDisplayName(1) - break - - case 'sokol': - title = 'Current Network' - value = ethNetProps.props.getNetworkDisplayName(77) - break - - case 'ropsten': - title = 'Current Network' - value = ethNetProps.props.getNetworkDisplayName(3) - break - - case 'kovan': - title = 'Current Network' - value = ethNetProps.props.getNetworkDisplayName(42) - break - - case 'rinkeby': - title = 'Current Network' - value = ethNetProps.props.getNetworkDisplayName(4) - break - - case 'poa': - title = 'Current Network' - value = ethNetProps.props.getNetworkDisplayName(99) - break - - case 'dai': - title = 'Current Network' - value = ethNetProps.props.getNetworkDisplayName(100) - break - - default: - title = 'Current RPC' - value = metamaskState.provider.rpcTarget + if (networks[provider.type]) { + title = 'Current Network' + value = ethNetProps.props.getNetworkDisplayName(networks[provider.type].networkID) + } else { + title = 'Current RPC' + value = metamaskState.provider.rpcTarget } return h('div', [ diff --git a/package-lock.json b/package-lock.json index 9dec75064..3ae704e25 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10540,6 +10540,7 @@ "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-1.4.2.tgz", "integrity": "sha1-jZWCAsftuq6Dlwf7pvCf8ydgYhA=", "requires": { + "ethereumjs-abi": "git+https://github.com/ethereumjs/ethereumjs-abi.git#2863c40e0982acfc0b7163f0285d4c56427c7799", "ethereumjs-util": "^5.1.1" } }, @@ -10713,9 +10714,9 @@ } }, "eth-net-props": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/eth-net-props/-/eth-net-props-1.0.10.tgz", - "integrity": "sha512-sCKttmHUFficRcyx95CWUW2AuvQ6rEboy4XcoR49HU7UNMxOdRti3rFyGrkVepRozn1bLLjet/doPKnj8rDG7g==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/eth-net-props/-/eth-net-props-1.0.11.tgz", + "integrity": "sha512-D5BJCoRAf0Q40X4tb0IN8goZTddYwtKqRBYklglS36iPd0qXu183NktYJ63e+1dLzeBG5vvkqN9LXW9CbLxhOQ==", "requires": { "chai": "^4.1.2" } @@ -14994,7 +14995,8 @@ "bindings": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz", - "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw==" + "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw==", + "dev": true }, "bip39": { "version": "2.5.0", @@ -15013,6 +15015,7 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz", "integrity": "sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI=", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -15047,7 +15050,8 @@ "bn.js": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true }, "body-parser": { "version": "1.18.3", @@ -15090,12 +15094,14 @@ "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true }, "browserify-aes": { "version": "1.2.0", "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, "requires": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -15252,7 +15258,8 @@ "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true }, "builtin-modules": { "version": "1.1.1", @@ -15350,6 +15357,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -15509,6 +15517,7 @@ "version": "1.2.0", "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, "requires": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -15521,6 +15530,7 @@ "version": "1.1.7", "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, "requires": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -15820,6 +15830,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", "integrity": "sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs=", + "dev": true, "requires": { "browserify-aes": "^1.0.6", "create-hash": "^1.1.2", @@ -15858,6 +15869,7 @@ "version": "6.4.1", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "dev": true, "requires": { "bn.js": "^4.4.0", "brorand": "^1.0.1", @@ -16169,14 +16181,6 @@ "integrity": "sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==", "dev": true }, - "ethereumjs-abi": { - "version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#2863c40e0982acfc0b7163f0285d4c56427c7799", - "from": "git+https://github.com/ethereumjs/ethereumjs-abi.git#2863c40e0982acfc0b7163f0285d4c56427c7799", - "requires": { - "bn.js": "^4.10.0", - "ethereumjs-util": "^5.0.0" - } - }, "ethereumjs-block": { "version": "1.7.1", "resolved": "http://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz", @@ -16366,6 +16370,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", + "dev": true, "requires": { "bn.js": "^4.11.0", "create-hash": "^1.1.2", @@ -16455,6 +16460,7 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "dev": true, "requires": { "is-hex-prefixed": "1.0.0", "strip-hex-prefix": "1.0.0" @@ -16476,6 +16482,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, "requires": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -16886,6 +16893,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -16895,6 +16903,7 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz", "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==", + "dev": true, "requires": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -16922,6 +16931,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, "requires": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -17089,7 +17099,8 @@ "is-hex-prefixed": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=" + "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=", + "dev": true }, "is-natural-number": { "version": "4.0.1", @@ -17290,6 +17301,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", + "dev": true, "requires": { "bindings": "^1.2.1", "inherits": "^2.0.3", @@ -17589,6 +17601,7 @@ "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -17748,12 +17761,14 @@ "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true }, "minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true }, "minimatch": { "version": "3.0.4", @@ -17823,7 +17838,8 @@ "nan": { "version": "2.10.0", "resolved": "http://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==" + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "dev": true }, "nano-json-stream-parser": { "version": "0.1.2", @@ -18490,6 +18506,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1" @@ -18499,6 +18516,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.1.0.tgz", "integrity": "sha512-93U7IKH5j7nmXFVg19MeNBGzQW5uXW1pmCuKY8veeKIhYTE32C2d0mOegfiIAfXcHOKJjjPlJisn8iHDF5AezA==", + "dev": true, "requires": { "safe-buffer": "^5.1.1" } @@ -18512,7 +18530,8 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safe-event-emitter": { "version": "1.0.1", @@ -18564,6 +18583,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.5.2.tgz", "integrity": "sha512-iin3kojdybY6NArd+UFsoTuapOF7bnJNf2UbcWXaY3z+E1sJDipl60vtzB5hbO/uquBu7z0fd4VC4Irp+xoFVQ==", + "dev": true, "requires": { "bindings": "^1.2.1", "bip66": "^1.1.3", @@ -18695,6 +18715,7 @@ "version": "2.4.11", "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -18905,6 +18926,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", + "dev": true, "requires": { "is-hex-prefixed": "1.0.0" } diff --git a/package.json b/package.json index c3b99331d..ae330e188 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "eth-keychain-controller": "github:vbaranov/KeyringController#simple-address", "eth-ledger-bridge-keyring": "^0.1.0", "eth-method-registry": "^1.0.0", - "eth-net-props": "^1.0.10", + "eth-net-props": "^1.0.11", "eth-phishing-detect": "^1.1.4", "eth-query": "^2.1.2", "eth-sig-util": "^2.0.2", diff --git a/test/e2e/elements.js b/test/e2e/elements.js index d28239882..2e5ce3889 100644 --- a/test/e2e/elements.js +++ b/test/e2e/elements.js @@ -382,6 +382,8 @@ module.exports = { ROPSTEN: 'ropsten', KOVAN: 'kovan', RINKEBY: 'rinkeby', + RSK: 'rsk', + RSK_TESTNET: 'rsk_testnet', LOCALHOST: 'localhost', CUSTOM: 'http://test.com', }, diff --git a/test/e2e/func.js b/test/e2e/func.js index 7c983cbf0..62344bb82 100644 --- a/test/e2e/func.js +++ b/test/e2e/func.js @@ -132,14 +132,20 @@ class Functions { case NETWORKS.RINKEBY: counter = 6 break - case NETWORKS.LOCALHOST: + case NETWORKS.RSK: counter = 7 break - case NETWORKS.CUSTOM: + case NETWORKS.RSK_TESTNET: counter = 8 break + case NETWORKS.LOCALHOST: + counter = 9 + break + case NETWORKS.CUSTOM: + counter = 10 + break default: - counter = 7 + counter = 9 } await this.driver.executeScript("document.getElementsByClassName('dropdown-menu-item')[" + counter + '].click();') } diff --git a/test/e2e/metamask.spec.js b/test/e2e/metamask.spec.js index 3f99c2a49..83fd24fed 100644 --- a/test/e2e/metamask.spec.js +++ b/test/e2e/metamask.spec.js @@ -2420,7 +2420,7 @@ describe('Metamask popup page', async function () { await f.clearField(fieldRpc) await fieldRpc.sendKeys(correctRpcUrl + 0) await driver.findElement(screens.settings.buttonSave).click() - await f.delay(10000) + await f.delay(20000) const customUrlElement = await f.waitUntilShowUp(screens.settings.currentNetwork) assert.equal(await customUrlElement.getText(), correctRpcUrl + 0, 'Added Url doesn\'t match') })