"use client"; import { useEffect, useState } from "react"; import { Send } from "lucide-react"; import { cn } from "@/lib/utils"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardFooter, CardHeader, } from "@/components/ui/card"; import { ScrollArea } from "@/components/ui/scroll-area"; import { Input } from "@/components/ui/input"; import { useChat } from "ai/react"; export default function Chat({ projectInfo, featureInfo, taskInfo }: any) { // console.log("projectInfo", projectInfo); // console.log("featureInfo", featureInfo); // console.log("taskInfo", taskInfo); const { messages, input, handleInputChange, handleSubmit, setMessages } = useChat({ body: { projectInfo, featureInfo, taskInfo, }, api: "/chat", onResponse: async (res) => { try { console.log("RESPONSE ===>", res); const task_id = taskInfo.task_id; const data = await fetch(`/chat/add`, { method: "POST", body: JSON.stringify({ content: input, role: "user", task_id: task_id, }), }); } catch (err) { console.error(err); } }, onFinish: async (message) => { try { console.log("FINISH ===>", message); const data = await fetch(`/chat/add`, { method: "POST", body: JSON.stringify({ content: message.content, role: "assistant", task_id: taskInfo.task_id, }), }); } catch (err) { console.error(err); } }, onError: (err) => { console.error("CHAT HOOK ERROR ===>", err); }, }); useEffect(() => { async function getMessages() { try { const res = await fetch(`/chat/${taskInfo.task_id}`); const data = await res.json(); console.log("CLIENT RAW RES ===>", data); setMessages(data.messages); return data; } catch (err) { console.error(err); } } getMessages(); }, [setMessages, taskInfo.task_id]); const inputLength = input.trim().length; return ( <>

Chat with this task.

{messages.map((message, index) => (
{message.content}
))}
); }