import { ReactComponent as ChatAppCube } from '@/assets/svg/chat-app-cube.svg'; import { useSetModalState } from '@/hooks/commonHooks'; import { DeleteOutlined, EditOutlined, FormOutlined } from '@ant-design/icons'; import { Button, Card, Divider, Dropdown, Flex, MenuProps, Space, Tag, } from 'antd'; import classNames from 'classnames'; import { useCallback, useState } from 'react'; import ChatConfigurationModal from './chat-configuration-modal'; import ChatContainer from './chat-container'; import { useClickConversationCard, useClickDialogCard, useFetchConversationList, useFetchDialog, useGetChatSearchParams, useRemoveDialog, useSelectConversationList, useSelectFirstDialogOnMount, useSetCurrentDialog, } from './hooks'; import styles from './index.less'; const Chat = () => { const dialogList = useSelectFirstDialogOnMount(); const [activated, setActivated] = useState(''); const { visible, hideModal, showModal } = useSetModalState(); const { setCurrentDialog, currentDialog } = useSetCurrentDialog(); const { onRemoveDialog } = useRemoveDialog(); const { handleClickDialog } = useClickDialogCard(); const { handleClickConversation } = useClickConversationCard(); const { dialogId, conversationId } = useGetChatSearchParams(); const { list: conversationList, addTemporaryConversation } = useSelectConversationList(); useFetchDialog(dialogId, true); const handleAppCardEnter = (id: string) => () => { setActivated(id); }; const handleAppCardLeave = () => { setActivated(''); }; const handleShowChatConfigurationModal = (dialogId?: string) => () => { if (dialogId) { setCurrentDialog(dialogId); } showModal(); }; const handleDialogCardClick = (dialogId: string) => () => { handleClickDialog(dialogId); }; const handleConversationCardClick = (dialogId: string) => () => { handleClickConversation(dialogId); }; const handleCreateTemporaryConversation = useCallback(() => { addTemporaryConversation(); }, [addTemporaryConversation]); const items: MenuProps['items'] = [ { key: '1', onClick: handleCreateTemporaryConversation, label: ( New chat ), }, ]; const buildAppItems = (dialogId: string) => { const appItems: MenuProps['items'] = [ { key: '1', onClick: handleShowChatConfigurationModal(dialogId), label: ( Edit ), }, { type: 'divider' }, { key: '2', onClick: () => onRemoveDialog([dialogId]), label: ( Delete chat ), }, ]; return appItems; }; useFetchConversationList(); return ( {dialogList.map((x) => ( {x.icon}
{x.name}
{x.description}
{activated === x.id && (
)}
))}
Chat 25 {conversationList.map((x) => (
{x.name}
))}
); }; export default Chat;