2019-11-04 13:40:46 +01:00
|
|
|
import React, { PureComponent } from 'react'
|
|
|
|
import PropTypes from 'prop-types'
|
2020-08-18 21:18:25 +02:00
|
|
|
import { getEnvironmentType } from '../../../../../app/scripts/lib/util'
|
|
|
|
import Identicon from '../../ui/identicon'
|
2019-11-04 13:40:46 +01:00
|
|
|
import Header from './signature-request-header'
|
|
|
|
import Footer from './signature-request-footer'
|
|
|
|
import Message from './signature-request-message'
|
|
|
|
import { ENVIRONMENT_TYPE_NOTIFICATION } from './signature-request.constants'
|
|
|
|
|
|
|
|
export default class SignatureRequest extends PureComponent {
|
|
|
|
static propTypes = {
|
|
|
|
txData: PropTypes.object.isRequired,
|
2020-03-06 22:34:56 +01:00
|
|
|
fromAccount: PropTypes.shape({
|
|
|
|
address: PropTypes.string.isRequired,
|
2019-11-04 13:40:46 +01:00
|
|
|
balance: PropTypes.string,
|
|
|
|
name: PropTypes.string,
|
2020-03-06 22:34:56 +01:00
|
|
|
}).isRequired,
|
2019-11-04 13:40:46 +01:00
|
|
|
|
|
|
|
clearConfirmTransaction: PropTypes.func.isRequired,
|
|
|
|
cancel: PropTypes.func.isRequired,
|
|
|
|
sign: PropTypes.func.isRequired,
|
|
|
|
}
|
|
|
|
|
|
|
|
static contextTypes = {
|
|
|
|
t: PropTypes.func,
|
2019-11-15 19:04:36 +01:00
|
|
|
metricsEvent: PropTypes.func,
|
2019-11-04 13:40:46 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
componentDidMount () {
|
|
|
|
const { clearConfirmTransaction, cancel } = this.props
|
|
|
|
const { metricsEvent } = this.context
|
2020-01-24 20:12:58 +01:00
|
|
|
if (getEnvironmentType() === ENVIRONMENT_TYPE_NOTIFICATION) {
|
2019-11-04 13:40:46 +01:00
|
|
|
window.addEventListener('beforeunload', (event) => {
|
|
|
|
metricsEvent({
|
|
|
|
eventOpts: {
|
|
|
|
category: 'Transactions',
|
|
|
|
action: 'Sign Request',
|
|
|
|
name: 'Cancel Sig Request Via Notification Close',
|
|
|
|
},
|
|
|
|
})
|
|
|
|
clearConfirmTransaction()
|
|
|
|
cancel(event)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
formatWallet (wallet) {
|
|
|
|
return `${wallet.slice(0, 8)}...${wallet.slice(wallet.length - 8, wallet.length)}`
|
|
|
|
}
|
|
|
|
|
|
|
|
render () {
|
|
|
|
const {
|
2020-03-06 22:34:56 +01:00
|
|
|
fromAccount,
|
|
|
|
txData: { msgParams: { data, origin } },
|
2019-11-04 13:40:46 +01:00
|
|
|
cancel,
|
|
|
|
sign,
|
|
|
|
} = this.props
|
2020-03-06 22:34:56 +01:00
|
|
|
const { address: fromAddress } = fromAccount
|
2019-11-13 15:11:21 +01:00
|
|
|
const { message, domain = {} } = JSON.parse(data)
|
2019-11-04 13:40:46 +01:00
|
|
|
|
|
|
|
return (
|
|
|
|
<div className="signature-request page-container">
|
2020-03-06 22:34:56 +01:00
|
|
|
<Header fromAccount={fromAccount} />
|
2019-11-04 13:40:46 +01:00
|
|
|
<div className="signature-request-content">
|
|
|
|
<div className="signature-request-content__title">{this.context.t('sigRequest')}</div>
|
|
|
|
<div className="signature-request-content__identicon-container">
|
2019-11-13 15:11:21 +01:00
|
|
|
<div className="signature-request-content__identicon-initial" >{ domain.name && domain.name[0] }</div>
|
2019-11-04 13:40:46 +01:00
|
|
|
<div className="signature-request-content__identicon-border" />
|
|
|
|
<Identicon
|
2020-03-06 22:34:56 +01:00
|
|
|
address={fromAddress}
|
2019-11-04 13:40:46 +01:00
|
|
|
diameter={70}
|
|
|
|
/>
|
|
|
|
</div>
|
2019-11-13 15:11:21 +01:00
|
|
|
<div className="signature-request-content__info--bolded">{domain.name}</div>
|
2019-11-04 13:40:46 +01:00
|
|
|
<div className="signature-request-content__info">{origin}</div>
|
2020-03-06 22:34:56 +01:00
|
|
|
<div className="signature-request-content__info">{this.formatWallet(fromAddress)}</div>
|
2019-11-04 13:40:46 +01:00
|
|
|
</div>
|
|
|
|
<Message data={message} />
|
|
|
|
<Footer cancelAction={cancel} signAction={sign} />
|
|
|
|
</div>
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|