|
|
@ -131,6 +131,10 @@ class Poll extends ImmutablePureComponent {
|
|
|
|
this.props.refresh();
|
|
|
|
this.props.refresh();
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
handleReveal = () => {
|
|
|
|
|
|
|
|
this.setState({ revealed: true });
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
renderOption (option, optionIndex, showResults) {
|
|
|
|
renderOption (option, optionIndex, showResults) {
|
|
|
|
const { poll, lang, disabled, intl } = this.props;
|
|
|
|
const { poll, lang, disabled, intl } = this.props;
|
|
|
|
const pollVotesCount = poll.get('voters_count') || poll.get('votes_count');
|
|
|
|
const pollVotesCount = poll.get('voters_count') || poll.get('votes_count');
|
|
|
@ -206,14 +210,14 @@ class Poll extends ImmutablePureComponent {
|
|
|
|
|
|
|
|
|
|
|
|
render () {
|
|
|
|
render () {
|
|
|
|
const { poll, intl } = this.props;
|
|
|
|
const { poll, intl } = this.props;
|
|
|
|
const { expired } = this.state;
|
|
|
|
const { revealed, expired } = this.state;
|
|
|
|
|
|
|
|
|
|
|
|
if (!poll) {
|
|
|
|
if (!poll) {
|
|
|
|
return null;
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const timeRemaining = expired ? intl.formatMessage(messages.closed) : <RelativeTimestamp timestamp={poll.get('expires_at')} futureDate />;
|
|
|
|
const timeRemaining = expired ? intl.formatMessage(messages.closed) : <RelativeTimestamp timestamp={poll.get('expires_at')} futureDate />;
|
|
|
|
const showResults = poll.get('voted') || expired;
|
|
|
|
const showResults = poll.get('voted') || revealed || expired;
|
|
|
|
const disabled = this.props.disabled || Object.entries(this.state.selected).every(item => !item);
|
|
|
|
const disabled = this.props.disabled || Object.entries(this.state.selected).every(item => !item);
|
|
|
|
|
|
|
|
|
|
|
|
let votesCount = null;
|
|
|
|
let votesCount = null;
|
|
|
@ -232,9 +236,10 @@ class Poll extends ImmutablePureComponent {
|
|
|
|
|
|
|
|
|
|
|
|
<div className='poll__footer'>
|
|
|
|
<div className='poll__footer'>
|
|
|
|
{!showResults && <button className='button button-secondary' disabled={disabled || !this.context.identity.signedIn} onClick={this.handleVote}><FormattedMessage id='poll.vote' defaultMessage='Vote' /></button>}
|
|
|
|
{!showResults && <button className='button button-secondary' disabled={disabled || !this.context.identity.signedIn} onClick={this.handleVote}><FormattedMessage id='poll.vote' defaultMessage='Vote' /></button>}
|
|
|
|
{showResults && !this.props.disabled && <span><button className='poll__link' onClick={this.handleRefresh}><FormattedMessage id='poll.refresh' defaultMessage='Refresh' /></button> · </span>}
|
|
|
|
{!showResults && <><button className='poll__link' onClick={this.handleReveal}><FormattedMessage id='poll.reveal' defaultMessage='See results' /></button> · </>}
|
|
|
|
|
|
|
|
{showResults && !this.props.disabled && <><button className='poll__link' onClick={this.handleRefresh}><FormattedMessage id='poll.refresh' defaultMessage='Refresh' /></button> · </>}
|
|
|
|
{votesCount}
|
|
|
|
{votesCount}
|
|
|
|
{poll.get('expires_at') && <span> · {timeRemaining}</span>}
|
|
|
|
{poll.get('expires_at') && <> · {timeRemaining}</>}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
);
|
|
|
|