import React, { useRef, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { ConversationPreviewUIComponentProps } from './ConversationPreview'; import { Avatar as DefaultAvatar } from '../Avatar/index'; import './styles/index.scss'; import { Icon, IconTypes } from '../Icon'; import { Plugins } from '../Plugins'; import { useConversation } from '../../hooks'; import { useTUIKitContext } from '../../context'; export function unMemoConversationPreviewContent( props: T, ):React.ReactElement { const { conversation, Avatar = DefaultAvatar, displayImage, displayTitle, displayMessage, displayTime, unread, active, setActiveConversation, } = props; const { t } = useTranslation(); const conversationPreviewButton = useRef(null); const activeClass = active ? 'conversation-preview-content--active' : ''; const unreadClass = unread && unread >= 1 ? 'conversation-preview-content--unread' : ''; const pinClass = conversation.isPinned ? 'conversation-preview-content--pin' : ''; const [isHover, setIsHover] = useState(false); const onSelectConversation = () => { if (setActiveConversation) { setActiveConversation(conversation); } if (conversationPreviewButton?.current) { conversationPreviewButton.current.blur(); } }; const handleMouseEnter = () => { setIsHover(true); }; const handleMouseLeave = () => { setIsHover(false); }; const { chat, conversation: activeConversation } = useTUIKitContext('ConversationPreviewContent'); const { pinConversation, deleteConversation } = useConversation(chat); const moreHandle = (type: string) => { const { conversationID, isPinned } = conversation; switch (type) { case 'pin': pinConversation({ conversationID, isPinned: !isPinned }); break; case 'delete': deleteConversation(conversationID); if (conversation === activeConversation) { setActiveConversation(null); } break; default: } }; return ( ); } export const ConversationPreviewContent = React.memo(unMemoConversationPreviewContent) as typeof unMemoConversationPreviewContent;