|
|
|
@ -67,6 +67,9 @@ class Status extends ImmutablePureComponent { |
|
|
|
|
id: PropTypes.string, |
|
|
|
|
status: ImmutablePropTypes.map, |
|
|
|
|
account: ImmutablePropTypes.map, |
|
|
|
|
previousId: PropTypes.string, |
|
|
|
|
nextInReplyToId: PropTypes.string, |
|
|
|
|
rootId: PropTypes.string, |
|
|
|
|
onReply: PropTypes.func, |
|
|
|
|
onFavourite: PropTypes.func, |
|
|
|
|
onReblog: PropTypes.func, |
|
|
|
@ -518,6 +521,9 @@ class Status extends ImmutablePureComponent { |
|
|
|
|
unread, |
|
|
|
|
featured, |
|
|
|
|
pictureInPicture, |
|
|
|
|
previousId, |
|
|
|
|
nextInReplyToId, |
|
|
|
|
rootId, |
|
|
|
|
...other |
|
|
|
|
} = this.props; |
|
|
|
|
const { isCollapsed, forceFilter } = this.state; |
|
|
|
@ -561,6 +567,8 @@ class Status extends ImmutablePureComponent { |
|
|
|
|
openMedia: this.handleHotkeyOpenMedia, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
let prepend, rebloggedByText; |
|
|
|
|
|
|
|
|
|
if (hidden) { |
|
|
|
|
return ( |
|
|
|
|
<HotKeys handlers={handlers}> |
|
|
|
@ -572,7 +580,11 @@ class Status extends ImmutablePureComponent { |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const connectUp = previousId && previousId === status.get('in_reply_to_id'); |
|
|
|
|
const connectToRoot = rootId && rootId === status.get('in_reply_to_id'); |
|
|
|
|
const connectReply = nextInReplyToId && nextInReplyToId === status.get('id'); |
|
|
|
|
const matchedFilters = status.get('matched_filters'); |
|
|
|
|
|
|
|
|
|
if (this.state.forceFilter === undefined ? matchedFilters : this.state.forceFilter) { |
|
|
|
|
const minHandlers = this.props.muted ? {} : { |
|
|
|
|
moveUp: this.handleHotkeyMoveUp, |
|
|
|
@ -726,8 +738,6 @@ class Status extends ImmutablePureComponent { |
|
|
|
|
'data-status-by': `@${status.getIn(['account', 'acct'])}`, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
let prepend; |
|
|
|
|
|
|
|
|
|
if (this.props.prepend && account) { |
|
|
|
|
const notifKind = { |
|
|
|
|
favourite: 'favourited', |
|
|
|
@ -748,8 +758,6 @@ class Status extends ImmutablePureComponent { |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
let rebloggedByText; |
|
|
|
|
|
|
|
|
|
if (this.props.prepend === 'reblog') { |
|
|
|
|
rebloggedByText = intl.formatMessage({ id: 'status.reblogged_by', defaultMessage: '{name} boosted' }, { name: account.get('acct') }); |
|
|
|
|
} |
|
|
|
@ -758,6 +766,8 @@ class Status extends ImmutablePureComponent { |
|
|
|
|
collapsed: isCollapsed, |
|
|
|
|
'has-background': isCollapsed && background, |
|
|
|
|
'status__wrapper-reply': !!status.get('in_reply_to_id'), |
|
|
|
|
'status--in-thread': !!rootId, |
|
|
|
|
'status--first-in-thread': previousId && (!connectUp || connectToRoot), |
|
|
|
|
unread, |
|
|
|
|
muted, |
|
|
|
|
}, 'focusable'); |
|
|
|
@ -774,6 +784,9 @@ class Status extends ImmutablePureComponent { |
|
|
|
|
aria-label={textForScreenReader(intl, status, rebloggedByText, !status.get('hidden'))} |
|
|
|
|
> |
|
|
|
|
{!muted && prepend} |
|
|
|
|
|
|
|
|
|
{(connectReply || connectUp || connectToRoot) && <div className={classNames('status__line', { 'status__line--full': connectReply, 'status__line--first': !status.get('in_reply_to_id') && !connectToRoot })} />} |
|
|
|
|
|
|
|
|
|
<header className='status__info'> |
|
|
|
|
<span> |
|
|
|
|
{muted && prepend} |
|
|
|
|