import { useState } from 'react'; import { useRecoilValue } from 'recoil'; import { CSSTransition } from 'react-transition-group'; import type { ReactNode } from 'react'; import type { TMessage } from 'librechat-data-provider'; import { useScreenshot, useMessageScrolling, useLocalize } from '~/hooks'; import ScrollToBottom from '~/components/Messages/ScrollToBottom'; import MultiMessage from './MultiMessage'; import { cn } from '~/utils'; import store from '~/store'; export default function MessagesView({ messagesTree: _messagesTree, Header, }: { messagesTree?: TMessage[] | null; Header?: ReactNode; }) { const localize = useLocalize(); const scrollButtonPreference = useRecoilValue(store.showScrollButton); const fontSize = useRecoilValue(store.fontSize); const { screenshotTargetRef } = useScreenshot(); const [currentEditId, setCurrentEditId] = useState(-1); const { conversation, scrollableRef, messagesEndRef, showScrollButton, handleSmoothToRef, debouncedHandleScroll, } = useMessageScrolling(_messagesTree); const { conversationId } = conversation ?? {}; return (
{(_messagesTree && _messagesTree.length == 0) || _messagesTree === null ? (
{localize('com_ui_nothing_found')}
) : ( <> {Header != null && Header}
)}
{() => showScrollButton && scrollButtonPreference && }
); }