|
|
|
@ -1,4 +1,3 @@
|
|
|
|
|
import { List as ImmutableList } from 'immutable';
|
|
|
|
|
import React from 'react';
|
|
|
|
|
import { FormattedList, FormattedMessage } from 'react-intl';
|
|
|
|
|
import { Link } from 'react-router-dom';
|
|
|
|
@ -7,7 +6,7 @@ import { openModal } from 'soapbox/actions/modals';
|
|
|
|
|
import HoverRefWrapper from 'soapbox/components/hover_ref_wrapper';
|
|
|
|
|
import { useAppDispatch } from 'soapbox/hooks';
|
|
|
|
|
|
|
|
|
|
import type { Status } from 'soapbox/types/entities';
|
|
|
|
|
import type { Account, Status } from 'soapbox/types/entities';
|
|
|
|
|
|
|
|
|
|
interface IStatusReplyMentions {
|
|
|
|
|
status: Status,
|
|
|
|
@ -19,17 +18,19 @@ const StatusReplyMentions: React.FC<IStatusReplyMentions> = ({ status }) => {
|
|
|
|
|
const handleOpenMentionsModal: React.MouseEventHandler<HTMLSpanElement> = (e) => {
|
|
|
|
|
e.stopPropagation();
|
|
|
|
|
|
|
|
|
|
const account = status.account as Account;
|
|
|
|
|
|
|
|
|
|
dispatch(openModal('MENTIONS', {
|
|
|
|
|
username: status.getIn(['account', 'acct']),
|
|
|
|
|
statusId: status.get('id'),
|
|
|
|
|
username: account.acct,
|
|
|
|
|
statusId: status.id,
|
|
|
|
|
}));
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if (!status.get('in_reply_to_id')) {
|
|
|
|
|
if (!status.in_reply_to_id) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const to = status.get('mentions', ImmutableList());
|
|
|
|
|
const to = status.mentions;
|
|
|
|
|
|
|
|
|
|
// The post is a reply, but it has no mentions.
|
|
|
|
|
// Rare, but it can happen.
|
|
|
|
@ -46,14 +47,14 @@ const StatusReplyMentions: React.FC<IStatusReplyMentions> = ({ status }) => {
|
|
|
|
|
|
|
|
|
|
// The typical case with a reply-to and a list of mentions.
|
|
|
|
|
const accounts = to.slice(0, 2).map(account => (
|
|
|
|
|
<HoverRefWrapper accountId={account.get('id')} inline>
|
|
|
|
|
<Link to={`/@${account.get('acct')}`} className='reply-mentions__account'>@{account.get('username')}</Link>
|
|
|
|
|
<HoverRefWrapper key={account.id} accountId={account.id} inline>
|
|
|
|
|
<Link to={`/@${account.acct}`} className='reply-mentions__account'>@{account.username}</Link>
|
|
|
|
|
</HoverRefWrapper>
|
|
|
|
|
)).toArray();
|
|
|
|
|
|
|
|
|
|
if (to.size > 2) {
|
|
|
|
|
accounts.push(
|
|
|
|
|
<span className='hover:underline cursor-pointer' role='presentation' onClick={handleOpenMentionsModal}>
|
|
|
|
|
<span key='more' className='hover:underline cursor-pointer' role='presentation' onClick={handleOpenMentionsModal}>
|
|
|
|
|
<FormattedMessage id='reply_mentions.more' defaultMessage='{count} more' values={{ count: to.size - 2 }} />
|
|
|
|
|
</span>,
|
|
|
|
|
);
|
|
|
|
|