51 lines
1.3 KiB
TypeScript
51 lines
1.3 KiB
TypeScript
|
import { FormattedMessage } from 'react-intl';
|
||
|
|
||
|
import ReplyIcon from '@/material-icons/400-24px/reply.svg?react';
|
||
|
import { Icon } from 'mastodon/components/icon';
|
||
|
import { DisplayedName } from 'mastodon/features/notifications_v2/components/displayed_name';
|
||
|
import { useAppSelector } from 'mastodon/store';
|
||
|
|
||
|
export const StatusThreadLabel: React.FC<{
|
||
|
accountId: string;
|
||
|
inReplyToAccountId: string;
|
||
|
}> = ({ accountId, inReplyToAccountId }) => {
|
||
|
const inReplyToAccount = useAppSelector((state) =>
|
||
|
state.accounts.get(inReplyToAccountId),
|
||
|
);
|
||
|
|
||
|
let label;
|
||
|
|
||
|
if (accountId === inReplyToAccountId) {
|
||
|
label = (
|
||
|
<FormattedMessage
|
||
|
id='status.continued_thread'
|
||
|
defaultMessage='Continued thread'
|
||
|
/>
|
||
|
);
|
||
|
} else if (inReplyToAccount) {
|
||
|
label = (
|
||
|
<FormattedMessage
|
||
|
id='status.replied_to'
|
||
|
defaultMessage='Replied to {name}'
|
||
|
values={{ name: <DisplayedName accountIds={[inReplyToAccountId]} /> }}
|
||
|
/>
|
||
|
);
|
||
|
} else {
|
||
|
label = (
|
||
|
<FormattedMessage
|
||
|
id='status.replied_in_thread'
|
||
|
defaultMessage='Replied in thread'
|
||
|
/>
|
||
|
);
|
||
|
}
|
||
|
|
||
|
return (
|
||
|
<div className='status__prepend'>
|
||
|
<div className='status__prepend__icon'>
|
||
|
<Icon id='reply' icon={ReplyIcon} />
|
||
|
</div>
|
||
|
{label}
|
||
|
</div>
|
||
|
);
|
||
|
};
|