2018-12-03 20:22:51 +00:00
import React from 'react'
2018-12-03 20:54:24 +00:00
import { Formik } from 'formik'
2018-12-21 19:31:46 +00:00
import LiquidPledging from 'Embark/contracts/LiquidPledging'
2018-12-03 20:22:51 +00:00
import Button from '@material-ui/core/Button'
import TextField from '@material-ui/core/TextField'
import Dialog from '@material-ui/core/Dialog'
import DialogActions from '@material-ui/core/DialogActions'
import DialogContent from '@material-ui/core/DialogContent'
import DialogContentText from '@material-ui/core/DialogContentText'
import DialogTitle from '@material-ui/core/DialogTitle'
2018-12-03 20:54:24 +00:00
import { getTokenLabel } from '../utils/currencies'
2018-12-04 19:39:45 +00:00
import { toWei } from '../utils/conversions'
2018-12-21 19:31:46 +00:00
const { transfer } = LiquidPledging . methods
2018-12-03 20:22:51 +00:00
2019-01-23 17:40:11 +00:00
const TransferDialog = ( { row , handleClose } ) => (
2018-12-03 20:54:24 +00:00
< Formik
initialValues = { { } }
2019-01-23 17:40:11 +00:00
onSubmit = { async ( values , { setSubmitting , resetForm , setStatus } ) => {
const { pledgeId , pledge } = row
const { idSender , amount , idReceiver } = values
const args = [ idSender , pledgeId , toWei ( amount . toString ( ) ) , idReceiver ]
const toSend = transfer ( ... args )
const estimatedGas = await toSend . estimateGas ( )
2018-12-12 20:46:02 +00:00
2019-01-23 17:40:11 +00:00
toSend
. send ( { gas : estimatedGas + 1000 } )
. then ( async res => {
console . log ( { res } )
const { events : { Transfer } } = res
if ( Array . isArray ( Transfer ) ) {
Transfer . forEach ( async t => {
const { to , amount } = t . returnValues
await pledge . transferTo ( to , amount )
} )
} else {
const { to , amount } = Transfer . returnValues
await pledge . transferTo ( to , amount )
}
} )
. catch ( e => {
console . log ( { e } )
} )
. finally ( ( ) => {
handleClose ( )
resetForm ( )
} )
} }
2018-12-03 20:54:24 +00:00
>
{ ( {
values ,
errors ,
touched ,
handleChange ,
handleBlur ,
handleSubmit ,
2018-12-04 19:39:45 +00:00
submitForm ,
2018-12-03 20:54:24 +00:00
setFieldValue ,
setStatus ,
status
} ) => (
2018-12-13 18:39:35 +00:00
< form onSubmit = { handleSubmit } autoComplete = "off" >
2018-12-03 20:54:24 +00:00
< Dialog
open = { ! ! row }
onClose = { handleClose }
aria - labelledby = "form-dialog-title"
>
< DialogTitle id = "form-dialog-title" > Transfer Funds < / DialogTitle >
< DialogContent >
< DialogContentText >
2019-02-06 16:00:12 +00:00
{ ` Transfer ${ values . amount || '' } ${ values . amount && row ? getTokenLabel ( row . pledge . token ) : '' } from Pledge ${ row . pledgeId } ${ values . idReceiver ? 'to Giver/Delegate/Project' : '' } ${ values . idReceiver || '' } ` }
2018-12-03 20:54:24 +00:00
< / DialogContentText >
< TextField
autoFocus
margin = "normal"
id = "amount"
name = "amount"
label = "Amount to transfer"
placeholder = "Amount to transfer"
variant = "outlined"
autoComplete = "off"
fullWidth
onChange = { handleChange }
onBlur = { handleBlur }
value = { values . amount || '' }
/ >
2018-12-09 12:10:17 +00:00
< TextField
margin = "normal"
id = "idSender"
name = "idSender"
label = "Profile Id to send from"
placeholder = "Profile Id to send from"
variant = "outlined"
type = "number"
autoComplete = "off"
fullWidth
onChange = { handleChange }
onBlur = { handleBlur }
value = { values . idSender || '' }
/ >
2018-12-03 20:54:24 +00:00
< TextField
margin = "normal"
id = "idReceiver"
name = "idReceiver"
label = "Receiver of funds"
placeholder = "Receiver of funds"
variant = "outlined"
helperText = "Destination of the amount, can be a Giver/Project sending to a Giver, a Delegate or a Project; a Delegate sending to another Delegate, or a Delegate pre-commiting it to a Project"
autoComplete = "off"
fullWidth
onChange = { handleChange }
onBlur = { handleBlur }
value = { values . idReceiver || '' }
/ >
< / DialogContent >
< DialogActions >
< Button onClick = { handleClose } color = "primary" >
Cancel
< / Button >
2018-12-04 19:39:45 +00:00
< Button onClick = { submitForm } color = "primary" type = "submit" >
Transfer
2018-12-03 20:54:24 +00:00
< / Button >
< / DialogActions >
< / Dialog >
< / form >
) }
< / Formik >
)
2018-12-03 20:22:51 +00:00
export default TransferDialog