import React, { Component } from 'react'
import PropTypes from 'prop-types'
import classnames from 'classnames'
import Identicon from '../../../components/ui/identicon'
import { addressSummary } from '../../../helpers/utils/util'
import { formatCurrency } from '../../../helpers/utils/confirm-tx.util'
export default class ConfirmApproveContent extends Component {
static contextTypes = {
t: PropTypes.func,
}
static propTypes = {
decimals: PropTypes.number,
tokenAmount: PropTypes.string,
customTokenAmount: PropTypes.string,
tokenSymbol: PropTypes.string,
siteImage: PropTypes.string,
showCustomizeGasModal: PropTypes.func,
showEditApprovalPermissionModal: PropTypes.func,
origin: PropTypes.string,
setCustomAmount: PropTypes.func,
tokenBalance: PropTypes.string,
data: PropTypes.string,
toAddress: PropTypes.string,
currentCurrency: PropTypes.string,
fiatTransactionTotal: PropTypes.string,
ethTransactionTotal: PropTypes.string,
}
state = {
showFullTxDetails: false,
}
renderApproveContentCard({
symbol,
title,
showEdit,
onEditClick,
content,
footer,
noBorder,
}) {
return (
{symbol}
{title}
{showEdit && (
onEditClick()}
>
Edit
)}
{content}
{footer}
)
}
// TODO: Add "Learn Why" with link to the feeAssociatedRequest text
renderTransactionDetailsContent() {
const { t } = this.context
const {
currentCurrency,
ethTransactionTotal,
fiatTransactionTotal,
} = this.props
return (
{t('feeAssociatedRequest')}
{formatCurrency(fiatTransactionTotal, currentCurrency)}
{`${ethTransactionTotal} ETH`}
)
}
renderPermissionContent() {
const { t } = this.context
const {
customTokenAmount,
tokenAmount,
tokenSymbol,
origin,
toAddress,
} = this.props
return (
{t('accessAndSpendNotice', [origin])}
{t('amountWithColon')}
{`${Number(customTokenAmount || tokenAmount)} ${tokenSymbol}`}
{t('toWithColon')}
{addressSummary(toAddress)}
)
}
renderDataContent() {
const { t } = this.context
const { data } = this.props
return (
{t('functionApprove')}
{data}
)
}
render() {
const { t } = this.context
const {
decimals,
siteImage,
tokenAmount,
customTokenAmount,
origin,
tokenSymbol,
showCustomizeGasModal,
showEditApprovalPermissionModal,
setCustomAmount,
tokenBalance,
} = this.props
const { showFullTxDetails } = this.state
return (
{t('allowOriginSpendToken', [origin, tokenSymbol])}
{t('trustSiteApprovePermission', [origin, tokenSymbol])}
showEditApprovalPermissionModal({
customTokenAmount,
decimals,
origin,
setCustomAmount,
tokenAmount,
tokenSymbol,
tokenBalance,
})
}
>
{t('editPermission')}
{this.renderApproveContentCard({
symbol:
,
title: 'Transaction Fee',
showEdit: true,
onEditClick: showCustomizeGasModal,
content: this.renderTransactionDetailsContent(),
noBorder: !showFullTxDetails,
footer: (
this.setState({
showFullTxDetails: !this.state.showFullTxDetails,
})
}
>
View full transaction details
),
})}
{showFullTxDetails ? (
{this.renderApproveContentCard({
symbol:
,
title: 'Permission',
content: this.renderPermissionContent(),
showEdit: true,
onEditClick: () =>
showEditApprovalPermissionModal({
customTokenAmount,
decimals,
origin,
setCustomAmount,
tokenAmount,
tokenSymbol,
tokenBalance,
}),
})}
{this.renderApproveContentCard({
symbol: ,
title: 'Data',
content: this.renderDataContent(),
noBorder: true,
})}
) : null}
)
}
}