Add RSK testnet/mainnet to the list of networks
This commit is contained in:
parent
6c57580b6d
commit
47a7866509
|
@ -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,
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
}
|
||||
|
|
|
@ -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 []
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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 ''
|
||||
|
|
|
@ -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',
|
||||
},
|
||||
|
|
|
@ -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',
|
||||
]
|
||||
),
|
||||
|
|
|
@ -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 <CoinbaseForm { ...this.props } />
|
||||
} else if (this.props.buyView.formView.shapeshift) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -387,7 +387,6 @@ class SendTransactionScreen extends PersistentForm {
|
|||
}
|
||||
|
||||
setOutputValue = (val, type) => {
|
||||
console.log(val)
|
||||
if (!type) {
|
||||
return val || ''
|
||||
}
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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', [
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -382,6 +382,8 @@ module.exports = {
|
|||
ROPSTEN: 'ropsten',
|
||||
KOVAN: 'kovan',
|
||||
RINKEBY: 'rinkeby',
|
||||
RSK: 'rsk',
|
||||
RSK_TESTNET: 'rsk_testnet',
|
||||
LOCALHOST: 'localhost',
|
||||
CUSTOM: 'http://test.com',
|
||||
},
|
||||
|
|
|
@ -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();')
|
||||
}
|
||||
|
|
|
@ -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')
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue