session-desktop/ts/components/session/menu/ConversationListItemContextMenu.tsx

63 lines
1.7 KiB
TypeScript
Raw Normal View History

2021-06-07 00:36:48 +02:00
import React, { useState } from 'react';
2020-10-22 07:34:41 +02:00
import { animation, Menu } from 'react-contexify';
import { ConversationTypeEnum } from '../../../models/conversation';
2020-10-22 07:34:41 +02:00
import {
getBlockMenuItem,
getChangeNicknameMenuItem,
2020-10-22 07:34:41 +02:00
getClearNicknameMenuItem,
getCopyMenuItem,
getDeleteContactMenuItem,
getDeleteMessagesMenuItem,
getInviteContactMenuItem,
getLeaveGroupMenuItem,
2021-03-21 23:55:49 +01:00
getMarkAllReadMenuItem,
2020-10-22 07:34:41 +02:00
} from './Menu';
export type PropsContextConversationItem = {
2021-06-07 00:36:48 +02:00
id: string;
2020-10-22 07:34:41 +02:00
triggerId: string;
type: ConversationTypeEnum;
2020-10-22 07:34:41 +02:00
isMe: boolean;
isPublic?: boolean;
isBlocked?: boolean;
hasNickname?: boolean;
isKickedFromGroup?: boolean;
left?: boolean;
theme?: any;
2020-10-22 07:34:41 +02:00
};
2021-04-22 10:03:58 +02:00
export const ConversationListItemContextMenu = (props: PropsContextConversationItem) => {
2020-10-22 07:34:41 +02:00
const {
id: conversationId,
2020-10-22 07:34:41 +02:00
triggerId,
isBlocked,
isMe,
isPublic,
hasNickname,
type,
left,
2020-10-22 07:34:41 +02:00
isKickedFromGroup,
theme,
2020-10-22 07:34:41 +02:00
} = props;
const isGroup = type === 'group';
2020-10-22 07:34:41 +02:00
return (
2021-06-07 00:36:48 +02:00
<>
<Menu id={triggerId} animation={animation.fade}>
{getBlockMenuItem(isMe, type === ConversationTypeEnum.PRIVATE, isBlocked, conversationId)}
{getCopyMenuItem(isPublic, isGroup, conversationId)}
{getMarkAllReadMenuItem(conversationId)}
2021-06-18 08:41:35 +02:00
{getChangeNicknameMenuItem(isMe, isGroup, conversationId)}
{getClearNicknameMenuItem(isMe, hasNickname, isGroup, conversationId)}
2021-03-19 05:50:46 +01:00
{getDeleteMessagesMenuItem(isPublic, conversationId)}
{getInviteContactMenuItem(isGroup, isPublic, conversationId)}
{getDeleteContactMenuItem(isMe, isGroup, isPublic, left, isKickedFromGroup, conversationId)}
2021-06-18 08:41:35 +02:00
{getLeaveGroupMenuItem(isKickedFromGroup, left, isGroup, isPublic, conversationId)}
</Menu>
2021-06-07 00:36:48 +02:00
</>
2020-10-22 07:34:41 +02:00
);
};