import React, { useContext } from 'react'; import { animation, Menu } from 'react-contexify'; import _ from 'underscore'; import { useAvatarPath, useConversationPropsById, useConversationUsername, } from '../../hooks/useParamSelector'; import { ConversationTypeEnum } from '../../models/conversation'; import { ContextConversationId } from '../leftpane/conversation-list-item/ConversationListItem'; import { getBanMenuItem, getBlockMenuItem, getChangeNicknameMenuItem, getClearNicknameMenuItem, getCopyMenuItem, getDeleteContactMenuItem, getDeleteMessagesMenuItem, getInviteContactMenuItem, getLeaveGroupMenuItem, getMarkAllReadMenuItem, getNotificationForConvoMenuItem, getPinConversationMenuItem, getShowUserDetailsMenuItem, getUnbanMenuItem, } from './Menu'; export type PropsContextConversationItem = { triggerId: string; }; const ConversationListItemContextMenu = (props: PropsContextConversationItem) => { const conversationId = useContext(ContextConversationId); const itemMenuProps = useConversationPropsById(conversationId); const { triggerId } = props; if (!itemMenuProps) { return null; } const { isBlocked, isMe, isPublic, hasNickname, type, left, isKickedFromGroup, currentNotificationSetting, isPrivate, weAreAdmin, } = itemMenuProps; const isGroup = type === 'group'; const userName = useConversationUsername(conversationId); const avatarPath = useAvatarPath(conversationId); return (
); }; function propsAreEqual(prev: PropsContextConversationItem, next: PropsContextConversationItem) { return _.isEqual(prev, next); } export const MemoConversationListItemContextMenu = React.memo( ConversationListItemContextMenu, propsAreEqual );