'use client'; import ChatInput from '@/component/chat-input'; import { zodSchema } from '@ai-sdk/provider-utils'; import { UIMessage, useChat } from '@ai-sdk/react'; import { DefaultChatTransport } from 'ai'; import { z } from 'zod'; export default function Chat({ id, initialMessages, }: { id?: string | undefined; initialMessages?: UIMessage<{ createdAt: string }>[]; } = {}) { const { sendMessage, status, messages } = useChat({ id, // use the provided chatId messages: initialMessages, transport: new DefaultChatTransport({ api: '/api/use-chat-persistence-metadata', }), messageMetadataSchema: zodSchema( z.object({ createdAt: z.string().datetime(), }), ), }); return (
{messages.map(m => (
{m.role === 'user' ? 'User: ' : 'AI: '} {m.metadata?.createdAt && (
Created at: {new Date(m.metadata.createdAt).toLocaleString()}
)} {m.parts.map((part, index) => { if (part.type === 'text') { return
{part.text}
; } })}
))} sendMessage({ text })} />
); }