aboutsummaryrefslogtreecommitdiffstats
path: root/ui/app/app.js
diff options
context:
space:
mode:
Diffstat (limited to 'ui/app/app.js')
-rw-r--r--ui/app/app.js89
1 files changed, 74 insertions, 15 deletions
diff --git a/ui/app/app.js b/ui/app/app.js
index 7e7ca24ad..446c743a9 100644
--- a/ui/app/app.js
+++ b/ui/app/app.js
@@ -21,12 +21,14 @@ const SendTransactionScreen = require('./send')
const ConfirmTxScreen = require('./conf-tx')
// other views
const ConfigScreen = require('./config')
+const RevealSeedConfirmation = require('./recover-seed/confirmation')
const InfoScreen = require('./info')
const LoadingIndicator = require('./loading')
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)
@@ -46,14 +48,14 @@ function mapStateToProps(state) {
unconfTxs: state.metamask.unconfTxs,
unconfMsgs: state.metamask.unconfMsgs,
menuOpen: state.appState.menuOpen,
+ network: state.metamask.network,
}
}
App.prototype.render = function() {
- // const { selectedReddit, posts, isFetching, lastUpdated } = this.props
- var state = this.props
- var view = state.currentView.name
- var transForward = state.transForward
+ var props = this.props
+ var view = props.currentView.name
+ var transForward = props.transForward
return (
@@ -68,6 +70,7 @@ App.prototype.render = function() {
// app bar
this.renderAppBar(),
+ this.renderNetworkDropdown(),
this.renderDropdown(),
// panel content
@@ -91,7 +94,9 @@ App.prototype.render = function() {
}
App.prototype.renderAppBar = function(){
- var state = this.props
+ const props = this.props
+ const state = this.state || {}
+ const isNetworkMenuOpen = state.isNetworkMenuOpen || false
return (
@@ -100,30 +105,31 @@ App.prototype.renderAppBar = function(){
h('.app-header.flex-row.flex-space-between', {
style: {
alignItems: 'center',
- visibility: state.isUnlocked ? 'visible' : 'none',
- background: state.isUnlocked ? 'white' : 'none',
+ visibility: props.isUnlocked ? 'visible' : 'none',
+ background: props.isUnlocked ? 'white' : 'none',
height: '36px',
position: 'relative',
zIndex: 1,
},
- }, state.isUnlocked && [
+ }, props.isUnlocked && [
- // mini logo
- h('img', {
- height: 24,
- width: 24,
- src: '/images/icon-128.png',
+ h(NetworkIndicator, {
+ network: this.props.network,
+ onClick:(event) => {
+ event.preventDefault()
+ event.stopPropagation()
+ this.setState({ isNetworkMenuOpen: !isNetworkMenuOpen })
+ }
}),
// metamask name
h('h1', 'MetaMask'),
-
// hamburger
h(SandwichExpando, {
width: 16,
barHeight: 2,
padding: 0,
- isOpen: state.menuOpen,
+ isOpen: props.menuOpen,
color: 'rgb(247,146,30)',
onClick: (event) => {
event.preventDefault()
@@ -136,6 +142,56 @@ App.prototype.renderAppBar = function(){
)
}
+App.prototype.renderNetworkDropdown = function() {
+ const props = this.props
+ const state = this.state || {}
+ const isOpen = state.isNetworkMenuOpen
+
+ const checked = h('i.fa.fa-check.fa-lg', { ariaHidden: true })
+
+ return h(MenuDroppo, {
+ isOpen,
+ onClickOutside:(event) => {
+ this.setState({ isNetworkMenuOpen: !isOpen })
+ },
+ style: {
+ position: 'fixed',
+ left: 0,
+ zIndex: 0,
+ },
+ innerStyle: {
+ background: 'white',
+ boxShadow: '1px 1px 2px rgba(0,0,0,0.1)',
+ },
+ }, [ // DROP MENU ITEMS
+ h('style', `
+ .drop-menu-item:hover { background:rgb(235, 235, 235); }
+ .drop-menu-item i { margin: 11px; }
+ `),
+
+ h(DropMenuItem, {
+ label: 'Main Ethereum Network',
+ closeMenu:() => this.setState({ isNetworkMenuOpen: false }),
+ action:() => props.dispatch(actions.setProviderType('mainnet')),
+ icon: h('.menu-icon.ether-icon'),
+ }),
+
+ h(DropMenuItem, {
+ label: 'Morden Test Network',
+ closeMenu:() => this.setState({ isNetworkMenuOpen: false }),
+ action:() => props.dispatch(actions.setProviderType('testnet')),
+ icon: h('.menu-icon.morden-icon'),
+ }),
+
+ h(DropMenuItem, {
+ label: 'Localhost 8545',
+ closeMenu:() => this.setState({ isNetworkMenuOpen: false }),
+ action:() => props.dispatch(actions.setRpcTarget('http://localhost:8545')),
+ icon: h('i.fa.fa-question-circle.fa-lg', { ariaHidden: true }),
+ }),
+ ])
+}
+
App.prototype.renderDropdown = function() {
const props = this.props
return h(MenuDroppo, {
@@ -232,6 +288,9 @@ App.prototype.renderPrimary = function(){
case 'config':
return h(ConfigScreen, {key: 'config'})
+ case 'reveal-seed-conf':
+ return h(RevealSeedConfirmation, {key: 'reveal-seed-conf'})
+
case 'info':
return h(InfoScreen, {key: 'info'})