import { Dispatch, memo, SetStateAction } from 'react'; import { UIBlock } from './block'; import { PreviewMessage } from './message'; import { useScrollToBottom } from './use-scroll-to-bottom'; import { Vote } from '@/lib/db/schema'; import { Message } from 'ai'; interface BlockMessagesProps { chatId: string; block: UIBlock; setBlock: Dispatch>; isLoading: boolean; votes: Array | undefined; messages: Array; } function PureBlockMessages({ chatId, block, setBlock, isLoading, votes, messages, }: BlockMessagesProps) { const [messagesContainerRef, messagesEndRef] = useScrollToBottom(); return (
{messages.map((message, index) => ( vote.messageId === message.id) : undefined } /> ))}
); } function areEqual( prevProps: BlockMessagesProps, nextProps: BlockMessagesProps, ) { if ( prevProps.block.status === 'streaming' && nextProps.block.status === 'streaming' ) { return true; } return false; } export const BlockMessages = memo(PureBlockMessages, areEqual);