72 lines
2.7 KiB
JavaScript
Raw Normal View History

2018-10-16 16:20:54 -04:00
import React, { PureComponent } from 'react';
import CssBaseline from '@material-ui/core/CssBaseline';
import 'typeface-roboto';
import AppBar from './standard/AppBar';
2018-06-26 16:34:52 -04:00
import AddPoll from './simple-voting/AddPoll';
2018-06-28 11:03:59 -04:00
import Collapse from '@material-ui/core/Collapse';
import LinearProgress from '@material-ui/core/LinearProgress';
import { VotingContext } from '../context';
2018-10-16 16:20:54 -04:00
import { Route, Switch } from "react-router-dom";
import TitleScreen from './flow/TitleScreen';
import LearnAboutBallots from './flow/LearnAboutBallots';
import HowVotingWorks from './flow/HowVotingWorks';
import ConnectYourWallet from './flow/ConnectYourWallet';
import OtherWallets from './flow/OtherWallets';
import VotingCredits from './flow/VotingCredits';
import PollVoting from './flow/PollVoting';
import ReviewVotes from './flow/ReviewVotes';
2018-10-16 16:20:54 -04:00
class Voting extends PureComponent {
2018-10-17 11:02:31 -04:00
state = {
addPoll: false,
pollTokenBalances: [],
votes: []
2018-10-17 11:02:31 -04:00
};
updatePollBalance = (pollId, tokenBalance, ethBalance) => {
const {pollTokenBalances} = this.state;
pollTokenBalances[pollId] = { tokenBalance, ethBalance };
this.setState({pollTokenBalances});
}
setVotesToReview = (votes) => {
this.setState({votes});
}
render(){
2018-10-17 11:02:31 -04:00
const { addPoll, pollTokenBalances } = this.state;
const togglePoll = () => { this.setState({ addPoll: !addPoll })};
return (
<VotingContext.Consumer>
2018-09-27 15:30:23 -04:00
{({ getPolls, rawPolls, loading, symbol }) =>
2018-06-29 07:22:07 -04:00
<div>
<CssBaseline />
2018-09-27 15:30:23 -04:00
<AppBar togglePoll={togglePoll} symbol={symbol} />
{loading && <LinearProgress />}
<Collapse in={addPoll}>
<AddPoll togglePoll={togglePoll} getPolls={getPolls} />
</Collapse>
2018-10-16 16:20:54 -04:00
<div id="votingDapp">
<Switch>
<Route exact path="/" render={() => <TitleScreen polls={rawPolls} />} />
<Route path="/learn" render={() => <LearnAboutBallots polls={rawPolls} />} />
2018-10-16 16:20:54 -04:00
<Route path="/votingHelp" render={HowVotingWorks} />
2018-10-17 11:02:31 -04:00
<Route path="/wallet" render={() => <ConnectYourWallet polls={rawPolls} updateBalances={this.updatePollBalance} />} />
2018-10-16 16:20:54 -04:00
<Route path="/otherWallets" render={OtherWallets} />
2018-10-17 11:02:31 -04:00
<Route path="/votingCredits" render={() => <VotingCredits polls={rawPolls} balances={pollTokenBalances} />} />
<Route path="/voting" render={() => <PollVoting polls={rawPolls} balances={pollTokenBalances} setVotesToReview={this.setVotesToReview} />} />
<Route path="/review" render={() => <ReviewVotes polls={rawPolls} />} />
2018-10-16 16:20:54 -04:00
</Switch>
</div>
2018-06-29 07:22:07 -04:00
</div>
}
</VotingContext.Consumer>
)
}
}
2018-10-16 16:20:54 -04:00
export default Voting;