import ChatSingleMessage from "@/components/ChatComponents/ChatSingleMessage"; import { BotIcon } from "@/components/Icons"; import ReactMarkdown from "@/components/Markdown/MemoizedReactMarkdown"; import { ChatMessage } from "@/sharedState"; import React, { useEffect, useState } from "react"; interface ChatMessagesProps { chatHistory: ChatMessage[]; currentAiMessage: string; loading?: boolean; } const ChatMessages: React.FC = ({ chatHistory, currentAiMessage, loading }) => { const [loadingDots, setLoadingDots] = useState(""); const scrollToBottom = () => { const chatMessagesContainer = document.querySelector(".chat-messages"); if (chatMessagesContainer) { chatMessagesContainer.scrollTop = chatMessagesContainer.scrollHeight; } }; useEffect(() => { scrollToBottom(); }, [chatHistory]); useEffect(() => { let intervalId: NodeJS.Timeout; if (loading) { intervalId = setInterval(() => { setLoadingDots((dots) => (dots.length < 6 ? dots + "." : "")); }, 200); } else { setLoadingDots(""); } return () => clearInterval(intervalId); }, [loading]); return (
{chatHistory.map( (message, index) => message.isVisible && )} {currentAiMessage ? (
{currentAiMessage}
) : ( loading && (
{loadingDots}
) )}
); }; export default ChatMessages;