import React, { Fragment } from 'react';
import ReactDOM from 'react-dom';
import EmbarkJS from 'Embark/EmbarkJS';
import PollManager from 'Embark/contracts/PollManager';
import AdminView from './components/AdminView';
import Voting from './components/Voting';
import SNT from 'Embark/contracts/SNT';
import { VotingContext } from './context';
window['SNT'] = SNT;
import './dapp.css';
const getPolls = (number, pollMethod) => {
const polls = [];
for (let i = number-1; i >= 0; i--) {
const poll = pollMethod(i).call();
polls.push(poll);
}
return Promise.all(polls.reverse());
}
class App extends React.Component {
constructor(props) {
super(props);
}
state = { admin: false };
componentDidMount(){
__embarkContext.execWhenReady(() => {
this._getPolls();
this._setVotingOptions();
});
}
setAccount(_account){
this.setState({account: _account});
}
_getPolls = async () => {
const { nPolls, poll } = PollManager.methods;
const polls = await nPolls.call();
const total = await polls.call();
if (total) getPolls(total, poll).then(rawPolls => { this.setState({ rawPolls })});
else this.setState({ rawPolls: [] });
}
_renderStatus(title, available) {
let className = available ? 'pull-right status-online' : 'pull-right status-offline';
return
{title}
;
}
render(){
const { admin, rawPolls } = this.state;
const { _getPolls } = this;
const toggleAdmin = () => this.setState({ admin: true });
const votingContext = { getPolls: _getPolls, rawPolls, toggleAdmin };
return (
{admin ?
:
}
);
}
}
ReactDOM.render(, document.getElementById('app'));