import { createServerComponentClient } from "@supabase/auth-helpers-nextjs"; import { Database } from "@/types/supabase"; import { cookies } from "next/headers"; import { redirect } from "next/navigation"; import { prisma } from "@/lib/prisma"; import { CreateTask } from "@/components/create-task"; import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle, SheetTrigger, } from "@/components/ui/sheet"; import { Checkbox } from "@/components/ui/checkbox"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; import Chat from "@/components/chat"; // import GenerateTasks from "./generate-tasks"; async function getSession(supabase: any) { const { data: { session }, } = await supabase.auth.getSession(); return session; } async function fetchTasks(projectID: string) { const supabase = createServerComponentClient<Database>({ cookies }); const session = await getSession(supabase); if (!session) redirect("/auth"); const tasks = await prisma.task.findMany({ where: { project_id: BigInt(projectID), }, include: { feature: true, }, }); if (!tasks) return undefined; const res = tasks.map((task) => ({ ...task, id: String(task.id), project_id: String(task.project_id), feature_id: String(task.feature_id), })); return res; } export async function TaskList({ workspaceID, projectID, project_name, project_description, tech_stack, }: { workspaceID: string; projectID: string; project_name: string; project_description: string; tech_stack: string[]; }) { const tasks = await fetchTasks(projectID); console.log(project_name); return ( <div> <h1 className="font-bold">Task List</h1> {tasks?.length != 0 ? ( tasks?.map((task, i) => ( <div key={i}> <Sheet> <SheetTrigger>{task.name}</SheetTrigger> <SheetContent className="w-[800px]"> <SheetHeader> <SheetTitle>{task.name}</SheetTitle> <SheetDescription className="flex flex-col space-y-4"> <p className="truncate">{task.description}</p> <Chat projectInfo={{ name: project_name, description: project_description, stack: tech_stack, }} featureInfo={ task.feature ? task.feature : { name: "", description: "" } } taskInfo={{ task_name: task.name, task_description: task.description, task_id: task.id, }} /> </SheetDescription> </SheetHeader> </SheetContent> </Sheet> </div> )) ) : ( <p>No tasks</p> )} <CreateTask workspaceID={workspaceID} projectID={projectID} /> {/* <GenerateTasks stack={["Next.js", "Supabase"]} /> */} </div> ); }