diff --git a/app/components/Voting.js b/app/components/Voting.js
index 8b1aa7d..a465edc 100644
--- a/app/components/Voting.js
+++ b/app/components/Voting.js
@@ -26,7 +26,7 @@ class Voting extends PureComponent {
- {rawPolls && }
+ {rawPolls && }
}
diff --git a/app/components/simple-voting/PollsList.js b/app/components/simple-voting/PollsList.js
index 22fe788..531d827 100644
--- a/app/components/simple-voting/PollsList.js
+++ b/app/components/simple-voting/PollsList.js
@@ -9,12 +9,14 @@ import Tooltip from '@material-ui/core/Tooltip';
import PollManager from 'Embark/contracts/PollManager';
import MiniMeTokenInterface from 'Embark/contracts/MiniMeTokenInterface';
import web3 from "Embark/web3"
+import CircularProgress from '@material-ui/core/CircularProgress';
+import { VotingContext } from '../../context';
class Poll extends Component {
constructor(props){
super(props);
- this.state = { value: 0, balance: 0, isSubmitting: false, ...props };
+ this.state = { value: 0, balance: 0, isSubmitting: false };
}
handleChange = (event, value) => {
@@ -27,41 +29,39 @@ class Poll extends Component {
this.setState({isSubmitting: true});
const { customVote, poll, unvote } = PollManager.methods;
- const { idPoll, value } = this.state;
+ const { updatePoll, idPoll } = this.props;
+ const { value } = this.state;
const { toWei } = web3.utils;
const balance4Voting = toWei(value * value);
const toSend = balance4Voting == 0 ? unvote(idPoll) : customVote(idPoll, balance4Voting);
-
+
toSend.estimateGas()
- .then(gasEstimated => {
- console.log("voting gas estimated: " + gasEstimated);
- return toSend.send({gas: gasEstimated + 100000});
- })
- .then(res => {
- console.log('sucess:', res);
- this.setState({isSubmitting: false});
- return poll(idPoll).call();
- })
- .then(poll => {
- this.setState(poll);
- })
- .catch(res => {
- console.log('fail:', res);
- })
- .finally(() => {
- this.setState({isSubmitting: false});
- });
+ .then(gasEstimated => {
+ console.log("voting gas estimated: " + gasEstimated);
+ return toSend.send({gas: gasEstimated + 100000});
+ })
+ .then(res => {
+ console.log('sucess:', res);
+ this.setState({isSubmitting: false});
+ return updatePoll(idPoll);
+ })
+ .catch(res => {
+ console.log('fail:', res);
+ })
+ .finally(() => {
+ this.setState({isSubmitting: false});
+ });
}
componentDidMount() {
const { fromWei } = web3.utils;
MiniMeTokenInterface.options.address = this.props._token;
MiniMeTokenInterface.methods.balanceOfAt(web3.eth.defaultAccount, this.props._startBlock - 1)
- .call()
- .then(balance => {
- this.setState({balance: fromWei(balance)});
- });
+ .call()
+ .then(balance => {
+ this.setState({balance: fromWei(balance)});
+ });
PollManager.methods.getVote(this.props.idPoll, web3.eth.defaultAccount)
.call()
@@ -71,16 +71,15 @@ class Poll extends Component {
}
render(){
- const { _description,
- _totalCensus,
- _voters,
- _qvResults,
- _results,
- _canVote,
- value,
- isSubmitting,
- balance,
- votes } = this.state;
+ const {
+ _description,
+ _totalCensus,
+ _voters,
+ _qvResults,
+ _results,
+ _canVote,
+ } = this.props;
+ const { value, balance, isSubmitting } = this.state;
const disableVote = balance == 0 || !_canVote || isSubmitting;
const { fromWei } = web3.utils;
@@ -101,21 +100,25 @@ class Poll extends Component {
-
+
-
-
-
+ {isSubmitting ? : }
+
+
)
}
}
-const PollsList = ({ rawPolls }) => (
-
- {rawPolls.map((poll, idx) => )}
-
+const PollsList = () => (
+
+ {({ updatePoll, rawPolls }) =>
+
+ {rawPolls.map((poll, idx) => )}
+
+ }
+
)
export default PollsList
diff --git a/app/dapp.js b/app/dapp.js
index 76a7a31..aa3407a 100644
--- a/app/dapp.js
+++ b/app/dapp.js
@@ -45,6 +45,15 @@ class App extends React.Component {
else this.setState({ rawPolls: [] });
}
+ updatePoll = async (idPoll) => {
+ const { poll } = PollManager.methods;
+ const { rawPolls } = this.state;
+ const newPolls = [...rawPolls];
+ const updatedPoll = await poll(idPoll).call();
+ newPolls[idPoll] = updatedPoll;
+ this.setState({ rawPolls: newPolls });
+ }
+
_renderStatus(title, available) {
let className = available ? 'pull-right status-online' : 'pull-right status-offline';
return
@@ -55,9 +64,9 @@ class App extends React.Component {
render(){
const { admin, rawPolls } = this.state;
- const { _getPolls } = this;
+ const { _getPolls, updatePoll } = this;
const toggleAdmin = () => this.setState({ admin: true });
- const votingContext = { getPolls: _getPolls, rawPolls, toggleAdmin };
+ const votingContext = { getPolls: _getPolls, rawPolls, toggleAdmin, updatePoll };
return (