import { ChevronRight } from "lucide-react"; import Link from "next/link"; import { notFound, redirect } from "next/navigation"; import { Fragment } from "react"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { prisma } from "@/lib/prisma"; import { loadCatalogItemsData } from "@/lib/services/catalog-items-loader"; import { getAncestors } from "@/lib/services/catalog-tree"; import { CatalogDetailTabs } from "./catalog-detail-tabs"; export default async function CatalogEditPage({ params, }: { params: Promise<{ locale: string; id: string }>; }) { const { id } = await params; const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.CATALOG_VIEW, session.user.rank)) { redirect("/admin"); } const pageId = parseInt(id, 10); if (Number.isNaN(pageId)) notFound(); const catalogPage = await prisma.catalogPages.findUnique({ where: { id: pageId }, }); if (!catalogPage) notFound(); const [children, itemsData, ancestors] = await Promise.all([ prisma.catalogPages.findMany({ where: { parentId: pageId }, orderBy: { orderNum: "asc" }, select: { id: true, caption: true, enabled: true }, }), loadCatalogItemsData(pageId), getAncestors(catalogPage.parentId), ]); const { items: catalogItems, baseItems, catalogNameMap, furniDataIdList, furniDescriptionMap, furniRevisionMap, interactionTypes, allPages, } = itemsData; const canEdit = canAccess(permissions, PERMS.CATALOG_EDIT, session.user.rank); return (
Layout: {catalogPage.pageLayout} · {catalogItems.length} items