import { cookies } from 'next/headers'; import { notFound } from 'next/navigation'; import { auth } from '@/app/(auth)/auth'; import { Chat } from '@/components/chat'; import { getChatById, getMessagesByChatId } from '@/lib/db/queries'; import { DataStreamHandler } from '@/components/data-stream-handler'; import { DEFAULT_CHAT_MODEL } from '@/lib/ai/models'; import { DBMessage } from '@/lib/db/schema'; import { Attachment, UIMessage } from 'ai'; export default async function Page(props: { params: Promise<{ id: string }> }) { const params = await props.params; const { id } = params; const chat = await getChatById({ id }); if (!chat) { notFound(); } const session = await auth(); if (chat.visibility === 'private') { if (!session || !session.user) { return notFound(); } if (session.user.id !== chat.userId) { return notFound(); } } const messagesFromDb = await getMessagesByChatId({ id, }); function convertToUIMessages(messages: Array): Array { 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: '', createdAt: message.createdAt, experimental_attachments: (message.attachments as Array) ?? [], })); } const cookieStore = await cookies(); const chatModelFromCookie = cookieStore.get('chat-model'); if (!chatModelFromCookie) { return ( <> ); } return ( <> ); }