Use dropdown for reposts, do not display cards for quote posts

Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
This commit is contained in:
marcin mikołajczak
2022-01-23 22:15:25 +01:00
parent 361831f021
commit 289cdcc776
8 changed files with 120 additions and 18 deletions

View File

@@ -53,6 +53,7 @@ const messages = defineMessages({
reactionCry: { id: 'status.reactions.cry', defaultMessage: 'Sad' },
reactionWeary: { id: 'status.reactions.weary', defaultMessage: 'Weary' },
emojiPickerExpand: { id: 'status.reactions_expand', defaultMessage: 'Select emoji' },
quotePost: { id: 'status.quote', defaultMessage: 'Quote post' },
});
const mapStateToProps = state => {
@@ -87,6 +88,7 @@ class ActionBar extends React.PureComponent {
status: ImmutablePropTypes.map.isRequired,
onReply: PropTypes.func.isRequired,
onReblog: PropTypes.func.isRequired,
onQuote: PropTypes.func.isRequired,
onFavourite: PropTypes.func.isRequired,
onEmojiReact: PropTypes.func.isRequired,
onDelete: PropTypes.func.isRequired,
@@ -143,6 +145,15 @@ class ActionBar extends React.PureComponent {
}
}
handleQuoteClick = () => {
const { me, onQuote, onOpenUnauthorizedModal, status } = this.props;
if (me) {
onQuote(status, this.context.router.history);
} else {
onOpenUnauthorizedModal('REBLOG');
}
}
handleBookmarkClick = () => {
this.props.onBookmark(this.props.status);
}
@@ -319,6 +330,47 @@ class ActionBar extends React.PureComponent {
'😩': messages.reactionWeary,
}[meEmojiReact] || messages.favourite);
let reblogButton;
if (me && features.quotePosts) {
const reblogMenu = [
{
text: intl.formatMessage(status.get('reblogged') ? messages.cancel_reblog_private : messages.reblog),
action: this.handleReblogClick,
icon: require('@tabler/icons/icons/repeat.svg'),
},
{
text: intl.formatMessage(messages.quotePost),
action: this.handleQuoteClick,
icon: require('@tabler/icons/icons/quote.svg'),
},
];
reblogButton = (
<DropdownMenuContainer
items={reblogMenu}
disabled={!publicStatus}
active={status.get('reblogged')}
pressed={status.get('reblogged')}
title={!publicStatus ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)}
src={require('@tabler/icons/icons/repeat.svg')}
direction='right'
text={intl.formatMessage(messages.reblog)}
/>
);
} else {
reblogButton = (
<IconButton
disabled={reblog_disabled}
active={status.get('reblogged')}
title={reblog_disabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)}
src={reblogIcon}
onClick={this.handleReblogClick}
text={intl.formatMessage(messages.reblog)}
/>
);
}
const menu = [];
if (publicStatus) {
@@ -497,14 +549,7 @@ class ActionBar extends React.PureComponent {
/>
</div>
<div className='detailed-status__button'>
<IconButton
disabled={reblog_disabled}
active={status.get('reblogged')}
title={reblog_disabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)}
src={reblogIcon}
onClick={this.handleReblogClick}
text={intl.formatMessage(messages.reblog)}
/>
{reblogButton}
</div>
<div
className='detailed-status__button detailed-status__button--favourite'

View File

@@ -157,7 +157,7 @@ class DetailedStatus extends ImmutablePureComponent {
/>
);
}
} else if (status.get('spoiler_text').length === 0) {
} else if (status.get('spoiler_text').length === 0 && !status.getIn(['pleroma', 'quote'])) {
media = <Card onOpenMedia={this.props.onOpenMedia} card={status.get('card', null)} />;
}

View File

@@ -29,6 +29,8 @@ class QuotedStatus extends ImmutablePureComponent {
}
this.context.router.history.push(`/@${this.props.status.getIn(['account', 'acct'])}/posts/${this.props.status.get('id')}`);
e.preventDefault();
}
}