Merge branch '000-snt-voting-dapp' of https://github.com/status-im/contracts into 000-snt-voting-dapp

This commit is contained in:
Richard Ramos 2018-06-28 13:39:07 -04:00
commit ddc3cd5c55
5 changed files with 32 additions and 19 deletions

View File

@ -6,26 +6,30 @@ import AddPoll from './simple-voting/AddPoll';
import PollsList from './simple-voting/PollsList';
import StatusLogo from '../ui/components/StatusLogo';
import Collapse from '@material-ui/core/Collapse';
import { VotingContext } from '../context';
class Voting extends PureComponent {
state = { addPoll: false };
render(){
const { toggleAdmin, rawPolls } = this.props;
const { addPoll } = this.state;
const togglePoll = () => { this.setState({ addPoll: !addPoll })};
return (
<Fragment>
<CssBaseline />
<AppBar toggleAdmin={toggleAdmin} togglePoll={togglePoll} />
<div style={{ margin: '30px', textAlign: 'center' }}>
<img src="images/logo.png" width="200" />
</div>
<Collapse in={addPoll}>
<AddPoll togglePoll={togglePoll} />
</Collapse>
{rawPolls && <PollsList rawPolls={rawPolls} />}
</Fragment>
<VotingContext.Consumer>
{({ getPolls, rawPolls, toggleAdmin }) =>
<Fragment>
<CssBaseline />
<AppBar toggleAdmin={toggleAdmin} togglePoll={togglePoll} />
<div style={{ margin: '30px', textAlign: 'center' }}>
<img src="images/logo.png" width="200" />
</div>
<Collapse in={addPoll}>
<AddPoll togglePoll={togglePoll} getPolls={getPolls} />
</Collapse>
{rawPolls && <PollsList rawPolls={rawPolls} />}
</Fragment>
}
</VotingContext.Consumer>
)
}
}

View File

@ -106,6 +106,7 @@ const AddPoll = withFormik({
console.log('sucess:', res);
setSubmitting(false);
props.togglePoll();
props.getPolls();
})
.catch(res => {
console.log('fail:', res);

View File

@ -96,7 +96,7 @@ class Poll extends Component {
SNT Allocated: {_results}
</Typography>
</CardContent>
<Tooltip id="tooltip-icon" placement="top" title={`${value} votes`}>
<Tooltip id="tooltip-icon" placement="top" title={`${value * value} SNT - ${value} vote credits`}>
<CardActions>
<Slider disabled={disableVote} value={value} min={0} max={maxValue} step={1} onChange={this.handleChange} />
<Button variant="contained" disabled={disableVote} color="primary" onClick={this.handleClick}>Vote</Button>

3
app/context.js Normal file
View File

@ -0,0 +1,3 @@
import React from 'react';
export const VotingContext = React.createContext(null);

View File

@ -5,6 +5,7 @@ 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';
@ -36,7 +37,7 @@ class App extends React.Component {
this.setState({account: _account});
}
async _getPolls(){
_getPolls = async () => {
const { nPolls, poll } = PollManager.methods;
const polls = await nPolls.call();
const total = await polls.call();
@ -54,13 +55,17 @@ class App extends React.Component {
render(){
const { admin, rawPolls } = this.state;
const { _getPolls } = this;
const toggleAdmin = () => this.setState({ admin: true });
const votingContext = { getPolls: _getPolls, rawPolls, toggleAdmin };
return (
<Fragment>
{admin ?
<AdminView setAccount={this.setAccount} /> :
<Voting toggleAdmin={toggleAdmin} rawPolls={rawPolls} />}
</Fragment>
<VotingContext.Provider value={votingContext}>
<Fragment>
{admin ?
<AdminView setAccount={this.setAccount} /> :
<Voting />}
</Fragment>
</VotingContext.Provider>
);
}
}