~cytrogen/masto-fe

b7910bc7512b8c08e6d4e8233e0d90aab0c7f35d — Eugen Rochko 2 years ago eb2417c
Add button to see results for polls in web UI (#25726)

2 files changed, 10 insertions(+), 4 deletions(-)

M app/javascript/mastodon/components/poll.jsx
M app/javascript/mastodon/locales/en.json
M app/javascript/mastodon/components/poll.jsx => app/javascript/mastodon/components/poll.jsx +9 -4
@@ 130,6 130,10 @@ class Poll extends ImmutablePureComponent {
    this.props.refresh();
  };

  handleReveal = () => {
    this.setState({ revealed: true });
  }

  renderOption (option, optionIndex, showResults) {
    const { poll, lang, disabled, intl } = this.props;
    const pollVotesCount  = poll.get('voters_count') || poll.get('votes_count');


@@ 205,14 209,14 @@ class Poll extends ImmutablePureComponent {

  render () {
    const { poll, intl } = this.props;
    const { expired } = this.state;
    const { revealed, expired } = this.state;

    if (!poll) {
      return null;
    }

    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);

    let votesCount = null;


@@ 231,9 235,10 @@ class Poll extends ImmutablePureComponent {

        <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 && !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}
          {poll.get('expires_at') && <span> · {timeRemaining}</span>}
          {poll.get('expires_at') && <> · {timeRemaining}</>}
        </div>
      </div>
    );

M app/javascript/mastodon/locales/en.json => app/javascript/mastodon/locales/en.json +1 -0
@@ 487,6 487,7 @@
  "picture_in_picture.restore": "Put it back",
  "poll.closed": "Closed",
  "poll.refresh": "Refresh",
  "poll.reveal": "See results",
  "poll.total_people": "{count, plural, one {# person} other {# people}}",
  "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
  "poll.vote": "Vote",