File size: 2,605 Bytes
d3b461d 18da36c aa83ea7 8a4bb0c 18da36c d3b461d 18da36c cb33b9e aa83ea7 cb33b9e 18da36c 700dff9 cb33b9e 8a4bb0c 700dff9 cb33b9e 700dff9 8a4bb0c 985fa34 aa83ea7 700dff9 8a4bb0c 700dff9 cb33b9e 18da36c 8a4bb0c cb33b9e 8a4bb0c cb33b9e 18a496b cb33b9e 700dff9 d3b461d d237d49 700dff9 d3b461d 700dff9 d3b461d 1ea3843 aa83ea7 d3b461d 700dff9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
import MessageInput from '@/components/message-input';
import MessageItem from '@/components/message-item';
import { MessageType, SharedFrom } from '@/constants/chat';
import { useFetchNextSharedConversation } from '@/hooks/chat-hooks';
import { useSendButtonDisabled } from '@/pages/chat/hooks';
import { Flex, Spin } from 'antd';
import { forwardRef } from 'react';
import {
useCreateSharedConversationOnMount,
useGetSharedChatSearchParams,
useSendSharedMessage,
} from '../shared-hooks';
import { buildMessageItemReference } from '../utils';
import styles from './index.less';
const ChatContainer = () => {
const { conversationId } = useCreateSharedConversationOnMount();
const { data } = useFetchNextSharedConversation(conversationId);
const {
handlePressEnter,
handleInputChange,
value,
sendLoading,
loading,
ref,
derivedMessages,
} = useSendSharedMessage(conversationId);
const sendDisabled = useSendButtonDisabled(value);
const { from } = useGetSharedChatSearchParams();
return (
<>
<Flex flex={1} className={styles.chatContainer} vertical>
<Flex flex={1} vertical className={styles.messageContainer}>
<div>
<Spin spinning={loading}>
{derivedMessages?.map((message, i) => {
return (
<MessageItem
key={message.id}
item={message}
nickname="You"
reference={buildMessageItemReference(
{
message: derivedMessages,
reference: data?.data?.reference,
},
message,
)}
loading={
message.role === MessageType.Assistant &&
sendLoading &&
derivedMessages?.length - 1 === i
}
index={i}
></MessageItem>
);
})}
</Spin>
</div>
<div ref={ref} />
</Flex>
<MessageInput
isShared
value={value}
disabled={false}
sendDisabled={sendDisabled}
conversationId={conversationId}
onInputChange={handleInputChange}
onPressEnter={handlePressEnter}
sendLoading={sendLoading}
uploadMethod="external_upload_and_parse"
showUploadIcon={from === SharedFrom.Chat}
></MessageInput>
</Flex>
</>
);
};
export default forwardRef(ChatContainer);
|