import { ReactComponent as AssistantIcon } from '@/assets/svg/assistant.svg'; import { MessageType } from '@/constants/chat'; import { useTranslate } from '@/hooks/commonHooks'; import { Message } from '@/interfaces/database/chat'; import { Avatar, Button, Flex, Input, Skeleton, Spin } from 'antd'; import classNames from 'classnames'; import { useSelectConversationLoading } from '../hooks'; import HightLightMarkdown from '@/components/highlight-markdown'; import React, { ChangeEventHandler, forwardRef } from 'react'; import { IClientConversation } from '../interface'; import styles from './index.less'; const MessageItem = ({ item }: { item: Message }) => { const isAssistant = item.role === MessageType.Assistant; return (
{item.role === MessageType.User ? ( ) : ( )} {isAssistant ? '' : 'You'}
{item.content !== '' ? ( {item.content} ) : ( )}
); }; interface IProps { handlePressEnter(): void; handleInputChange: ChangeEventHandler; value: string; loading: boolean; sendLoading: boolean; conversation: IClientConversation; ref: React.LegacyRef; } const ChatContainer = ( { handlePressEnter, handleInputChange, value, loading: sendLoading, conversation, }: IProps, ref: React.LegacyRef, ) => { const loading = useSelectConversationLoading(); const { t } = useTranslate('chat'); return ( <>
{conversation?.message?.map((message) => { return ( ); })}
{t('send')} } onPressEnter={handlePressEnter} onChange={handleInputChange} /> ); }; export default forwardRef(ChatContainer);