From e8a83026248e6e27e6d801cf1713551eb740137a Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Mon, 21 Nov 2016 10:58:49 -0800 Subject: [PATCH] Begin adding Ropsten support Ropsten links will still not work until Etherscan publishes their ropsten link format. At that time we will need to update ui/lib/account-link.js Otherwise, fixes #831 --- CHANGELOG.md | 1 + app/scripts/config.js | 4 +++- app/scripts/lib/config-manager.js | 4 ++++ ui/app/app.js | 11 ++++++++++- ui/app/components/drop-menu-item.js | 5 ++++- ui/app/components/network.js | 16 ++++++++++++++++ ui/app/css/lib.css | 2 +- ui/lib/account-link.js | 3 +++ 8 files changed, 42 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 177545214..c312f35bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Current Master +- Add support for the new, default Ropsten Test Network. - Fix bug that would cause MetaMask to occasionally lose its StreamProvider connection and drop requests. ## 2.13.8 2016-11-16 diff --git a/app/scripts/config.js b/app/scripts/config.js index e40b5e104..9a0f2a50b 100644 --- a/app/scripts/config.js +++ b/app/scripts/config.js @@ -1,5 +1,6 @@ const MAINET_RPC_URL = 'https://mainnet.infura.io/metamask' -const TESTNET_RPC_URL = 'https://morden.infura.io/metamask' +const TESTNET_RPC_URL = 'https://ropsten.infura.io/metamask' +const MORDEN_RPC_URL = 'https://morden.infura.io/metamask' const DEFAULT_RPC_URL = TESTNET_RPC_URL global.METAMASK_DEBUG = 'GULP_METAMASK_DEBUG' @@ -10,5 +11,6 @@ module.exports = { default: DEFAULT_RPC_URL, mainnet: MAINET_RPC_URL, testnet: TESTNET_RPC_URL, + morden: MORDEN_RPC_URL, }, } diff --git a/app/scripts/lib/config-manager.js b/app/scripts/lib/config-manager.js index cced32670..b8ffb6991 100644 --- a/app/scripts/lib/config-manager.js +++ b/app/scripts/lib/config-manager.js @@ -5,6 +5,7 @@ const rp = require('request-promise') const TESTNET_RPC = MetamaskConfig.network.testnet const MAINNET_RPC = MetamaskConfig.network.mainnet +const MORDEN_RPC = MetamaskConfig.network.morden const txLimit = 40 /* The config-manager is a convenience object @@ -148,6 +149,9 @@ ConfigManager.prototype.getCurrentRpcAddress = function () { case 'testnet': return TESTNET_RPC + case 'morden': + return MORDEN_RPC + default: return provider && provider.rpcTarget ? provider.rpcTarget : TESTNET_RPC } diff --git a/ui/app/app.js b/ui/app/app.js index ae6fe7071..3a3b234cc 100644 --- a/ui/app/app.js +++ b/ui/app/app.js @@ -235,7 +235,7 @@ App.prototype.renderNetworkDropdown = function () { }), h(DropMenuItem, { - label: 'Morden Test Network', + label: 'Ropsten Test Network', closeMenu: () => this.setState({ isNetworkMenuOpen: false }), action: () => props.dispatch(actions.setProviderType('testnet')), icon: h('.menu-icon.red-dot'), @@ -243,6 +243,15 @@ App.prototype.renderNetworkDropdown = function () { provider: props.provider, }), + h(DropMenuItem, { + label: 'Morden Test Network', + closeMenu: () => this.setState({ isNetworkMenuOpen: false }), + action: () => props.dispatch(actions.setProviderType('morden')), + icon: h('.menu-icon.red-dot'), + activeNetworkRender: props.network, + provider: props.provider, + }), + h(DropMenuItem, { label: 'Localhost 8545', closeMenu: () => this.setState({ isNetworkMenuOpen: false }), diff --git a/ui/app/components/drop-menu-item.js b/ui/app/components/drop-menu-item.js index 8088680c0..b82114f03 100644 --- a/ui/app/components/drop-menu-item.js +++ b/ui/app/components/drop-menu-item.js @@ -41,9 +41,12 @@ DropMenuItem.prototype.activeNetworkRender = function () { case 'Main Ethereum Network': if (providerType === 'mainnet') return h('.check', '✓') break - case 'Morden Test Network': + case 'Ropsten Test Network': if (provider.type === 'testnet') return h('.check', '✓') break + case 'Morden Test Network': + if (provider.type === 'morden') return h('.check', '✓') + break case 'Localhost 8545': if (activeNetwork === 'http://localhost:8545') return h('.check', '✓') break diff --git a/ui/app/components/network.js b/ui/app/components/network.js index 845861396..b7d3cdbf5 100644 --- a/ui/app/components/network.js +++ b/ui/app/components/network.js @@ -36,6 +36,12 @@ Network.prototype.render = function () { } else if (providerName === 'mainnet') { hoverText = 'Main Ethereum Network' iconName = 'ethereum-network' + } else if (providerName === 'testnet') { + hoverText = 'Ropsten Test Network' + iconName = 'ropsten-test-network' + } else if (parseInt(networkNumber) === 3) { + hoverText = 'Ropsten Test Network' + iconName = 'ropsten-test-network' } else if (parseInt(networkNumber) === 2) { hoverText = 'Morden Test Network' iconName = 'morden-test-network' @@ -43,6 +49,7 @@ Network.prototype.render = function () { hoverText = 'Unknown Private Network' iconName = 'unknown-private-network' } + return ( h('#network_component.flex-center.pointer', { style: { @@ -63,6 +70,15 @@ Network.prototype.render = function () { }}, 'Ethereum Main Net'), ]) + case 'ropsten-test-network': + return h('.network-indicator', [ + h('.menu-icon.red-dot'), + h('.network-name', { + style: { + color: '#ff6666', + }}, + 'Ropsten Test Net'), + ]) case 'morden-test-network': return h('.network-indicator', [ h('.menu-icon.red-dot'), diff --git a/ui/app/css/lib.css b/ui/app/css/lib.css index bcd6a4a67..f5f602729 100644 --- a/ui/app/css/lib.css +++ b/ui/app/css/lib.css @@ -213,7 +213,7 @@ hr.horizontal-line { background: rgb(0, 163, 68); border-radius: 20px; } -.morden-icon { +.testnet-icon { background: #2465E1; } diff --git a/ui/lib/account-link.js b/ui/lib/account-link.js index eb958e22d..a6b120c63 100644 --- a/ui/lib/account-link.js +++ b/ui/lib/account-link.js @@ -9,6 +9,9 @@ module.exports = function(address, network) { case 2: // morden test net link = `http://testnet.etherscan.io/address/${address}` break + case 3: // ropsten test net + link = '' + break default: link = '' break