import { FormattedMessage } from 'react-intl'; import { isEqual } from 'lodash'; import AlternateEmailIcon from '@/material-icons/400-24px/alternate_email.svg?react'; import ReplyIcon from '@/material-icons/400-24px/reply-fill.svg?react'; import { me } from 'mastodon/initial_state'; import type { NotificationGroupMention } from 'mastodon/models/notification_group'; import type { Status } from 'mastodon/models/status'; import { useAppSelector } from 'mastodon/store'; import type { LabelRenderer } from './notification_group_with_status'; import { NotificationWithStatus } from './notification_with_status'; const mentionLabelRenderer: LabelRenderer = () => ( ); const privateMentionLabelRenderer: LabelRenderer = () => ( ); const replyLabelRenderer: LabelRenderer = () => ( ); const privateReplyLabelRenderer: LabelRenderer = () => ( ); export const NotificationMention: React.FC<{ notification: NotificationGroupMention; unread: boolean; }> = ({ notification, unread }) => { const [isDirect, isReply] = useAppSelector((state) => { const status = state.statuses.get(notification.statusId) as | Status | undefined; if (!status) return [false, false] as const; return [ status.get('visibility') === 'direct', status.get('in_reply_to_account_id') === me, ] as const; }, isEqual); let labelRenderer = mentionLabelRenderer; if (isReply && isDirect) labelRenderer = privateReplyLabelRenderer; else if (isReply) labelRenderer = replyLabelRenderer; else if (isDirect) labelRenderer = privateMentionLabelRenderer; return ( ); };