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:
parent
39afbea7aa
commit
24fd16b1be
@ -3,25 +3,21 @@ const h = require('react-hyperscript')
|
|||||||
const inherits = require('util').inherits
|
const inherits = require('util').inherits
|
||||||
const connect = require('react-redux').connect
|
const connect = require('react-redux').connect
|
||||||
const actions = require('../../actions')
|
const actions = require('../../actions')
|
||||||
|
const AccountModalContainer = require('./account-modal-container')
|
||||||
const { getSelectedIdentity, getSelectedAddress } = require('../../selectors')
|
const { getSelectedIdentity, getSelectedAddress } = require('../../selectors')
|
||||||
const genAccountLink = require('../../../lib/account-link.js')
|
const genAccountLink = require('../../../lib/account-link.js')
|
||||||
const Identicon = require('../identicon')
|
|
||||||
const QrView = require('../qr-code')
|
const QrView = require('../qr-code')
|
||||||
|
|
||||||
function mapStateToProps (state) {
|
function mapStateToProps (state) {
|
||||||
return {
|
return {
|
||||||
network: state.metamask.network,
|
network: state.metamask.network,
|
||||||
address: state.metamask.selectedAddress,
|
|
||||||
selectedAddress: getSelectedAddress(state),
|
|
||||||
selectedIdentity: getSelectedIdentity(state),
|
selectedIdentity: getSelectedIdentity(state),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function mapDispatchToProps (dispatch) {
|
function mapDispatchToProps (dispatch) {
|
||||||
return {
|
return {
|
||||||
hideModal: () => {
|
// Is this supposed to be used somewhere?
|
||||||
dispatch(actions.hideModal())
|
|
||||||
},
|
|
||||||
showQrView: (selected, identity) => dispatch(actions.showQrView(selected, identity)),
|
showQrView: (selected, identity) => dispatch(actions.showQrView(selected, identity)),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -34,49 +30,28 @@ function AccountDetailsModal () {
|
|||||||
module.exports = connect(mapStateToProps, mapDispatchToProps)(AccountDetailsModal)
|
module.exports = connect(mapStateToProps, mapDispatchToProps)(AccountDetailsModal)
|
||||||
|
|
||||||
// Not yet pixel perfect todos:
|
// Not yet pixel perfect todos:
|
||||||
// fonts of qr-header and close button
|
// fonts of qr-header
|
||||||
|
|
||||||
AccountDetailsModal.prototype.render = function () {
|
AccountDetailsModal.prototype.render = function () {
|
||||||
const { selectedIdentity, network } = this.props
|
const { selectedIdentity, network } = this.props
|
||||||
|
const { name, address } = selectedIdentity
|
||||||
|
|
||||||
return h('div', { style: { borderRadius: '4px' }}, [
|
return h(AccountModalContainer, {}, [
|
||||||
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,
|
|
||||||
}),
|
|
||||||
|
|
||||||
h(QrView, {
|
h(QrView, {
|
||||||
Qr: {
|
Qr: {
|
||||||
message: this.props.selectedIdentity.name,
|
message: name,
|
||||||
data: this.props.selectedIdentity.address,
|
data: address,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
|
|
||||||
// divider
|
h('div.account-modal-divider'),
|
||||||
h('div.account-details-modal-divider'),
|
|
||||||
|
|
||||||
h('button.btn-clear', {
|
h('button.btn-clear', {
|
||||||
onClick: () => {
|
onClick: () => global.platform.openWindow({ url: genAccountLink(address, network) }),
|
||||||
const url = genAccountLink(selectedIdentity.address, network)
|
|
||||||
global.platform.openWindow({ url })
|
|
||||||
},
|
|
||||||
}, [ 'View account on Etherscan' ]),
|
}, [ 'View account on Etherscan' ]),
|
||||||
|
|
||||||
// Holding on redesign for Export Private Key functionality
|
// Holding on redesign for Export Private Key functionality
|
||||||
h('button.btn-clear', [ 'Export private key' ]),
|
h('button.btn-clear', [ 'Export private key' ]),
|
||||||
|
|
||||||
]),
|
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
55
ui/app/components/modals/account-modal-container.js
Normal file
55
ui/app/components/modals/account-modal-container.js
Normal 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,
|
||||||
|
|
||||||
|
]),
|
||||||
|
])
|
||||||
|
}
|
@ -52,7 +52,7 @@ QrCodeView.prototype.render = function () {
|
|||||||
width: '247px',
|
width: '247px',
|
||||||
},
|
},
|
||||||
value: Qr.data,
|
value: Qr.data,
|
||||||
readonly: true,
|
readOnly: true,
|
||||||
}),
|
}),
|
||||||
// h(CopyButton, {
|
// h(CopyButton, {
|
||||||
// value: Qr.data,
|
// value: Qr.data,
|
||||||
|
@ -175,8 +175,8 @@
|
|||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Account Details Modal
|
// Account Modal Container
|
||||||
.account-details-modal-wrapper {
|
.account-modal-container {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: flex-start;
|
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;
|
margin-top: 9px;
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.account-details-modal-wrapper .qr-wrapper {
|
.account-modal-container .qr-wrapper {
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.account-details-modal-wrapper .ellip-address-wrapper {
|
.account-modal-container .ellip-address-wrapper {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
border: 1px solid $alto;
|
border: 1px solid $alto;
|
||||||
@ -211,14 +233,14 @@
|
|||||||
width: 286px;
|
width: 286px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.account-details-modal-wrapper .qr-ellip-address {
|
.account-modal-container .qr-ellip-address {
|
||||||
width: 254px;
|
width: 254px;
|
||||||
border: none;
|
border: none;
|
||||||
font-family: 'Montserrat Light';
|
font-family: 'Montserrat Light';
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.account-details-modal-wrapper .btn-clear {
|
.account-modal-container .btn-clear {
|
||||||
min-height: 28px;
|
min-height: 28px;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
border-color: $curious-blue;
|
border-color: $curious-blue;
|
||||||
@ -233,32 +255,13 @@
|
|||||||
font-family: 'Montserrat Light';
|
font-family: 'Montserrat Light';
|
||||||
}
|
}
|
||||||
|
|
||||||
.account-details-modal-divider {
|
.account-modal-divider {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 1px;
|
height: 1px;
|
||||||
margin: 19px 0 8px 0;
|
margin: 19px 0 8px 0;
|
||||||
background-color: $alto;
|
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
|
||||||
.new-account-modal-wrapper {
|
.new-account-modal-wrapper {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
Loading…
Reference in New Issue
Block a user