import React, { PureComponent } from 'react' import PropTypes from 'prop-types' import classnames from 'classnames' import Identicon from '../identicon' import Tooltip from '../tooltip-v2' import copyToClipboard from 'copy-to-clipboard' import { DEFAULT_VARIANT, CARDS_VARIANT, FLAT_VARIANT } from './sender-to-recipient.constants' import { checksumAddress } from '../../util' const variantHash = { [DEFAULT_VARIANT]: 'sender-to-recipient--default', [CARDS_VARIANT]: 'sender-to-recipient--cards', [FLAT_VARIANT]: 'sender-to-recipient--flat', } export default class SenderToRecipient extends PureComponent { static propTypes = { senderName: PropTypes.string, senderAddress: PropTypes.string, recipientName: PropTypes.string, recipientAddress: PropTypes.string, t: PropTypes.func, variant: PropTypes.oneOf([DEFAULT_VARIANT, CARDS_VARIANT, FLAT_VARIANT]), addressOnly: PropTypes.bool, assetImage: PropTypes.string, onRecipientClick: PropTypes.func, onSenderClick: PropTypes.func, } static defaultProps = { variant: DEFAULT_VARIANT, } static contextTypes = { t: PropTypes.func, } state = { senderAddressCopied: false, recipientAddressCopied: false, } renderSenderIdenticon () { return !this.props.addressOnly && (
) } renderSenderAddress () { const { t } = this.context const { senderName, senderAddress, addressOnly } = this.props const checksummedSenderAddress = checksumAddress(senderAddress) return ( this.setState({ senderAddressCopied: false })} >
{ addressOnly ? `${t('from')}: ${checksummedSenderAddress}` : senderName }
) } renderRecipientIdenticon () { const { recipientAddress, assetImage } = this.props const checksummedRecipientAddress = checksumAddress(recipientAddress) return !this.props.addressOnly && (
) } renderRecipientWithAddress () { const { t } = this.context const { recipientName, recipientAddress, addressOnly, onRecipientClick } = this.props const checksummedRecipientAddress = checksumAddress(recipientAddress) return (
{ this.setState({ recipientAddressCopied: true }) copyToClipboard(checksummedRecipientAddress) if (onRecipientClick) { onRecipientClick() } }} > { this.renderRecipientIdenticon() } this.setState({ recipientAddressCopied: false })} >
{ addressOnly ? `${t('to')}: ${checksummedRecipientAddress}` : (recipientName || this.context.t('newContract')) }
) } renderRecipientWithoutAddress () { return (
{ !this.props.addressOnly && }
{ this.context.t('newContract') }
) } renderArrow () { return this.props.variant === DEFAULT_VARIANT ? (
) : (
) } render () { const { senderAddress, recipientAddress, variant, onSenderClick } = this.props const checksummedSenderAddress = checksumAddress(senderAddress) return (
{ this.setState({ senderAddressCopied: true }) copyToClipboard(checksummedSenderAddress) if (onSenderClick) { onSenderClick() } }} > { this.renderSenderIdenticon() } { this.renderSenderAddress() }
{ this.renderArrow() } { recipientAddress ? this.renderRecipientWithAddress() : this.renderRecipientWithoutAddress() }
) } }