// next imports import Link from "next/link"; import Image from "next/image"; import { Metadata, ResolvingMetadata } from "next"; // components import IssueNavbar from "components/issues/navbar"; import IssueFilter from "components/issues/filters-render"; // service import ProjectService from "services/project.service"; import { redirect } from "next/navigation"; type LayoutProps = { params: { workspace_slug: string; project_slug: string }; }; export async function generateMetadata({ params }: LayoutProps): Promise { // read route params const { workspace_slug, project_slug } = params; const projectServiceInstance = new ProjectService(); try { const project = await projectServiceInstance?.getProjectSettingsAsync(workspace_slug, project_slug); return { title: `${project?.project_details?.name} | ${workspace_slug}`, description: `${ project?.project_details?.description || `${project?.project_details?.name} | ${workspace_slug}` }`, icons: `data:image/svg+xml,${ typeof project?.project_details?.emoji != "object" ? String.fromCodePoint(parseInt(project?.project_details?.emoji)) : "✈️" }`, }; } catch (error: any) { if (error?.data?.error) { redirect(`/project-not-published`); } return {}; } } const RootLayout = ({ children }: { children: React.ReactNode }) => (
{/*
*/}
{children}
plane logo
Powered by Plane Deploy
); export default RootLayout;