import React, { PureComponent } from 'react' import PropTypes from 'prop-types' import { Formik } from 'formik' import { withStyles } from '@material-ui/core/styles' import Card from '@material-ui/core/Card' import CardActions from '@material-ui/core/CardActions' import CardContent from '@material-ui/core/CardContent' import Button from '@material-ui/core/Button' import Typography from '@material-ui/core/Typography' import TextField from '@material-ui/core/TextField' import indigo from '@material-ui/core/colors/indigo' import blueGrey from '@material-ui/core/colors/blueGrey' import Collapse from '@material-ui/core/Collapse' import LiquidPledging from 'Embark/contracts/LiquidPledging' import LPVault from 'Embark/contracts/LPVault' import { getTokenLabel } from '../../utils/currencies' import { toWei } from '../../utils/conversions' import { FundingContext } from '../../context' const { withdraw } = LiquidPledging.methods const { confirmPayment } = LPVault.methods const styles = { card: { borderRadius: '0px', borderTopStyle: 'groove', borderBottom: '1px solid lightgray', backgroundColor: indigo[50] }, bullet: { display: 'inline-block', margin: '0 2px', transform: 'scale(0.8)', }, title: { fontSize: 14, }, amount: { backgroundColor: blueGrey[50] } } class Withdraw extends PureComponent { state = { show: null } componentDidMount() { this.setState({ show: true }) } close = () => { this.setState( { show: false }, () => setTimeout(() => { this.props.clearRowData() }, 500) ) } render() { const { classes, rowData } = this.props const { show } = this.state const isPaying = rowData[7] === "1" return ( {({ authorizedPayments }) => { const { amount } = values const paymentId = isPaying ? authorizedPayments.find(r => r.ref === rowData.id)['idPayment'] : rowData.id const args = isPaying ? [paymentId] : [paymentId, toWei(amount)] const sendFn = isPaying ? confirmPayment : withdraw try { const toSend = sendFn(...args); const estimateGas = await toSend.estimateGas(); toSend.send({ gas: estimateGas + 1000 }) .then(res => { console.log({res}) }) .catch(e => { console.log({e}) }) .finally(() => { this.close() }) } catch (error) { console.log(error) } }} > {({ values, errors, touched, handleChange, handleBlur, handleSubmit, setFieldValue, setStatus, status }) => (
{`${isPaying ? 'Confirm' : ''} Withdraw${isPaying ? 'al' : ''} ${values.amount || ''} ${values.amount ? getTokenLabel(rowData[6]) : ''} from Pledge ${rowData.id}`} {!isPaying && }
)}
}
) } } Withdraw.propTypes = { classes: PropTypes.object.isRequired, rowData: PropTypes.object.isRequired } export default withStyles(styles)(Withdraw)