Spaces:
Sleeping
Sleeping
wuyiqunLu
feat: add playwright e2e test for chat page with new and old data structure (#99)
06bd1d1
unverified
| 'use client'; | |
| import { useRouter } from 'next/navigation'; | |
| import { useRef } from 'react'; | |
| import Composer, { ComposerRef } from '@/components/chat/Composer'; | |
| import { dbPostCreateChat } from '@/lib/db/functions'; | |
| import { nanoid } from '@/lib/utils'; | |
| import Chip from '@/components/ui/Chip'; | |
| import { IconArrowUpRight } from '@/components/ui/Icons'; | |
| import { EXAMPLES } from '@/lib/constants'; | |
| export default function Page() { | |
| const router = useRouter(); | |
| const composerRef = useRef<ComposerRef>(null); | |
| return ( | |
| <div className="h-screen w-screen homepage"> | |
| <div className="mx-auto w-[42rem] max-w-full px-4 mt-[200px]"> | |
| <h1 className="mb-4 text-center relative"> | |
| Vision Agent | |
| <Chip className="absolute bg-green-100 text-green-500">BETA</Chip> | |
| </h1> | |
| <h4 className="text-center"> | |
| Generate code to solve your vision problem with simple prompts. | |
| </h4> | |
| <div className="my-8"> | |
| <Composer | |
| ref={composerRef} | |
| onSubmit={async ({ input, mediaUrl }) => { | |
| const newId = nanoid(); | |
| const resp = await dbPostCreateChat({ | |
| id: newId, | |
| title: `conversation-${newId}`, | |
| mediaUrl, | |
| message: { | |
| prompt: input, | |
| mediaUrl, | |
| }, | |
| }); | |
| if (resp) { | |
| router.push(`/chat/${newId}`); | |
| } | |
| }} | |
| /> | |
| </div> | |
| {EXAMPLES.map((example, index) => { | |
| return ( | |
| <Chip | |
| key={index} | |
| className="bg-transparent border border-zinc-500 cursor-pointer px-4" | |
| onClick={() => { | |
| composerRef.current?.setInput(example.prompt); | |
| composerRef.current?.setMediaUrl(example.mediaUrl); | |
| }} | |
| > | |
| <div className="flex flex-row items-center space-x-2"> | |
| <p className="text-primary text-sm">{example.title}</p> | |
| <IconArrowUpRight className="text-primary" /> | |
| </div> | |
| </Chip> | |
| ); | |
| })} | |
| </div> | |
| </div> | |
| ); | |
| } | |