aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkumavis <kumavis@users.noreply.github.com>2016-06-04 06:40:41 +0800
committerkumavis <kumavis@users.noreply.github.com>2016-06-04 06:40:41 +0800
commitb3520ee0ef9e36e8b62e10ae1547c18623234783 (patch)
treeb094a08b9ebe437f5b61d8d0749ff6fd995e908f
parent6dec937c2a3b72cd5863edef1ced818fe32e43f0 (diff)
parentb2b4b4dd25da0ac27fe2bcdb745ead9b193b6d9c (diff)
downloadtangerine-wallet-browser-b3520ee0ef9e36e8b62e10ae1547c18623234783.tar
tangerine-wallet-browser-b3520ee0ef9e36e8b62e10ae1547c18623234783.tar.gz
tangerine-wallet-browser-b3520ee0ef9e36e8b62e10ae1547c18623234783.tar.bz2
tangerine-wallet-browser-b3520ee0ef9e36e8b62e10ae1547c18623234783.tar.lz
tangerine-wallet-browser-b3520ee0ef9e36e8b62e10ae1547c18623234783.tar.xz
tangerine-wallet-browser-b3520ee0ef9e36e8b62e10ae1547c18623234783.tar.zst
tangerine-wallet-browser-b3520ee0ef9e36e8b62e10ae1547c18623234783.zip
Merge pull request #245 from MetaMask/display_network
Display network
-rw-r--r--.gitignore1
-rw-r--r--CHANGELOG.md1
-rw-r--r--app/images/ethereum-network.jpgbin0 -> 10807 bytes
-rw-r--r--app/images/morden-test-network.jpgbin0 -> 10517 bytes
-rw-r--r--app/images/no-connection.jpgbin0 -> 6946 bytes
-rw-r--r--app/images/unknown-private-network.jpgbin0 -> 3962 bytes
-rw-r--r--app/scripts/background.js13
-rw-r--r--app/scripts/lib/idStore.js16
-rw-r--r--package.json2
-rw-r--r--ui/app/actions.js8
-rw-r--r--ui/app/app.js10
-rw-r--r--ui/app/components/network.js44
12 files changed, 79 insertions, 16 deletions
diff --git a/.gitignore b/.gitignore
index 476b197db..2ad6b035f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,4 @@ package
.DS_Store
builds/
+notes.txt
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c011ea6af..784c49cf5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,7 @@
## Current Master
+- show network status in title bar
- Added seed word recovery to config screen.
## 2.2.0 2016-06-02
diff --git a/app/images/ethereum-network.jpg b/app/images/ethereum-network.jpg
new file mode 100644
index 000000000..61cb000ed
--- /dev/null
+++ b/app/images/ethereum-network.jpg
Binary files differ
diff --git a/app/images/morden-test-network.jpg b/app/images/morden-test-network.jpg
new file mode 100644
index 000000000..458708c78
--- /dev/null
+++ b/app/images/morden-test-network.jpg
Binary files differ
diff --git a/app/images/no-connection.jpg b/app/images/no-connection.jpg
new file mode 100644
index 000000000..a5d21242b
--- /dev/null
+++ b/app/images/no-connection.jpg
Binary files differ
diff --git a/app/images/unknown-private-network.jpg b/app/images/unknown-private-network.jpg
new file mode 100644
index 000000000..b8a5a9bbf
--- /dev/null
+++ b/app/images/unknown-private-network.jpg
Binary files differ
diff --git a/app/scripts/background.js b/app/scripts/background.js
index 432040c53..f64209ecc 100644
--- a/app/scripts/background.js
+++ b/app/scripts/background.js
@@ -76,13 +76,20 @@ var providerOpts = {
var provider = MetaMaskProvider(providerOpts)
var web3 = new Web3(provider)
idStore.web3 = web3
-idStore.getNetwork(3)
+idStore.getNetwork()
// log new blocks
provider.on('block', function(block){
console.log('BLOCK CHANGED:', '#'+block.number.toString('hex'), '0x'+block.hash.toString('hex'))
+
+ // Check network when restoring connectivity:
+ if (idStore._currentState.network === 'loading') {
+ idStore.getNetwork()
+ }
})
+provider.on('error', idStore.getNetwork.bind(idStore))
+
var ethStore = new EthStore(provider)
idStore.setStore(ethStore)
@@ -292,13 +299,13 @@ function addUnconfirmedMsg(msgParams, cb){
function setRpcTarget(rpcTarget){
configManager.setRpcTarget(rpcTarget)
chrome.runtime.reload()
- idStore.getNetwork(3) // 3 retry attempts
+ idStore.getNetwork()
}
function setProviderType(type) {
configManager.setProviderType(type)
chrome.runtime.reload()
- idStore.getNetwork(3)
+ idStore.getNetwork()
}
function useEtherscanProvider() {
diff --git a/app/scripts/lib/idStore.js b/app/scripts/lib/idStore.js
index e9fc10cea..33d842d54 100644
--- a/app/scripts/lib/idStore.js
+++ b/app/scripts/lib/idStore.js
@@ -137,16 +137,22 @@ IdentityStore.prototype.revealAccount = function(cb) {
cb(null)
}
-IdentityStore.prototype.getNetwork = function(tries) {
- if (tries === 0) {
- this._currentState.network = 'error'
- return
+IdentityStore.prototype.getNetwork = function(err) {
+
+ if (err) {
+ this._currentState.network = 'loading'
+ this._didUpdate()
}
+
this.web3.version.getNetwork((err, network) => {
if (err) {
- return this.getNetwork(tries - 1, cb)
+ this._currentState.network = 'loading'
+ return this._didUpdate()
}
+
+ console.log('web3.getNetwork returned ' + network)
this._currentState.network = network
+ this._didUpdate()
})
}
diff --git a/package.json b/package.json
index f1307a1fd..af032a79a 100644
--- a/package.json
+++ b/package.json
@@ -62,7 +62,7 @@
"through2": "^2.0.1",
"vreme": "^3.0.2",
"web3": "ethereum/web3.js#0.16.0",
- "web3-provider-engine": "^7.7.2",
+ "web3-provider-engine": "^7.8.1",
"web3-stream-provider": "^2.0.1",
"xtend": "^4.0.1"
},
diff --git a/ui/app/actions.js b/ui/app/actions.js
index 684d33f3d..dd38c5f0a 100644
--- a/ui/app/actions.js
+++ b/ui/app/actions.js
@@ -6,6 +6,8 @@ var actions = {
toggleMenu: toggleMenu,
SET_MENU_STATE: 'SET_MENU_STATE',
closeMenu: closeMenu,
+ getNetworkStatus: 'getNetworkStatus',
+
// remote state
UPDATE_METAMASK_STATE: 'UPDATE_METAMASK_STATE',
updateMetamaskState: updateMetamaskState,
@@ -135,6 +137,12 @@ function closeMenu() {
}
}
+function getNetworkStatus(){
+ return {
+ type: actions.getNetworkStatus,
+ }
+}
+
// async actions
function tryUnlockMetamask(password) {
diff --git a/ui/app/app.js b/ui/app/app.js
index 094cae76c..7d5d2108a 100644
--- a/ui/app/app.js
+++ b/ui/app/app.js
@@ -28,6 +28,7 @@ const txHelper = require('../lib/tx-helper')
const SandwichExpando = require('sandwich-expando')
const MenuDroppo = require('menu-droppo')
const DropMenuItem = require('./components/drop-menu-item')
+const NetworkIndicator = require('./components/network')
module.exports = connect(mapStateToProps)(App)
@@ -47,6 +48,7 @@ function mapStateToProps(state) {
unconfTxs: state.metamask.unconfTxs,
unconfMsgs: state.metamask.unconfMsgs,
menuOpen: state.appState.menuOpen,
+ network: state.metamask.network,
}
}
@@ -109,16 +111,10 @@ App.prototype.renderAppBar = function(){
},
}, state.isUnlocked && [
- // mini logo
- h('img', {
- height: 24,
- width: 24,
- src: '/images/icon-128.png',
- }),
+ h(NetworkIndicator, {network: this.props.network}),
// metamask name
h('h1', 'MetaMask'),
-
// hamburger
h(SandwichExpando, {
width: 16,
diff --git a/ui/app/components/network.js b/ui/app/components/network.js
new file mode 100644
index 000000000..37046fd30
--- /dev/null
+++ b/ui/app/components/network.js
@@ -0,0 +1,44 @@
+const Component = require('react').Component
+const h = require('react-hyperscript')
+const inherits = require('util').inherits
+
+module.exports = Network
+
+inherits(Network, Component)
+
+function Network() {
+ Component.call(this)
+}
+
+Network.prototype.render = function() {
+ const state = this.props
+ const networkNumber = state.network
+ let iconName, hoverText
+ const imagePath = "/images/"
+
+ if (networkNumber == 'loading') {
+ return h('img', {
+ title: 'Attempting to connect to blockchain.',
+ style: {
+ width: '27px',
+ marginRight: '-16px'
+ },
+ src: 'images/loading.svg',
+ })
+ } else if (networkNumber == 1) {
+ hoverText = 'Main Ethereum Network'
+ iconName = 'ethereum-network'
+ }else if (networkNumber == 2) {
+ hoverText = "Morden Test Network"
+ iconName = 'morden-test-network'
+ }else {
+ hoverText = "Unknown Private Network"
+ iconName = 'unknown-private-network'
+ }
+ return (
+ h('#network_component.flex-center', {
+ style: { marginRight: '-16px' },
+ title: hoverText,
+ },[ h('img',{src: imagePath + iconName + ".jpg", width: '25px'}) ])
+ )
+}