Add "Show poll" link to quoted poll
This commit is contained in:
parent
1ee56bbb35
commit
bcd114ed55
@ -39,6 +39,9 @@ class Poll extends ImmutablePureComponent {
|
|||||||
|
|
||||||
static getDerivedStateFromProps (props, state) {
|
static getDerivedStateFromProps (props, state) {
|
||||||
const { poll, intl } = props;
|
const { poll, intl } = props;
|
||||||
|
if (!poll) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
const expires_at = poll.get('expires_at');
|
const expires_at = poll.get('expires_at');
|
||||||
const expired = poll.get('expired') || expires_at !== null && (new Date(expires_at)).getTime() < intl.now();
|
const expired = poll.get('expired') || expires_at !== null && (new Date(expires_at)).getTime() < intl.now();
|
||||||
return (expired === state.expired) ? null : { expired };
|
return (expired === state.expired) ? null : { expired };
|
||||||
@ -59,7 +62,7 @@ class Poll extends ImmutablePureComponent {
|
|||||||
_setupTimer () {
|
_setupTimer () {
|
||||||
const { poll, intl } = this.props;
|
const { poll, intl } = this.props;
|
||||||
clearTimeout(this._timer);
|
clearTimeout(this._timer);
|
||||||
if (!this.state.expired) {
|
if (!this.state.expired && !!poll) {
|
||||||
const delay = (new Date(poll.get('expires_at'))).getTime() - intl.now();
|
const delay = (new Date(poll.get('expires_at'))).getTime() - intl.now();
|
||||||
this._timer = setTimeout(() => {
|
this._timer = setTimeout(() => {
|
||||||
this.setState({ expired: true });
|
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 hidden = this.props.onExpandedToggle ? !this.props.expanded : this.state.hidden;
|
||||||
const renderReadMore = this.props.onClick && status.get('collapsed');
|
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 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 content = { __html: status.get('contentHtml') };
|
||||||
const spoilerContent = { __html: status.get('spoilerHtml') };
|
const spoilerContent = { __html: status.get('spoilerHtml') };
|
||||||
@ -204,6 +205,16 @@ export default class StatusContent extends React.PureComponent {
|
|||||||
</button>
|
</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) {
|
if (status.get('spoiler_text').length > 0) {
|
||||||
let mentionsPlaceholder = '';
|
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} />
|
<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}
|
{renderViewThread && showThreadButton}
|
||||||
</div>
|
</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={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} />
|
<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}
|
{renderViewThread && showThreadButton}
|
||||||
</div>,
|
</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={classNames} ref={this.setRef} tabIndex='0' onMouseEnter={this.handleMouseEnter} onMouseLeave={this.handleMouseLeave}>
|
||||||
<div className='status__content__text status__content__text--visible translate' dangerouslySetInnerHTML={content} />
|
<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}
|
{renderViewThread && showThreadButton}
|
||||||
</div>
|
</div>
|
||||||
|
@ -420,6 +420,7 @@
|
|||||||
"status.show_less_all": "Show less for all",
|
"status.show_less_all": "Show less for all",
|
||||||
"status.show_more": "Show more",
|
"status.show_more": "Show more",
|
||||||
"status.show_more_all": "Show more for all",
|
"status.show_more_all": "Show more for all",
|
||||||
|
"status.show_poll": "Show poll",
|
||||||
"status.show_thread": "Show thread",
|
"status.show_thread": "Show thread",
|
||||||
"status.uncached_media_warning": "Not available",
|
"status.uncached_media_warning": "Not available",
|
||||||
"status.unmute_conversation": "Unmute conversation",
|
"status.unmute_conversation": "Unmute conversation",
|
||||||
|
@ -421,6 +421,7 @@
|
|||||||
"status.show_less_all": "全て隠す",
|
"status.show_less_all": "全て隠す",
|
||||||
"status.show_more": "もっと見る",
|
"status.show_more": "もっと見る",
|
||||||
"status.show_more_all": "全て見る",
|
"status.show_more_all": "全て見る",
|
||||||
|
"status.show_poll": "アンケートを表示",
|
||||||
"status.show_thread": "スレッドを表示",
|
"status.show_thread": "スレッドを表示",
|
||||||
"status.uncached_media_warning": "利用できません",
|
"status.uncached_media_warning": "利用できません",
|
||||||
"status.unmute_conversation": "会話のミュートを解除",
|
"status.unmute_conversation": "会話のミュートを解除",
|
||||||
|
Loading…
Reference in New Issue
Block a user