import type { UseChatHelpers } from "@ai-sdk/react"; import { ArrowDownIcon } from "lucide-react"; import { useMessages } from "@/hooks/use-messages"; import type { Vote } from "@/lib/db/schema"; import type { ChatMessage } from "@/lib/types"; import { useDataStream } from "./data-stream-provider"; import { Greeting } from "./greeting"; import { PreviewMessage, ThinkingMessage } from "./message"; type MessagesProps = { addToolApprovalResponse: UseChatHelpers["addToolApprovalResponse"]; chatId: string; status: UseChatHelpers["status"]; votes: Vote[] | undefined; messages: ChatMessage[]; setMessages: UseChatHelpers["setMessages"]; regenerate: UseChatHelpers["regenerate"]; isReadonly: boolean; isArtifactVisible: boolean; selectedModelId: string; }; function PureMessages({ addToolApprovalResponse, chatId, status, votes, messages, setMessages, regenerate, isReadonly, selectedModelId: _selectedModelId, }: MessagesProps) { const { containerRef: messagesContainerRef, endRef: messagesEndRef, isAtBottom, scrollToBottom, hasSentMessage, } = useMessages({ status, }); useDataStream(); return (
{messages.length === 0 && } {messages.map((message, index) => ( vote.messageId === message.id) : undefined } /> ))} {status === "submitted" && !messages.some((msg) => msg.parts?.some( (part) => "state" in part && part.state === "approval-responded" ) ) && }
); } export const Messages = PureMessages;