diff --git a/app/(chat)/chat/[id]/page.tsx b/app/(chat)/chat/[id]/page.tsx index 66c027a53..26a5ee421 100644 --- a/app/(chat)/chat/[id]/page.tsx +++ b/app/(chat)/chat/[id]/page.tsx @@ -35,12 +35,18 @@ export default async function Page(props: { params: Promise<{ id: string }> }) { }); function convertToUIMessages(messages: Array): Array { + const textFromParts = (message.parts as UIMessage['parts']) + .filter((part) => part.type === 'text') + .map((part) => part.text) + .join('\n') + .trim(); + return messages.map((message) => ({ id: message.id, parts: message.parts as UIMessage['parts'], role: message.role as UIMessage['role'], // Note: content will soon be deprecated in @ai-sdk/react - content: '', + content: textFromParts, createdAt: message.createdAt, experimental_attachments: (message.attachments as Array) ?? [], diff --git a/components/messages.tsx b/components/messages.tsx index 045f3ae55..c9d000263 100644 --- a/components/messages.tsx +++ b/components/messages.tsx @@ -69,8 +69,11 @@ function PureMessages({ export const Messages = memo(PureMessages, (prevProps, nextProps) => { if (prevProps.isArtifactVisible && nextProps.isArtifactVisible) return true; + const prevIsLoading = (prevProps.status === 'submitted' || prevProps.status === 'streaming'); + const nextIsLoading = (nextProps.status === 'submitted' || nextProps.status === 'streaming'); + if (prevProps.status !== nextProps.status) return false; - if (prevProps.status && nextProps.status) return false; + if (prevIsLoading && nextIsLoading) return false; if (prevProps.messages.length !== nextProps.messages.length) return false; if (!equal(prevProps.messages, nextProps.messages)) return false; if (!equal(prevProps.votes, nextProps.votes)) return false; diff --git a/components/multimodal-input.tsx b/components/multimodal-input.tsx index d47a7a8ce..c951ea460 100644 --- a/components/multimodal-input.tsx +++ b/components/multimodal-input.tsx @@ -253,7 +253,7 @@ function PureMultimodalInput({
- {status === 'submitted' ? ( + {(status === 'submitted' || status === 'streaming') ? ( ) : (