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 { CheckIcon } from "lucide-react"; async function getSession(supabase: any) { const { data: { session }, } = await supabase.auth.getSession(); return session; } async function fetchFeatures(projectID: string) { const supabase = createServerComponentClient<Database>({ cookies }); const session = await getSession(supabase); if (!session) redirect("/auth"); try { // prisma function to get project by projectID if user is part of the project const features = await prisma.feature.findMany({ where: { project_id: BigInt(projectID), }, }); return features; } catch (err) { console.error(err); } } export async function FeatureList({ projectID }: { projectID: string }) { const features = await fetchFeatures(projectID); return ( <div> <div className="grid gap-4"> {features?.map((feature) => ( <div className="flex items-start gap-4" key={feature.id}> <CheckIcon className="w-6 h-6 text-green-500" /> <div className="grid gap-1"> <h3 className="font-semibold">{feature.name}</h3> <p className="text-sm text-gray-500 dark:text-gray-400"> {feature.description} </p> </div> </div> ))} </div> </div> ); }