import React, { Component } from 'react'; import PropTypes from 'prop-types'; import AccountListItem from '../../components/app/account-list-item'; import Button from '../../components/ui/button'; import Identicon from '../../components/ui/identicon'; import { EVENT } from '../../../shared/constants/metametrics'; import { conversionUtil } from '../../../shared/modules/conversion.utils'; import SiteOrigin from '../../components/ui/site-origin'; export default class ConfirmEncryptionPublicKey extends Component { static contextTypes = { t: PropTypes.func.isRequired, trackEvent: PropTypes.func.isRequired, }; static propTypes = { fromAccount: PropTypes.shape({ address: PropTypes.string.isRequired, balance: PropTypes.string, name: PropTypes.string, }).isRequired, clearConfirmTransaction: PropTypes.func.isRequired, cancelEncryptionPublicKey: PropTypes.func.isRequired, encryptionPublicKey: PropTypes.func.isRequired, conversionRate: PropTypes.number, history: PropTypes.object.isRequired, requesterAddress: PropTypes.string, txData: PropTypes.object, subjectMetadata: PropTypes.object, mostRecentOverviewPage: PropTypes.string.isRequired, nativeCurrency: PropTypes.string.isRequired, }; renderHeader = () => { return (
{this.context.t('encryptionPublicKeyRequest')}
); }; renderAccount = () => { const { fromAccount } = this.props; const { t } = this.context; return (
{`${t('account')}:`}
); }; renderBalance = () => { const { conversionRate, nativeCurrency, fromAccount: { balance }, } = this.props; const { t } = this.context; const nativeCurrencyBalance = conversionUtil(balance, { fromNumericBase: 'hex', toNumericBase: 'dec', fromDenomination: 'WEI', numberOfDecimals: 6, conversionRate, }); return (
{`${t('balance')}:`}
{`${nativeCurrencyBalance} ${nativeCurrency}`}
); }; renderRequestIcon = () => { const { requesterAddress } = this.props; return (
); }; renderAccountInfo = () => { return (
{this.renderAccount()} {this.renderRequestIcon()} {this.renderBalance()}
); }; renderBody = () => { const { subjectMetadata, txData } = this.props; const { t } = this.context; const targetSubjectMetadata = subjectMetadata[txData.origin]; const notice = t('encryptionPublicKeyNotice', [ , ]); const name = targetSubjectMetadata?.hostname || txData.origin; return (
{this.renderAccountInfo()}
{targetSubjectMetadata?.iconUrl ? ( ) : ( {name.charAt(0).toUpperCase()} )}
{notice}
); }; renderFooter = () => { const { cancelEncryptionPublicKey, clearConfirmTransaction, encryptionPublicKey, history, mostRecentOverviewPage, txData, } = this.props; const { t, trackEvent } = this.context; return (
); }; render = () => { return (
{this.renderHeader()} {this.renderBody()} {this.renderFooter()}
); }; }