chatbot-template/app/(chat)/chat/[id]/page.tsx
2024-11-15 12:18:17 -05:00

47 lines
1.2 KiB
TypeScript

import { CoreMessage } from 'ai';
import { cookies } from 'next/headers';
import { notFound } from 'next/navigation';
import { DEFAULT_MODEL_NAME, models } from '@/ai/models';
import { auth } from '@/app/(auth)/auth';
import { Chat as PreviewChat } from '@/components/chat';
import { getChatById, getMessagesByChatId } from '@/lib/db/queries';
import { convertToUIMessages } from '@/lib/utils';
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 (!session || !session.user) {
return notFound();
}
if (session.user.id !== chat.userId) {
return notFound();
}
const messagesFromDb = await getMessagesByChatId({
id,
});
const cookieStore = await cookies();
const modelIdFromCookie = cookieStore.get('model-id')?.value;
const selectedModelId =
models.find((model) => model.id === modelIdFromCookie)?.id ||
DEFAULT_MODEL_NAME;
return (
<PreviewChat
id={chat.id}
initialMessages={convertToUIMessages(messagesFromDb)}
selectedModelId={selectedModelId}
/>
);
}