add error handling to add poll

This commit is contained in:
Barry Gitarts 2018-06-28 10:53:33 -04:00
parent e33e07cf0f
commit 394f7916d4
1 changed files with 21 additions and 20 deletions

View File

@ -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)