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);