mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-22 17:33:23 +01:00
Merge branch 'eyeballs' of github.com:MetaMask/metamask-plugin into eyeballs
This commit is contained in:
commit
5a17a6376c
@ -37,6 +37,7 @@
|
|||||||
"identicon.js": "^1.2.1",
|
"identicon.js": "^1.2.1",
|
||||||
"inject-css": "^0.1.1",
|
"inject-css": "^0.1.1",
|
||||||
"jazzicon": "^1.1.3",
|
"jazzicon": "^1.1.3",
|
||||||
|
"menu-droppo": "^1.1.0",
|
||||||
"metamask-logo": "^1.1.5",
|
"metamask-logo": "^1.1.5",
|
||||||
"multiplex": "^6.7.0",
|
"multiplex": "^6.7.0",
|
||||||
"once": "^1.3.3",
|
"once": "^1.3.3",
|
||||||
@ -52,6 +53,7 @@
|
|||||||
"redux": "^3.0.5",
|
"redux": "^3.0.5",
|
||||||
"redux-logger": "^2.3.1",
|
"redux-logger": "^2.3.1",
|
||||||
"redux-thunk": "^1.0.2",
|
"redux-thunk": "^1.0.2",
|
||||||
|
"sandwich-expando": "^1.0.5",
|
||||||
"textarea-caret": "^3.0.1",
|
"textarea-caret": "^3.0.1",
|
||||||
"three.js": "^0.73.2",
|
"three.js": "^0.73.2",
|
||||||
"through2": "^2.0.1",
|
"through2": "^2.0.1",
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
var actions = {
|
var actions = {
|
||||||
GO_HOME: 'GO_HOME',
|
GO_HOME: 'GO_HOME',
|
||||||
goHome: goHome,
|
goHome: goHome,
|
||||||
|
// menu state
|
||||||
|
TOGGLE_MENU: 'TOGGLE_MENU',
|
||||||
|
toggleMenu: toggleMenu,
|
||||||
|
SET_MENU_STATE: 'SET_MENU_STATE',
|
||||||
|
closeMenu: closeMenu,
|
||||||
// remote state
|
// remote state
|
||||||
UPDATE_METAMASK_STATE: 'UPDATE_METAMASK_STATE',
|
UPDATE_METAMASK_STATE: 'UPDATE_METAMASK_STATE',
|
||||||
updateMetamaskState: updateMetamaskState,
|
updateMetamaskState: updateMetamaskState,
|
||||||
@ -105,6 +110,21 @@ function goHome() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// menu state
|
||||||
|
|
||||||
|
function toggleMenu() {
|
||||||
|
return {
|
||||||
|
type: this.TOGGLE_MENU,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function closeMenu() {
|
||||||
|
return {
|
||||||
|
type: this.SET_MENU_STATE,
|
||||||
|
value: false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// async actions
|
// async actions
|
||||||
|
|
||||||
function tryUnlockMetamask(password) {
|
function tryUnlockMetamask(password) {
|
||||||
|
118
ui/app/app.js
118
ui/app/app.js
@ -24,6 +24,9 @@ const ConfigScreen = require('./config')
|
|||||||
const InfoScreen = require('./info')
|
const InfoScreen = require('./info')
|
||||||
const LoadingIndicator = require('./loading')
|
const LoadingIndicator = require('./loading')
|
||||||
const txHelper = require('../lib/tx-helper')
|
const txHelper = require('../lib/tx-helper')
|
||||||
|
const SandwichExpando = require('sandwich-expando')
|
||||||
|
const MenuDroppo = require('menu-droppo')
|
||||||
|
const DropMenuItem = require('./components/drop-menu-item')
|
||||||
|
|
||||||
module.exports = connect(mapStateToProps)(App)
|
module.exports = connect(mapStateToProps)(App)
|
||||||
|
|
||||||
@ -42,6 +45,7 @@ function mapStateToProps(state) {
|
|||||||
seedWords: state.metamask.seedWords,
|
seedWords: state.metamask.seedWords,
|
||||||
unconfTxs: state.metamask.unconfTxs,
|
unconfTxs: state.metamask.unconfTxs,
|
||||||
unconfMsgs: state.metamask.unconfMsgs,
|
unconfMsgs: state.metamask.unconfMsgs,
|
||||||
|
menuOpen: state.appState.menuOpen,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,6 +68,7 @@ App.prototype.render = function() {
|
|||||||
|
|
||||||
// app bar
|
// app bar
|
||||||
this.renderAppBar(),
|
this.renderAppBar(),
|
||||||
|
this.renderDropdown(),
|
||||||
|
|
||||||
// panel content
|
// panel content
|
||||||
h('.app-primary.flex-grow' + (transForward ? '.from-right' : '.from-left'), {
|
h('.app-primary.flex-grow' + (transForward ? '.from-right' : '.from-left'), {
|
||||||
@ -127,47 +132,104 @@ App.prototype.renderAppBar = function(){
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
||||||
h('.app-header.flex-row.flex-space-between', {
|
h('div', [
|
||||||
style: {
|
|
||||||
alignItems: 'center',
|
|
||||||
visibility: state.isUnlocked ? 'visibile' : 'none',
|
|
||||||
background: state.isUnlocked ? 'white' : 'none',
|
|
||||||
height: '36px',
|
|
||||||
},
|
|
||||||
}, state.isUnlocked && [
|
|
||||||
|
|
||||||
// mini logo
|
h('.app-header.flex-row.flex-space-between', {
|
||||||
h('img', {
|
style: {
|
||||||
height: 24,
|
alignItems: 'center',
|
||||||
width: 24,
|
visibility: state.isUnlocked ? 'visible' : 'none',
|
||||||
src: '/images/icon-128.png',
|
background: state.isUnlocked ? 'white' : 'none',
|
||||||
}),
|
height: '36px',
|
||||||
|
position: 'relative',
|
||||||
|
zIndex: 1,
|
||||||
|
},
|
||||||
|
}, state.isUnlocked && [
|
||||||
|
|
||||||
// metamask name
|
// mini logo
|
||||||
h('h1', 'MetaMask'),
|
h('img', {
|
||||||
|
height: 24,
|
||||||
|
width: 24,
|
||||||
|
src: '/images/icon-128.png',
|
||||||
|
}),
|
||||||
|
|
||||||
// hamburger
|
// metamask name
|
||||||
h('i.fa.fa-bars.cursor-pointer.color-orange', {
|
h('h1', 'MetaMask'),
|
||||||
onClick: (event) => state.dispatch(actions.showConfigPage()),
|
|
||||||
}),
|
|
||||||
|
|
||||||
|
// hamburger
|
||||||
|
h(SandwichExpando, {
|
||||||
|
width: 16,
|
||||||
|
barHeight: 2,
|
||||||
|
padding: 0,
|
||||||
|
isOpen: state.menuOpen,
|
||||||
|
color: 'rgb(247,146,30)',
|
||||||
|
onClick: (event) => {
|
||||||
|
event.preventDefault()
|
||||||
|
event.stopPropagation()
|
||||||
|
this.props.dispatch(actions.toggleMenu())
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
]),
|
||||||
])
|
])
|
||||||
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
App.prototype.renderPrimary = function(state){
|
App.prototype.renderDropdown = function() {
|
||||||
var state = this.props
|
const props = this.props
|
||||||
|
return h(MenuDroppo, {
|
||||||
|
isOpen: props.menuOpen,
|
||||||
|
onClickOutside: (event) => {
|
||||||
|
this.props.dispatch(actions.closeMenu())
|
||||||
|
},
|
||||||
|
style: {
|
||||||
|
position: 'fixed',
|
||||||
|
right: 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; }
|
||||||
|
`),
|
||||||
|
|
||||||
if (state.seedWords) {
|
h(DropMenuItem, {
|
||||||
|
label: 'Settings',
|
||||||
|
closeMenu:() => this.props.dispatch(actions.closeMenu()),
|
||||||
|
action:() => this.props.dispatch(actions.showConfigPage()),
|
||||||
|
icon: h('i.fa.fa-gear.fa-lg', { ariaHidden: true }),
|
||||||
|
}),
|
||||||
|
|
||||||
|
h(DropMenuItem, {
|
||||||
|
label: 'Lock Account',
|
||||||
|
closeMenu:() => this.props.dispatch(actions.closeMenu()),
|
||||||
|
action:() => this.props.dispatch(actions.lockMetamask()),
|
||||||
|
icon: h('i.fa.fa-lock.fa-lg', { ariaHidden: true }),
|
||||||
|
}),
|
||||||
|
|
||||||
|
h(DropMenuItem, {
|
||||||
|
label: 'Help',
|
||||||
|
closeMenu:() => this.props.dispatch(actions.closeMenu()),
|
||||||
|
action:() => this.props.dispatch(actions.showInfoPage()),
|
||||||
|
icon: h('i.fa.fa-question.fa-lg', { ariaHidden: true }),
|
||||||
|
}),
|
||||||
|
])
|
||||||
|
}
|
||||||
|
|
||||||
|
App.prototype.renderPrimary = function(){
|
||||||
|
var props = this.props
|
||||||
|
|
||||||
|
if (props.seedWords) {
|
||||||
return h(CreateVaultCompleteScreen, {key: 'createVaultComplete'})
|
return h(CreateVaultCompleteScreen, {key: 'createVaultComplete'})
|
||||||
}
|
}
|
||||||
|
|
||||||
// show initialize screen
|
// show initialize screen
|
||||||
if (!state.isInitialized) {
|
if (!props.isInitialized) {
|
||||||
|
|
||||||
// show current view
|
// show current view
|
||||||
switch (state.currentView.name) {
|
switch (props.currentView.name) {
|
||||||
|
|
||||||
case 'createVault':
|
case 'createVault':
|
||||||
return h(CreateVaultScreen, {key: 'createVault'})
|
return h(CreateVaultScreen, {key: 'createVault'})
|
||||||
@ -185,12 +247,12 @@ App.prototype.renderPrimary = function(state){
|
|||||||
}
|
}
|
||||||
|
|
||||||
// show unlock screen
|
// show unlock screen
|
||||||
if (!state.isUnlocked) {
|
if (!props.isUnlocked) {
|
||||||
return h(UnlockScreen, {key: 'locked'})
|
return h(UnlockScreen, {key: 'locked'})
|
||||||
}
|
}
|
||||||
|
|
||||||
// show current view
|
// show current view
|
||||||
switch (state.currentView.name) {
|
switch (props.currentView.name) {
|
||||||
|
|
||||||
case 'accounts':
|
case 'accounts':
|
||||||
return h(AccountsScreen, {key: 'accounts'})
|
return h(AccountsScreen, {key: 'accounts'})
|
||||||
|
31
ui/app/components/drop-menu-item.js
Normal file
31
ui/app/components/drop-menu-item.js
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
const Component = require('react').Component
|
||||||
|
const h = require('react-hyperscript')
|
||||||
|
const inherits = require('util').inherits
|
||||||
|
|
||||||
|
module.exports = DropMenuItem
|
||||||
|
|
||||||
|
|
||||||
|
inherits(DropMenuItem, Component)
|
||||||
|
function DropMenuItem() {
|
||||||
|
Component.call(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
DropMenuItem.prototype.render = function() {
|
||||||
|
|
||||||
|
return h('li.drop-menu-item', {
|
||||||
|
onClick:() => {
|
||||||
|
this.props.closeMenu()
|
||||||
|
this.props.action()
|
||||||
|
},
|
||||||
|
style: {
|
||||||
|
listStyle: 'none',
|
||||||
|
padding: '6px 16px 6px 5px',
|
||||||
|
fontFamily: 'Transat Medium',
|
||||||
|
color: 'rgb(125, 128, 130)',
|
||||||
|
cursor: 'pointer',
|
||||||
|
},
|
||||||
|
}, [
|
||||||
|
this.props.icon,
|
||||||
|
this.props.label,
|
||||||
|
])
|
||||||
|
}
|
@ -22,6 +22,7 @@ function reduceApp(state, action) {
|
|||||||
var seedWords = state.metamask.seedWords
|
var seedWords = state.metamask.seedWords
|
||||||
|
|
||||||
var appState = extend({
|
var appState = extend({
|
||||||
|
menuOpen: false,
|
||||||
currentView: seedWords ? seedConfView : defaultView,
|
currentView: seedWords ? seedConfView : defaultView,
|
||||||
accountDetail: {
|
accountDetail: {
|
||||||
subview: 'transactions',
|
subview: 'transactions',
|
||||||
@ -34,6 +35,16 @@ function reduceApp(state, action) {
|
|||||||
|
|
||||||
switch (action.type) {
|
switch (action.type) {
|
||||||
|
|
||||||
|
case actions.TOGGLE_MENU:
|
||||||
|
return extend(appState, {
|
||||||
|
menuOpen: !appState.menuOpen,
|
||||||
|
})
|
||||||
|
|
||||||
|
case actions.SET_MENU_STATE:
|
||||||
|
return extend(appState, {
|
||||||
|
menuOpen: action.value,
|
||||||
|
})
|
||||||
|
|
||||||
// intialize
|
// intialize
|
||||||
|
|
||||||
case actions.SHOW_CREATE_VAULT:
|
case actions.SHOW_CREATE_VAULT:
|
||||||
|
Loading…
Reference in New Issue
Block a user