add error handling to add poll
This commit is contained in:
parent
e33e07cf0f
commit
394f7916d4
|
@ -5,7 +5,7 @@ import CardContent from '@material-ui/core/CardContent';
|
||||||
import PollManager from 'Embark/contracts/PollManager';
|
import PollManager from 'Embark/contracts/PollManager';
|
||||||
import TextField from '@material-ui/core/TextField';
|
import TextField from '@material-ui/core/TextField';
|
||||||
import Button from '@material-ui/core/Button';
|
import Button from '@material-ui/core/Button';
|
||||||
import LinearProgress from '@material-ui/core/LinearProgress';
|
import CircularProgress from '@material-ui/core/CircularProgress';
|
||||||
import { withStyles } from '@material-ui/core/styles';
|
import { withStyles } from '@material-ui/core/styles';
|
||||||
import { withFormik } from 'formik';
|
import { withFormik } from 'formik';
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ const InnerForm = ({
|
||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
margin="normal"
|
margin="normal"
|
||||||
fullWidth
|
fullWidth
|
||||||
error={errors.description}
|
error={!!errors.description}
|
||||||
InputProps={{
|
InputProps={{
|
||||||
classes: {
|
classes: {
|
||||||
input: classes.textFieldInput
|
input: classes.textFieldInput
|
||||||
|
@ -67,10 +67,11 @@ const InnerForm = ({
|
||||||
InputLabelProps={{
|
InputLabelProps={{
|
||||||
className: classes.textFieldFormLabel
|
className: classes.textFieldFormLabel
|
||||||
}}
|
}}
|
||||||
|
helperText={errors.description}
|
||||||
/>
|
/>
|
||||||
{!isSubmitting ?
|
{!isSubmitting ?
|
||||||
<Button type="submit" variant="extendedFab" aria-label="add" className={classes.button}>Submit</Button> :
|
<Button type="submit" variant="extendedFab" aria-label="add" className={classes.button}>Submit</Button> :
|
||||||
<LinearProgress />
|
<CircularProgress style={{ margin: '10px 10px 10px 50%' }} />
|
||||||
}
|
}
|
||||||
</form>
|
</form>
|
||||||
</CardContent>
|
</CardContent>
|
||||||
|
@ -86,7 +87,7 @@ const AddPoll = withFormik({
|
||||||
if(description.toString().trim() === "") errors.description = true;
|
if(description.toString().trim() === "") errors.description = true;
|
||||||
return errors;
|
return errors;
|
||||||
},
|
},
|
||||||
async handleSubmit(values, { setSubmitting, props }) {
|
async handleSubmit(values, { setSubmitting, setErrors, props }) {
|
||||||
const { description } = values;
|
const { description } = values;
|
||||||
const { eth: { getBlockNumber }, utils: { asciiToHex } } = window.web3;
|
const { eth: { getBlockNumber }, utils: { asciiToHex } } = window.web3;
|
||||||
const { addPoll } = PollManager.methods;
|
const { addPoll } = PollManager.methods;
|
||||||
|
@ -97,22 +98,22 @@ const AddPoll = withFormik({
|
||||||
setSubmitting(true);
|
setSubmitting(true);
|
||||||
|
|
||||||
toSend.estimateGas()
|
toSend.estimateGas()
|
||||||
.then(gasEstimated => {
|
.then(gasEstimated => {
|
||||||
console.log("addPoll gas estimated: "+gasEstimated);
|
console.log("addPoll gas estimated: "+gasEstimated);
|
||||||
return toSend.send({gas: gasEstimated + 1000});
|
return toSend.send({gas: gasEstimated + 100000});
|
||||||
})
|
})
|
||||||
.then(res => {
|
.then(res => {
|
||||||
console.log('sucess:', res);
|
console.log('sucess:', res);
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
})
|
props.togglePoll();
|
||||||
.catch(res => {
|
})
|
||||||
console.log('fail:', res);
|
.catch(res => {
|
||||||
})
|
console.log('fail:', res);
|
||||||
.finally(() => {
|
setErrors({ 'description': res.message.split('Error:').pop().trim() });
|
||||||
setSubmitting(false);
|
})
|
||||||
props.togglePoll();
|
.finally(() => {
|
||||||
});
|
setSubmitting(false);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
})(StyledForm)
|
})(StyledForm)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue