import type { Metadata } from "next"; import { notFound } from "next/navigation"; import { headers } from "next/headers"; import Link from "next/link"; import { Printer, UtensilsCrossed } from "lucide-react"; import { auth } from "@/lib/auth/server"; import { db, collections, eq, and, or } from "@epicure/db"; import { RecipeCard } from "@/components/recipe/recipe-card"; import { ForkCollectionButton } from "@/components/collections/fork-collection-button"; import { ShareCollectionButton } from "@/components/collections/share-collection-button"; import { buttonVariants } from "@/components/ui/button"; import { cn } from "@/lib/utils"; import { ExportMarkdownButton } from "@/components/shared/export-markdown-button"; import { EmptyState } from "@/components/shared/empty-state"; import { collectionToMarkdown } from "@/lib/markdown/collection"; import { getMessages } from "@/lib/i18n/server"; type Params = { params: Promise<{ id: string }> }; export const metadata: Metadata = {}; export default async function CollectionPage({ params }: Params) { const { id } = await params; const session = await auth.api.getSession({ headers: await headers() }); if (!session) return null; const m = getMessages((session.user as { locale?: string }).locale); const col = await db.query.collections.findFirst({ where: and( eq(collections.id, id), or(eq(collections.userId, session.user.id), eq(collections.isPublic, true)) ), with: { recipes: { with: { recipe: { with: { photos: true } } } } }, }); if (!col) notFound(); const isOwner = col.userId === session.user.id; return (
{col.description}
}{col.recipes.length} recipe{col.recipes.length !== 1 ? "s" : ""} ยท {col.isPublic ? "Public" : "Private"}