import Message from "./components/Message/Message.tsx"; import { useChatContext } from "../../pages/ClientsPage/contexts/ChatContext.tsx"; import { MessageSchema } from "../../client"; import { ReactNode, useCallback } from "react"; import ChatDate from "./components/ChatDate/ChatDate.tsx"; import MessageInput from "./components/MessageInput/MessageInput.tsx"; import { Virtuoso } from "react-virtuoso"; import { Stack } from "@mantine/core"; const Chat = () => { const { messages, lastMessage, firstItemIndex, fetchMoreMessages, } = useChatContext(); const onFollowOutputHandler = useCallback( (atBottom: boolean) => { if (atBottom || lastMessage?.crmSender) { return "auto"; } else { return false; } }, [lastMessage], ); const itemContent = useCallback( (index: number, sessionData: MessageSchema) => { let dateComponent: ReactNode | null = null; const msgArrayIdx = index - firstItemIndex; const currMessage = messages[msgArrayIdx]; let prevMessage = null; if (msgArrayIdx > 0) { prevMessage = messages[msgArrayIdx - 1]; } if (!prevMessage || prevMessage.createdAt.substring(5, 10) != currMessage.createdAt.substring(5, 10)) { dateComponent = ( ); } return ( {dateComponent} ); }, [messages], ); if (messages.length === 0) { return ( ); } return ( ); }; export default Chat;