1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-10-22 19:26:13 +02:00

Update confirm transaction screen

This commit is contained in:
Alexander Tseung 2018-03-19 16:12:09 -07:00
parent 5c5f476ba4
commit 3c1248c816
9 changed files with 282 additions and 206 deletions

View File

@ -128,10 +128,10 @@ async function runSendFlowTest(assert, done) {
selectState.val('send edit') selectState.val('send edit')
reactTriggerChange(selectState[0]) reactTriggerChange(selectState[0])
const confirmFromName = (await queryAsync($, '.confirm-screen-account-name')).first() const confirmFromName = (await queryAsync($, '.sender-to-recipient__sender-name')).first()
assert.equal(confirmFromName[0].textContent, 'Send Account 2', 'confirm screen should show correct from name') assert.equal(confirmFromName[0].textContent, 'Send Account 2', 'confirm screen should show correct from name')
const confirmToName = (await queryAsync($, '.confirm-screen-account-name')).last() const confirmToName = (await queryAsync($, '.sender-to-recipient__recipient-name')).last()
assert.equal(confirmToName[0].textContent, 'Send Account 3', 'confirm screen should show correct to name') assert.equal(confirmToName[0].textContent, 'Send Account 3', 'confirm screen should show correct to name')
const confirmScreenRows = await queryAsync($, '.confirm-screen-rows') const confirmScreenRows = await queryAsync($, '.confirm-screen-rows')
@ -140,7 +140,7 @@ async function runSendFlowTest(assert, done) {
const confirmScreenTotal = confirmScreenRows.find('.confirm-screen-row-info')[2] const confirmScreenTotal = confirmScreenRows.find('.confirm-screen-row-info')[2]
assert.equal(confirmScreenTotal.textContent, '2405.36 USD', 'confirm screen should show correct total') assert.equal(confirmScreenTotal.textContent, '2405.36 USD', 'confirm screen should show correct total')
const confirmScreenBackButton = await queryAsync($, '.confirm-screen-back-button') const confirmScreenBackButton = await queryAsync($, '.page-container__back-button')
confirmScreenBackButton[0].click() confirmScreenBackButton[0].click()
const sendFromFieldItemInEdit = await queryAsync($, '.account-list-item') const sendFromFieldItemInEdit = await queryAsync($, '.account-list-item')

View File

@ -0,0 +1,51 @@
const { Component } = require('react')
const h = require('react-hyperscript')
const PropTypes = require('prop-types')
const { connect } = require('react-redux')
const NetworkDropdownIcon = require('./dropdowns/components/network-dropdown-icon')
const t = require('../../i18n')
const networkToColorHash = {
1: '#038789',
3: '#e91550',
42: '#690496',
4: '#ebb33f',
}
class NetworkDisplay extends Component {
renderNetworkIcon () {
const { network } = this.props
const networkColor = networkToColorHash[network]
return networkColor
? h(NetworkDropdownIcon, { backgroundColor: networkColor })
: h('i.fa.fa-question-circle.fa-med', {
style: {
margin: '0 4px',
color: 'rgb(125, 128, 130)',
},
})
}
render () {
const { provider: { type } } = this.props
return h('.network-display__container', [
this.renderNetworkIcon(),
h('.network-name', t(type)),
])
}
}
NetworkDisplay.propTypes = {
network: PropTypes.string,
provider: PropTypes.object,
}
const mapStateToProps = ({ metamask: { network, provider } }) => {
return {
network,
provider,
}
}
module.exports = connect(mapStateToProps)(NetworkDisplay)

View File

@ -10,6 +10,7 @@ const hexToBn = require('../../../../app/scripts/lib/hex-to-bn')
const { conversionUtil } = require('../../conversion-util') const { conversionUtil } = require('../../conversion-util')
const t = require('../../../i18n') const t = require('../../../i18n')
const SenderToRecipient = require('../sender-to-recipient') const SenderToRecipient = require('../sender-to-recipient')
const NetworkDisplay = require('../network-display')
const { MIN_GAS_PRICE_HEX } = require('../send/send-constants') const { MIN_GAS_PRICE_HEX } = require('../send/send-constants')
@ -244,9 +245,12 @@ class ConfirmDeployContract extends Component {
return ( return (
h('.page-container', [ h('.page-container', [
h('.page-container__header', [ h('.page-container__header', [
h('.page-container__back-button', { h('.page-container__header-row', [
h('span.page-container__back-button', {
onClick: () => backToAccountDetail(selectedAddress), onClick: () => backToAccountDetail(selectedAddress),
}, t('back')), }, t('back')),
window.METAMASK_UI_TYPE === 'notification' && h(NetworkDisplay),
]),
h('.page-container__title', t('confirmContract')), h('.page-container__title', t('confirmContract')),
h('.page-container__subtitle', t('pleaseReviewTransaction')), h('.page-container__subtitle', t('pleaseReviewTransaction')),
]), ]),

View File

@ -4,7 +4,6 @@ const h = require('react-hyperscript')
const inherits = require('util').inherits const inherits = require('util').inherits
const actions = require('../../actions') const actions = require('../../actions')
const clone = require('clone') const clone = require('clone')
const Identicon = require('../identicon')
const ethUtil = require('ethereumjs-util') const ethUtil = require('ethereumjs-util')
const BN = ethUtil.BN const BN = ethUtil.BN
const hexToBn = require('../../../../app/scripts/lib/hex-to-bn') const hexToBn = require('../../../../app/scripts/lib/hex-to-bn')
@ -15,6 +14,8 @@ const {
} = require('../../conversion-util') } = require('../../conversion-util')
const GasFeeDisplay = require('../send/gas-fee-display-v2') const GasFeeDisplay = require('../send/gas-fee-display-v2')
const t = require('../../../i18n') const t = require('../../../i18n')
const SenderToRecipient = require('../sender-to-recipient')
const NetworkDisplay = require('../network-display')
const { MIN_GAS_PRICE_HEX } = require('../send/send-constants') const { MIN_GAS_PRICE_HEX } = require('../send/send-constants')
@ -257,42 +258,28 @@ ConfirmSendEther.prototype.render = function () {
this.inputs = [] this.inputs = []
return ( return (
h('div.confirm-screen-container.confirm-send-ether', [
// Main Send token Card // Main Send token Card
h('div.page-container', [ h('.page-container', [
h('div.page-container__header', [ h('.page-container__header', [
!txMeta.lastGasPrice && h('button.confirm-screen-back-button', { h('.page-container__header-row', [
h('span.page-container__back-button', {
onClick: () => editTransaction(txMeta), onClick: () => editTransaction(txMeta),
style: {
visibility: !txMeta.lastGasPrice ? 'initial' : 'hidden',
},
}, 'Edit'), }, 'Edit'),
h('div.page-container__title', title), window.METAMASK_UI_TYPE === 'notification' && h(NetworkDisplay),
h('div.page-container__subtitle', subtitle), ]),
h('.page-container__title', title),
h('.page-container__subtitle', subtitle),
]), ]),
h('.page-container__content', [ h('.page-container__content', [
h('div.flex-row.flex-center.confirm-screen-identicons', [ h(SenderToRecipient, {
h('div.confirm-screen-account-wrapper', [ senderName: fromName,
h( senderAddress: fromAddress,
Identicon, recipientName: toName,
{ recipientAddress: txParams.to,
address: fromAddress, }),
diameter: 60,
},
),
h('span.confirm-screen-account-name', fromName),
// h('span.confirm-screen-account-number', fromAddress.slice(fromAddress.length - 4)),
]),
h('i.fa.fa-arrow-right.fa-lg'),
h('div.confirm-screen-account-wrapper', [
h(
Identicon,
{
address: txParams.to,
diameter: 60,
},
),
h('span.confirm-screen-account-name', toName),
// h('span.confirm-screen-account-number', toAddress.slice(toAddress.length - 4)),
]),
]),
// h('h3.flex-center.confirm-screen-sending-to-message', { // h('h3.flex-center.confirm-screen-sending-to-message', {
// style: { // style: {
@ -448,7 +435,6 @@ ConfirmSendEther.prototype.render = function () {
h('button.btn-confirm.page-container__footer-button.allcaps', [t('confirm')]), h('button.btn-confirm.page-container__footer-button.allcaps', [t('confirm')]),
]), ]),
]), ]),
]),
]) ])
) )
} }

View File

@ -5,6 +5,28 @@ const t = require('../../i18n')
const Identicon = require('./identicon') const Identicon = require('./identicon')
class SenderToRecipient extends Component { class SenderToRecipient extends Component {
renderRecipientIcon () {
const { recipientAddress } = this.props
return (
recipientAddress
? h(Identicon, { address: recipientAddress, diameter: 20 })
: h('i.fa.fa-file-text-o')
)
}
renderRecipient () {
const { recipientName } = this.props
return (
h('.sender-to-recipient__recipient', [
this.renderRecipientIcon(),
h(
'.sender-to-recipient__name.sender-to-recipient__recipient-name',
recipientName || t('newContract')
),
])
)
}
render () { render () {
const { senderName, senderAddress } = this.props const { senderName, senderAddress } = this.props
@ -28,10 +50,7 @@ class SenderToRecipient extends Component {
}), }),
]), ]),
]), ]),
h('.sender-to-recipient__recipient', [ this.renderRecipient(),
h('i.fa.fa-file-text-o'),
h('.sender-to-recipient__name.sender-to-recipient__recipient-name', t('newContract')),
]),
]) ])
) )
} }
@ -40,6 +59,8 @@ class SenderToRecipient extends Component {
SenderToRecipient.propTypes = { SenderToRecipient.propTypes = {
senderName: PropTypes.string, senderName: PropTypes.string,
senderAddress: PropTypes.string, senderAddress: PropTypes.string,
recipientName: PropTypes.string,
recipientAddress: PropTypes.string,
} }
module.exports = SenderToRecipient module.exports = SenderToRecipient

View File

@ -159,3 +159,15 @@
.network-caret { .network-caret {
margin: 0 8px 2px; margin: 0 8px 2px;
} }
.network-display {
&__container {
display: flex;
align-items: center;
justify-content: flex-start;
@media screen and (min-width: 576px) {
display: none;
}
}
}

View File

@ -526,14 +526,10 @@
} }
&__form { &__form {
padding: 13px 0; padding: 10px 0 25px;
width: 100%;
overflow-y: auto;
@media screen and (max-width: $break-small) { @media screen and (max-width: $break-small) {
padding: 13px 0;
margin: 0; margin: 0;
overflow-y: auto;
flex: 1 1 auto; flex: 1 1 auto;
} }
} }

View File

@ -106,6 +106,12 @@ input.large-input {
} }
} }
&__header-row {
padding-bottom: 10px;
display: flex;
justify-content: space-between;
}
&__footer { &__footer {
display: flex; display: flex;
flex-flow: row; flex-flow: row;
@ -138,7 +144,6 @@ input.large-input {
color: #2f9ae0; color: #2f9ae0;
font-size: 1rem; font-size: 1rem;
cursor: pointer; cursor: pointer;
padding-bottom: 10px;
font-weight: 400; font-weight: 400;
} }

View File

@ -480,8 +480,8 @@ SendTransactionScreen.prototype.renderMemoRow = function () {
} }
SendTransactionScreen.prototype.renderForm = function () { SendTransactionScreen.prototype.renderForm = function () {
return h('div.send-v2__form', {}, [ return h('.page-container__content', {}, [
h('.send-v2__form', [
this.renderFromRow(), this.renderFromRow(),
this.renderToRow(), this.renderToRow(),
@ -492,6 +492,7 @@ SendTransactionScreen.prototype.renderForm = function () {
// this.renderMemoRow(), // this.renderMemoRow(),
]),
]) ])
} }