import { Item, Menu } from 'react-contexify'; import { useSelector } from 'react-redux'; import { useConvoIdFromContext } from '../../contexts/ConvoIdContext'; import { useIsPinned, useIsPrivate, useIsPrivateAndFriend } from '../../hooks/useParamSelector'; import { getConversationController } from '../../session/conversations'; import { useIsSearching } from '../../state/selectors/search'; import { getIsMessageSection } from '../../state/selectors/section'; import { SessionContextMenuContainer } from '../SessionContextMenuContainer'; import { AcceptMsgRequestMenuItem, BanMenuItem, BlockMenuItem, ChangeNicknameMenuItem, ClearNicknameMenuItem, CopyMenuItem, DeclineAndBlockMsgRequestMenuItem, DeclineMsgRequestMenuItem, DeleteMessagesMenuItem, DeletePrivateConversationMenuItem, InviteContactMenuItem, LeaveGroupOrCommunityMenuItem, MarkAllReadMenuItem, MarkConversationUnreadMenuItem, NotificationForConvoMenuItem, ShowUserDetailsMenuItem, UnbanMenuItem, } from './Menu'; export type PropsContextConversationItem = { triggerId: string; }; const ConversationListItemContextMenu = (props: PropsContextConversationItem) => { const { triggerId } = props; const isSearching = useIsSearching(); if (isSearching) { return null; } return ( {/* Message request related actions */} {/* Generic actions */} {/* Read state actions */} {/* Nickname actions */} {/* Communities actions */} ); }; export const MemoConversationListItemContextMenu = ConversationListItemContextMenu; export const PinConversationMenuItem = (): JSX.Element | null => { const conversationId = useConvoIdFromContext(); const isMessagesSection = useSelector(getIsMessageSection); const isPrivateAndFriend = useIsPrivateAndFriend(conversationId); const isPrivate = useIsPrivate(conversationId); const isPinned = useIsPinned(conversationId); if (isMessagesSection && (!isPrivate || (isPrivate && isPrivateAndFriend))) { const conversation = getConversationController().get(conversationId); const togglePinConversation = () => { void conversation?.togglePinned(); }; const menuText = isPinned ? window.i18n('pinUnpinConversation') : window.i18n('pinConversation'); return {menuText}; } return null; };