import EmbarkJS from 'Embark/EmbarkJS'; import ERC20Token from 'Embark/contracts/ERC20Token'; import ProposalCuration from 'Embark/contracts/ProposalCuration'; import SNT from 'Embark/contracts/SNT'; import React, { PureComponent, Fragment } from 'react'; import { Form, FormGroup, FormControl, HelpBlock, Button, Alert } from 'react-bootstrap'; import web3 from "Embark/web3"; import { withFormik } from 'formik'; import FieldGroup from '../standard/FieldGroup'; import TokenPermissions from '../standard/TokenPermission' const { setSubmitPrice } = ProposalCuration.methods; class InnerForm extends PureComponent { constructor(props) { super(props); this.state = { submitPrice: "Loading...", canSubmit: true }; } componentDidMount(){ this._loadPrice(); } componentWillReceiveProps(){ this._loadPrice(); } _loadPrice(){ __embarkContext.execWhenReady(async () => { try { let _b = await ProposalCuration.methods.getSubmitPrice(web3.eth.defaultAccount).call(); this.setState({ submitPrice: _b, canSubmit: true }); } catch(err){ this.setState({ canSubmit: false, submitPrice: "-" }); } }); } setPrice = (address = web3.eth.defaultAccount, allowed = true, stakeValue = 1) => { setSubmitPrice(address, allowed, stakeValue) .send() .then(res => { this.setState({ ...this.state, canSubmit: true }); console.log(res); }) .catch(err => { console.log(err) }) } render() { const { values, errors, touched, handleChange, handleBlur, handleSubmit, isSubmitting, setFieldValue } = this.props; const { canSubmit } = this.state; return ( {!canSubmit && Account not allowed to submit proposals }

Add proposal

Price: {this.state.submitPrice}

) } } const ProposalManager = withFormik({ mapPropsToValues: props => ({ title: '', description: '', url: '', data: '0x00', value: '0', topic: '0x00', to: '0x0000000000000000000000000000000000000000' }), validate(values) {}, handleSubmit(values, { setSubmitting}){ let dataObj = { title: values.title, description: values.description, url: values.url, }; const { toHex } = web3.utils; const { submitProposal } = ProposalCuration.methods; EmbarkJS.Storage.saveText(JSON.stringify(dataObj)) .then(hash => { const hexHash = toHex(hash); //TODO create toggle for address approval submitProposal( values.topic, values.to, values.value, values.data, hexHash ) .send({from: web3.eth.defaultAccount, gasLimit: 1000000}) .then(res => { setSubmitting(false); console.log(res); }) .catch(err => { setSubmitting(false); //TODO show error console.log('Storage saveText Error: ', err.message) }); }) } })(InnerForm) export default ProposalManager;