diff options
author | Kevin Serrano <kevgagser@gmail.com> | 2016-10-29 07:19:14 +0800 |
---|---|---|
committer | Kevin Serrano <kevgagser@gmail.com> | 2016-10-29 07:19:14 +0800 |
commit | 9b4f3825e78659148ea2c651c2622b3fb01c41b5 (patch) | |
tree | 44d5a0838a6670db7b32ef893c7e1b3fce5dab47 /ui | |
parent | 6eb6968037aeacd9c876912634ca5f4b5287957b (diff) | |
parent | 331d9c91ee42f766fe56e2ebef1d1ad283d6c438 (diff) | |
download | tangerine-wallet-browser-9b4f3825e78659148ea2c651c2622b3fb01c41b5.tar tangerine-wallet-browser-9b4f3825e78659148ea2c651c2622b3fb01c41b5.tar.gz tangerine-wallet-browser-9b4f3825e78659148ea2c651c2622b3fb01c41b5.tar.bz2 tangerine-wallet-browser-9b4f3825e78659148ea2c651c2622b3fb01c41b5.tar.lz tangerine-wallet-browser-9b4f3825e78659148ea2c651c2622b3fb01c41b5.tar.xz tangerine-wallet-browser-9b4f3825e78659148ea2c651c2622b3fb01c41b5.tar.zst tangerine-wallet-browser-9b4f3825e78659148ea2c651c2622b3fb01c41b5.zip |
Merge branch 'i328-MultiVault' of github.com:MetaMask/metamask-plugin into i328-MultiVault
Diffstat (limited to 'ui')
-rw-r--r-- | ui/app/accounts/index.js | 6 | ||||
-rw-r--r-- | ui/app/actions.js | 17 | ||||
-rw-r--r-- | ui/app/components/identicon.js | 13 | ||||
-rw-r--r-- | ui/app/first-time/init-menu.js | 106 | ||||
-rw-r--r-- | ui/app/unlock.js | 3 |
5 files changed, 124 insertions, 21 deletions
diff --git a/ui/app/accounts/index.js b/ui/app/accounts/index.js index 92054f24d..c742d9fac 100644 --- a/ui/app/accounts/index.js +++ b/ui/app/accounts/index.js @@ -87,7 +87,7 @@ AccountsScreen.prototype.render = function () { h('div.footer.hover-white.pointer', { key: 'reveal-account-bar', onClick: () => { - this.addNewKeyring() + this.addNewAccount() }, style: { display: 'flex', @@ -146,8 +146,8 @@ AccountsScreen.prototype.onShowDetail = function (address, event) { this.props.dispatch(actions.showAccountDetail(address)) } -AccountsScreen.prototype.addNewKeyring = function () { - this.props.dispatch(actions.addNewKeyring('Simple Key Pair')) +AccountsScreen.prototype.addNewAccount = function () { + this.props.dispatch(actions.addNewAccount(0)) } AccountsScreen.prototype.goHome = function () { diff --git a/ui/app/actions.js b/ui/app/actions.js index 1f8ba7f04..3ae3a623d 100644 --- a/ui/app/actions.js +++ b/ui/app/actions.js @@ -25,7 +25,8 @@ var actions = { showInitializeMenu: showInitializeMenu, createNewVault: createNewVault, createNewVaultInProgress: createNewVaultInProgress, - addNewKeyring: addNewKeyring, + addNewKeyring, + addNewAccount, showNewVaultSeed: showNewVaultSeed, showInfoPage: showInfoPage, // unlock screen @@ -178,6 +179,7 @@ function createNewVault (password, entropy) { if (err) { return dispatch(actions.showWarning(err.message)) } + dispatch(this.updateMetamaskState(newState)) dispatch(this.showAccountsPage()) dispatch(this.hideLoadingIndication()) @@ -199,6 +201,19 @@ function addNewKeyring (type, opts) { } } +function addNewAccount (ringNumber = 0) { + return (dispatch) => { + dispatch(actions.showLoadingIndication()) + background.addNewAccount(ringNumber, (err, newState) => { + dispatch(this.hideLoadingIndication()) + if (err) { + return dispatch(actions.showWarning(err)) + } + dispatch(this.updateMetamaskState(newState)) + }) + } +} + function showInfoPage () { return { type: actions.SHOW_INFO_PAGE, diff --git a/ui/app/components/identicon.js b/ui/app/components/identicon.js index 4b2bf899e..30ef6fbd3 100644 --- a/ui/app/components/identicon.js +++ b/ui/app/components/identicon.js @@ -16,8 +16,8 @@ function IdenticonComponent () { } IdenticonComponent.prototype.render = function () { - var state = this.props - var diameter = state.diameter || this.defaultDiameter + var props = this.props + var diameter = props.diameter || this.defaultDiameter return ( h('div', { key: 'identicon-' + this.props.address, @@ -33,15 +33,14 @@ IdenticonComponent.prototype.render = function () { } IdenticonComponent.prototype.componentDidMount = function () { - var state = this.props - var address = state.address + var props = this.props + var address = props.address if (!address) return var container = findDOMNode(this) - var diameter = state.diameter || this.defaultDiameter - var imageify = state.imageify === undefined ? true : state.imageify - var img = iconFactory.iconForAddress(address, diameter, imageify) + var diameter = props.diameter || this.defaultDiameter + var img = iconFactory.iconForAddress(address, diameter, false) container.appendChild(img) } diff --git a/ui/app/first-time/init-menu.js b/ui/app/first-time/init-menu.js index 4fdade469..9788db382 100644 --- a/ui/app/first-time/init-menu.js +++ b/ui/app/first-time/init-menu.js @@ -5,6 +5,8 @@ const connect = require('react-redux').connect const h = require('react-hyperscript') const Mascot = require('../components/mascot') const actions = require('../actions') +const Tooltip = require('../components/tooltip') +const getCaretCoordinates = require('textarea-caret') module.exports = connect(mapStateToProps)(InitializeMenuScreen) @@ -54,18 +56,73 @@ InitializeMenuScreen.prototype.renderMenu = function () { }, }, 'MetaMask'), + + h('div', [ + h('h3', { + style: { + fontSize: '0.8em', + color: '#7F8082', + display: 'inline', + }, + }, 'Encrypt your new DEN'), + + h(Tooltip, { + title: 'Your DEN is your password-encrypted storage within MetaMask.', + }, [ + h('i.fa.fa-question-circle.pointer', { + style: { + fontSize: '18px', + position: 'relative', + color: 'rgb(247, 134, 28)', + top: '2px', + marginLeft: '4px', + }, + }), + ]), + ]), + + // password + h('input.large-input.letter-spacey', { + type: 'password', + id: 'password-box', + placeholder: 'New Password (min 8 chars)', + onInput: this.inputChanged.bind(this), + style: { + width: 260, + marginTop: 12, + }, + }), + + // confirm password + h('input.large-input.letter-spacey', { + type: 'password', + id: 'password-box-confirm', + placeholder: 'Confirm Password', + onKeyPress: this.createVaultOnEnter.bind(this), + onInput: this.inputChanged.bind(this), + style: { + width: 260, + marginTop: 16, + }, + }), + + h('button.primary', { - onClick: this.showCreateVault.bind(this), + onClick: this.createNewVault.bind(this), style: { margin: 12, }, - }, 'Create New Vault'), + }, 'Create'), /* h('.flex-row.flex-center.flex-grow', [ - h('hr'), - h('div', 'Advanced (Eventually?)'), - h('hr'), + h('p.pointer', { + style: { + fontSize: '0.8em', + color: 'rgb(247, 134, 28)', + textDecoration: 'underline', + }, + }, 'I already have a DEN that I would like to import'), ]), */ @@ -73,7 +130,42 @@ InitializeMenuScreen.prototype.renderMenu = function () { ) } -InitializeMenuScreen.prototype.showCreateVault = function () { - this.props.dispatch(actions.showCreateVault()) +InitializeMenuScreen.prototype.createVaultOnEnter = function (event) { + if (event.key === 'Enter') { + event.preventDefault() + this.createNewVault() + } +} + +InitializeMenuScreen.prototype.createNewVault = function () { + var passwordBox = document.getElementById('password-box') + var password = passwordBox.value + var passwordConfirmBox = document.getElementById('password-box-confirm') + var passwordConfirm = passwordConfirmBox.value + // var entropy = document.getElementById('entropy-text-entry').value + + if (password.length < 8) { + this.warning = 'password not long enough' + this.props.dispatch(actions.displayWarning(this.warning)) + return + } + if (password !== passwordConfirm) { + this.warning = 'passwords don\'t match' + this.props.dispatch(actions.displayWarning(this.warning)) + return + } + + this.props.dispatch(actions.createNewVault(password, ''/* entropy*/)) +} + +InitializeMenuScreen.prototype.inputChanged = function (event) { + // tell mascot to look at page action + var element = event.target + var boundingRect = element.getBoundingClientRect() + var coordinates = getCaretCoordinates(element, element.selectionEnd) + this.animationEventEmitter.emit('point', { + x: boundingRect.left + coordinates.left - element.scrollLeft, + y: boundingRect.top + coordinates.top - element.scrollTop, + }) } diff --git a/ui/app/unlock.js b/ui/app/unlock.js index b82e46d02..ca74c94c3 100644 --- a/ui/app/unlock.js +++ b/ui/app/unlock.js @@ -104,6 +104,3 @@ UnlockScreen.prototype.inputChanged = function (event) { }) } -UnlockScreen.prototype.emitAnim = function (name, a, b, c) { - this.animationEventEmitter.emit(name, a, b, c) -} |