Add "Show poll" link to quoted poll
This commit is contained in:
parent
f49c59bc02
commit
815766cc54
4 changed files with 20 additions and 4 deletions
|
@ -39,6 +39,9 @@ class Poll extends ImmutablePureComponent {
|
|||
|
||||
static getDerivedStateFromProps (props, state) {
|
||||
const { poll, intl } = props;
|
||||
if (!poll) {
|
||||
return null;
|
||||
}
|
||||
const expires_at = poll.get('expires_at');
|
||||
const expired = poll.get('expired') || expires_at !== null && (new Date(expires_at)).getTime() < intl.now();
|
||||
return (expired === state.expired) ? null : { expired };
|
||||
|
@ -59,7 +62,7 @@ class Poll extends ImmutablePureComponent {
|
|||
_setupTimer () {
|
||||
const { poll, intl } = this.props;
|
||||
clearTimeout(this._timer);
|
||||
if (!this.state.expired) {
|
||||
if (!this.state.expired && !!poll) {
|
||||
const delay = (new Date(poll.get('expires_at'))).getTime() - intl.now();
|
||||
this._timer = setTimeout(() => {
|
||||
this.setState({ expired: true });
|
||||
|
|
|
@ -183,6 +183,7 @@ export default class StatusContent extends React.PureComponent {
|
|||
const hidden = this.props.onExpandedToggle ? !this.props.expanded : this.state.hidden;
|
||||
const renderReadMore = this.props.onClick && status.get('collapsed');
|
||||
const renderViewThread = this.props.showThread && status.get('in_reply_to_id') && status.get('in_reply_to_account_id') === status.getIn(['account', 'id']);
|
||||
const renderShowPoll = !!status.get('poll');
|
||||
|
||||
const content = { __html: status.get('contentHtml') };
|
||||
const spoilerContent = { __html: status.get('spoilerHtml') };
|
||||
|
@ -204,6 +205,16 @@ export default class StatusContent extends React.PureComponent {
|
|||
</button>
|
||||
);
|
||||
|
||||
const showPollButton = (
|
||||
<button className='status__content__read-more-button' onClick={this.props.onClick} key='show-poll'>
|
||||
<FormattedMessage id='status.show_poll' defaultMessage='Show poll' /><Icon id='angle-right' fixedWidth />
|
||||
</button>
|
||||
);
|
||||
|
||||
const pollContainer = (
|
||||
<PollContainer pollId={status.get('poll')} />
|
||||
);
|
||||
|
||||
if (status.get('spoiler_text').length > 0) {
|
||||
let mentionsPlaceholder = '';
|
||||
|
||||
|
@ -231,7 +242,7 @@ export default class StatusContent extends React.PureComponent {
|
|||
|
||||
<div tabIndex={!hidden ? 0 : null} className={`status__content__text ${!hidden ? 'status__content__text--visible' : ''} translate`} dangerouslySetInnerHTML={content} />
|
||||
|
||||
{!quote && !hidden && !!status.get('poll') && <PollContainer pollId={status.get('poll')} />}
|
||||
{!hidden && renderShowPoll && quote ? showPollButton : pollContainer}
|
||||
|
||||
{renderViewThread && showThreadButton}
|
||||
</div>
|
||||
|
@ -241,7 +252,7 @@ export default class StatusContent extends React.PureComponent {
|
|||
<div className={classNames} ref={this.setRef} tabIndex='0' onMouseDown={this.handleMouseDown} onMouseUp={this.handleMouseUp} key='status-content' onMouseEnter={this.handleMouseEnter} onMouseLeave={this.handleMouseLeave}>
|
||||
<div className='status__content__text status__content__text--visible translate' dangerouslySetInnerHTML={content} />
|
||||
|
||||
{!quote && !!status.get('poll') && <PollContainer pollId={status.get('poll')} />}
|
||||
{renderShowPoll && quote ? showPollButton : pollContainer}
|
||||
|
||||
{renderViewThread && showThreadButton}
|
||||
</div>,
|
||||
|
@ -257,7 +268,7 @@ export default class StatusContent extends React.PureComponent {
|
|||
<div className={classNames} ref={this.setRef} tabIndex='0' onMouseEnter={this.handleMouseEnter} onMouseLeave={this.handleMouseLeave}>
|
||||
<div className='status__content__text status__content__text--visible translate' dangerouslySetInnerHTML={content} />
|
||||
|
||||
{!quote && !!status.get('poll') && <PollContainer pollId={status.get('poll')} />}
|
||||
{renderShowPoll && quote ? showPollButton : pollContainer}
|
||||
|
||||
{renderViewThread && showThreadButton}
|
||||
</div>
|
||||
|
|
|
@ -420,6 +420,7 @@
|
|||
"status.show_less_all": "Show less for all",
|
||||
"status.show_more": "Show more",
|
||||
"status.show_more_all": "Show more for all",
|
||||
"status.show_poll": "Show poll",
|
||||
"status.show_thread": "Show thread",
|
||||
"status.uncached_media_warning": "Not available",
|
||||
"status.unmute_conversation": "Unmute conversation",
|
||||
|
|
|
@ -421,6 +421,7 @@
|
|||
"status.show_less_all": "全て隠す",
|
||||
"status.show_more": "もっと見る",
|
||||
"status.show_more_all": "全て見る",
|
||||
"status.show_poll": "アンケートを表示",
|
||||
"status.show_thread": "スレッドを表示",
|
||||
"status.uncached_media_warning": "利用できません",
|
||||
"status.unmute_conversation": "会話のミュートを解除",
|
||||
|
|
Loading…
Reference in a new issue