1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00

Abstract account modal.

This commit is contained in:
Dan 2017-09-19 22:26:10 -02:30 committed by Chi Kei Chan
parent 39afbea7aa
commit 24fd16b1be
4 changed files with 96 additions and 63 deletions

View File

@ -3,25 +3,21 @@ const h = require('react-hyperscript')
const inherits = require('util').inherits
const connect = require('react-redux').connect
const actions = require('../../actions')
const AccountModalContainer = require('./account-modal-container')
const { getSelectedIdentity, getSelectedAddress } = require('../../selectors')
const genAccountLink = require('../../../lib/account-link.js')
const Identicon = require('../identicon')
const QrView = require('../qr-code')
function mapStateToProps (state) {
return {
network: state.metamask.network,
address: state.metamask.selectedAddress,
selectedAddress: getSelectedAddress(state),
selectedIdentity: getSelectedIdentity(state),
}
}
function mapDispatchToProps (dispatch) {
return {
hideModal: () => {
dispatch(actions.hideModal())
},
// Is this supposed to be used somewhere?
showQrView: (selected, identity) => dispatch(actions.showQrView(selected, identity)),
}
}
@ -34,49 +30,28 @@ function AccountDetailsModal () {
module.exports = connect(mapStateToProps, mapDispatchToProps)(AccountDetailsModal)
// Not yet pixel perfect todos:
// fonts of qr-header and close button
// fonts of qr-header
AccountDetailsModal.prototype.render = function () {
const { selectedIdentity, network } = this.props
const { name, address } = selectedIdentity
return h('div', { style: { borderRadius: '4px' }}, [
h('div.account-details-modal-wrapper', [
h('div', [
// Needs a border; requires changes to svg
h(Identicon, {
address: selectedIdentity.address,
diameter: 64,
style: {},
}),
]),
h('div.account-details-modal-close', {
onClick: this.props.hideModal,
}),
return h(AccountModalContainer, {}, [
h(QrView, {
Qr: {
message: this.props.selectedIdentity.name,
data: this.props.selectedIdentity.address,
message: name,
data: address,
},
}),
// divider
h('div.account-details-modal-divider'),
h('div.account-modal-divider'),
h('button.btn-clear', {
onClick: () => {
const url = genAccountLink(selectedIdentity.address, network)
global.platform.openWindow({ url })
},
onClick: () => global.platform.openWindow({ url: genAccountLink(address, network) }),
}, [ 'View account on Etherscan' ]),
// Holding on redesign for Export Private Key functionality
h('button.btn-clear', [ 'Export private key' ]),
]),
])
}

View File

@ -0,0 +1,55 @@
const Component = require('react').Component
const h = require('react-hyperscript')
const inherits = require('util').inherits
const connect = require('react-redux').connect
const actions = require('../../actions')
const { getSelectedIdentity } = require('../../selectors')
const Identicon = require('../identicon')
function mapStateToProps (state) {
return {
selectedIdentity: getSelectedIdentity(state),
}
}
function mapDispatchToProps (dispatch) {
return {
hideModal: () => {
dispatch(actions.hideModal())
},
}
}
inherits(AccountModalContainer, Component)
function AccountModalContainer () {
Component.call(this)
}
module.exports = connect(mapStateToProps, mapDispatchToProps)(AccountModalContainer)
AccountModalContainer.prototype.render = function () {
const { selectedIdentity, children } = this.props
console.log(`children`, children);
return h('div', { style: { borderRadius: '4px' }}, [
h('div.account-modal-container', [
h('div', [
// Needs a border; requires changes to svg
h(Identicon, {
address: selectedIdentity.address,
diameter: 64,
style: {},
}),
]),
h('div.account-modal-close', {
onClick: this.props.hideModal,
}),
...children,
]),
])
}

View File

@ -52,7 +52,7 @@ QrCodeView.prototype.render = function () {
width: '247px',
},
value: Qr.data,
readonly: true,
readOnly: true,
}),
// h(CopyButton, {
// value: Qr.data,

View File

@ -175,8 +175,8 @@
font-size: 18px;
}
// Account Details Modal
.account-details-modal-wrapper {
// Account Modal Container
.account-modal-container {
display: flex;
flex-direction: column;
justify-content: flex-start;
@ -192,16 +192,38 @@
}
}
.account-details-modal-wrapper .qr-header {
.account-modal-close::after {
content: '\00D7';
font-size: 40px;
color: $dusty-gray;
position: absolute;
top: 10px;
right: 12px;
cursor: pointer;
}
.account-modal-container .identicon {
position: relative;
left: 0;
right: 0;
margin: 0 auto;
top: -32px;
margin-bottom: -32px;
}
// Account Details Modal
.account-modal-container .qr-header {
margin-top: 9px;
font-size: 20px;
}
.account-details-modal-wrapper .qr-wrapper {
.account-modal-container .qr-wrapper {
margin-top: 5px;
}
.account-details-modal-wrapper .ellip-address-wrapper {
.account-modal-container .ellip-address-wrapper {
display: flex;
justify-content: center;
border: 1px solid $alto;
@ -211,14 +233,14 @@
width: 286px;
}
.account-details-modal-wrapper .qr-ellip-address {
.account-modal-container .qr-ellip-address {
width: 254px;
border: none;
font-family: 'Montserrat Light';
font-size: 14px;
}
.account-details-modal-wrapper .btn-clear {
.account-modal-container .btn-clear {
min-height: 28px;
font-size: 14px;
border-color: $curious-blue;
@ -233,32 +255,13 @@
font-family: 'Montserrat Light';
}
.account-details-modal-divider {
.account-modal-divider {
width: 100%;
height: 1px;
margin: 19px 0 8px 0;
background-color: $alto;
}
.account-details-modal-wrapper .identicon {
position: relative;
left: 0;
right: 0;
margin: 0 auto;
top: -32px;
margin-bottom: -32px;
}
.account-details-modal-close::after {
content: '\00D7';
font-size: 40px;
color: $dusty-gray;
position: absolute;
top: 10px;
right: 12px;
cursor: pointer;
}
// New Account Modal
.new-account-modal-wrapper {
display: flex;