skbeta/components/feature-list.tsx
Christopher Arraya c55ab3d49e initial commit
2024-01-13 20:55:51 -05:00

55 lines
1.5 KiB
TypeScript

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>
);
}