import { EmbedContainer } from '@/components/embed-container'; 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 { useSyncThemeFromParams } from '@/components/theme-provider'; import { MessageType, SharedFrom } from '@/constants/chat'; import { useFetchFlowSSE } from '@/hooks/flow-hooks'; import { useFetchExternalChatInfo, useFetchNextConversationSSE, } from '@/hooks/use-chat-request'; import i18n from '@/locales/config'; import { buildMessageUuidWithRole } from '@/utils/chat'; import React, { forwardRef, useMemo } from 'react'; import { useSendButtonDisabled } from '../hooks/use-button-disabled'; import { useGetSharedChatSearchParams, useSendSharedMessage, } from '../hooks/use-send-shared-message'; import { buildMessageItemReference } from '../utils'; const ChatContainer = () => { const { sharedId: conversationId, from, locale, theme, visibleAvatar, } = useGetSharedChatSearchParams(); useSyncThemeFromParams(theme); const { visible, hideModal, documentId, selectedChunk, clickDocumentButton } = useClickDrawer(); const { handlePressEnter, handleInputChange, value, sendLoading, derivedMessages, hasError, stopOutputMessage, scrollRef, messageContainerRef, removeAllMessagesExceptFirst, } = useSendSharedMessage(); const sendDisabled = useSendButtonDisabled(value); const { data: chatInfo } = useFetchExternalChatInfo(); const useFetchAvatar = useMemo(() => { return from === SharedFrom.Agent ? useFetchFlowSSE : useFetchNextConversationSSE; }, [from]); React.useEffect(() => { if (locale && i18n.language !== locale) { i18n.changeLanguage(locale); } }, [locale, visibleAvatar]); const { data: avatarData } = useFetchAvatar(); if (!conversationId) { return
empty
; } return ( <>
{derivedMessages?.map((message, i) => { return ( ); })}
{visible && ( )} ); }; export default forwardRef(ChatContainer);