import { NextMessageInput } from '@/components/message-input/next'; import MessageItem from '@/components/message-item'; import PdfSheet from '@/components/pdf-drawer'; import { useClickDrawer } from '@/components/pdf-drawer/hooks'; import { MessageType } from '@/constants/chat'; import { useFetchConversation, useFetchDialog, useGetChatSearchParams, } from '@/hooks/use-chat-request'; import { useFetchUserInfo } from '@/hooks/use-user-setting-request'; import { buildMessageUuidWithRole } from '@/utils/chat'; import { useGetSendButtonDisabled, useSendButtonDisabled, } from '../../hooks/use-button-disabled'; import { useCreateConversationBeforeUploadDocument } from '../../hooks/use-create-conversation'; import { useSendMessage } from '../../hooks/use-send-chat-message'; import { buildMessageItemReference } from '../../utils'; interface IProps { controller: AbortController; stopOutputMessage(): void; } export function SingleChatBox({ controller, stopOutputMessage }: IProps) { const { value, scrollRef, messageContainerRef, sendLoading, derivedMessages, isUploading, handleInputChange, handlePressEnter, regenerateMessage, removeMessageById, handleUploadFile, removeFile, } = useSendMessage(controller); const { data: userInfo } = useFetchUserInfo(); const { data: currentDialog } = useFetchDialog(); const { createConversationBeforeUploadDocument } = useCreateConversationBeforeUploadDocument(); const { conversationId } = useGetChatSearchParams(); const { data: conversation } = useFetchConversation(); const disabled = useGetSendButtonDisabled(); const sendDisabled = useSendButtonDisabled(value); const { visible, hideModal, documentId, selectedChunk, clickDocumentButton } = useClickDrawer(); return (
{derivedMessages?.map((message, i) => { return ( ); })}
{visible && ( )}
); }