|
|
|
@ -30,6 +30,7 @@ const makeMapStateToProps = () => {
|
|
|
|
|
const mapStateToProps = (state, { statusId }) => ({
|
|
|
|
|
status: getStatus(state, { id: statusId }),
|
|
|
|
|
askReplyConfirmation: state.getIn(['compose', 'text']).trim().length !== 0,
|
|
|
|
|
showReplyCount: state.getIn(['local_settings', 'show_reply_count']),
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return mapStateToProps;
|
|
|
|
@ -49,6 +50,7 @@ class Footer extends ImmutablePureComponent {
|
|
|
|
|
intl: PropTypes.object.isRequired,
|
|
|
|
|
dispatch: PropTypes.func.isRequired,
|
|
|
|
|
askReplyConfirmation: PropTypes.bool,
|
|
|
|
|
showReplyCount: PropTypes.bool,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
_performReply = () => {
|
|
|
|
@ -98,7 +100,7 @@ class Footer extends ImmutablePureComponent {
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
render () {
|
|
|
|
|
const { status, intl } = this.props;
|
|
|
|
|
const { status, intl, showReplyCount } = this.props;
|
|
|
|
|
|
|
|
|
|
const publicStatus = ['public', 'unlisted'].includes(status.get('visibility'));
|
|
|
|
|
const reblogPrivate = status.getIn(['account', 'id']) === me && status.get('visibility') === 'private';
|
|
|
|
@ -125,9 +127,32 @@ class Footer extends ImmutablePureComponent {
|
|
|
|
|
reblogTitle = intl.formatMessage(messages.cannot_reblog);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let replyButton = null;
|
|
|
|
|
if (showReplyCount) {
|
|
|
|
|
replyButton = (
|
|
|
|
|
<IconButton
|
|
|
|
|
className='status__action-bar-button'
|
|
|
|
|
title={replyTitle}
|
|
|
|
|
icon={status.get('in_reply_to_account_id') === status.getIn(['account', 'id']) ? 'reply' : replyIcon}
|
|
|
|
|
onClick={this.handleReplyClick}
|
|
|
|
|
counter={status.get('replies_count')}
|
|
|
|
|
obfuscateCount
|
|
|
|
|
/>
|
|
|
|
|
);
|
|
|
|
|
} else {
|
|
|
|
|
replyButton = (
|
|
|
|
|
<IconButton
|
|
|
|
|
className='status__action-bar-button'
|
|
|
|
|
title={replyTitle}
|
|
|
|
|
icon={status.get('in_reply_to_account_id') === status.getIn(['account', 'id']) ? 'reply' : replyIcon}
|
|
|
|
|
onClick={this.handleReplyClick}
|
|
|
|
|
/>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<div className='picture-in-picture__footer'>
|
|
|
|
|
<IconButton className='status__action-bar-button' title={replyTitle} icon={status.get('in_reply_to_account_id') === status.getIn(['account', 'id']) ? 'reply' : replyIcon} onClick={this.handleReplyClick} counter={status.get('replies_count')} obfuscateCount />
|
|
|
|
|
{replyButton}
|
|
|
|
|
<IconButton className={classNames('status__action-bar-button', { reblogPrivate })} disabled={!publicStatus && !reblogPrivate} active={status.get('reblogged')} pressed={status.get('reblogged')} title={reblogTitle} icon='retweet' onClick={this.handleReblogClick} counter={status.get('reblogs_count')} />
|
|
|
|
|
<IconButton className='status__action-bar-button star-icon' animate active={status.get('favourited')} pressed={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} counter={status.get('favourites_count')} />
|
|
|
|
|
</div>
|
|
|
|
|