import { memo } from 'react'; import { useRecoilValue } from 'recoil'; import { useParams } from 'react-router-dom'; import { useGetMessagesByConvoId } from 'librechat-data-provider'; import { useChatHelpers, useDragHelpers, useSSE } from '~/hooks'; // import GenerationButtons from './Input/GenerationButtons'; import DragDropOverlay from './Input/Files/DragDropOverlay'; import MessagesView from './Messages/MessagesView'; // import OptionsBar from './Input/OptionsBar'; import { ChatContext } from '~/Providers'; import ChatForm from './Input/ChatForm'; import { Spinner } from '~/components'; import { buildTree } from '~/utils'; import Landing from './Landing'; import Header from './Header'; import Footer from './Footer'; import store from '~/store'; function ChatView({ // messagesTree, // isLoading, index = 0, }: { // messagesTree?: TMessage[] | null; // isLoading: boolean; index?: number; }) { const { conversationId } = useParams(); const submissionAtIndex = useRecoilValue(store.submissionByIndex(0)); useSSE(submissionAtIndex); const { data: messagesTree = null, isLoading } = useGetMessagesByConvoId(conversationId ?? '', { select: (data) => { const dataTree = buildTree(data, false); return dataTree?.length === 0 ? null : dataTree ?? null; }, }); const chatHelpers = useChatHelpers(index, conversationId); const { isOver, canDrop, drop } = useDragHelpers(chatHelpers.setFiles); const isActive = canDrop && isOver; return (
{isLoading && conversationId !== 'new' ? (
) : messagesTree && messagesTree.length !== 0 ? ( } /> ) : ( } /> )} {/* */} {/* */}
{isActive && }
); } export default memo(ChatView);