import React from 'react'; import { Modal, Icon, Button, Form, Input } from 'antd'; import classnames from 'classnames'; import QRCode from 'qrcode.react'; import { formatZcashCLI, formatZcashURI } from 'utils/formatters'; import { getAmountErrorFromString } from 'utils/validators'; import Loader from 'components/Loader'; import './TipJarModal.less'; import CopyInput from 'components/CopyInput'; interface Props { isOpen: boolean; onClose: () => void; type: 'user' | 'proposal'; address: string; amount: string; } interface State { amount: string; } export class TipJarModal extends React.Component { static getDerivedStateFromProps = (nextProps: Props) => { // while modal is closed, set amount state via props return !nextProps.isOpen ? { amount: nextProps.amount } : {}; }; state: State = { amount: '', }; render() { const { isOpen, onClose, type, address } = this.props; const { amount } = this.state; const amountError = getAmountErrorFromString(amount); const amountIsValid = !amountError; const cli = amountIsValid ? formatZcashCLI(address, amount) : ''; const uri = amountIsValid ? formatZcashURI(address, amount) : ''; const content = (
{!uri && }
); return ( Done } afterClose={this.handleAfterClose} > {content} ); } private handleAmountChange = (e: React.ChangeEvent) => this.setState({ amount: e.currentTarget.value, }); private handleAfterClose = () => this.setState({ amount: '' }); }