68 lines
1.9 KiB
TypeScript
Raw Normal View History

import { BeforeFooterBlock } from "@/components/Blocks/BeforeFooter";
import BlogDetail, { BlogDetailContentSkeleton } from "@/components/Blogs/BlogDetail";
2025-02-03 12:13:56 +07:00
import { fetchBlogDetail } from "@/services/payload/blog";
import { Metadata } from "next";
2025-02-03 12:13:56 +07:00
import Image from "next/image";
import { Suspense } from "react";
2025-02-03 15:20:09 +07:00
export async function generateMetadata({ params }: { params: Promise<{ slug: string }> }): Promise<Metadata> {
2025-02-12 10:42:17 +07:00
const name = "Cochise Oncology";
2025-02-03 15:20:09 +07:00
const slug = (await params).slug;
const blog = await fetchBlogDetail(slug);
if (!blog) {
return {
2025-02-12 10:42:17 +07:00
title: name,
description: name,
openGraph: {
2025-02-12 10:42:17 +07:00
title: name,
description: name,
},
};
}
const title = `${!!blog.data?.meta?.title ? blog.data?.meta?.title : blog.data.title} - ${name}`;
const description = `${!!blog.data?.meta?.description ? blog.data?.meta?.description : blog.data.title} - ${name}`;
return {
title: title,
description: description,
openGraph: {
title: title,
description: description,
images: [{ url: blog.imgUrl }],
},
};
}
2025-02-03 14:17:13 +07:00
export default async function SingleBlogPage({ params }: { params: Promise<{ slug: string }> }) {
const slug = (await params).slug;
return (
<>
<Suspense fallback={<Loading />}>
<BlogDetail slug={slug} />
<BeforeFooterBlock />
</Suspense>
</>
);
}
function Loading() {
return (
<>
2025-02-03 14:17:13 +07:00
<section className="page-section bg-dark-1 bg-gradient-gray-dark-1 light-content bg-scroll overflow-hidden">
{/* <!-- Background Shape --> */}
2025-02-03 14:17:13 +07:00
<div className="bg-shape-1 opacity-003">
<Image src="/assets/images/demo-fancy/bg-shape-1.svg" width={1443} height={844} alt="" />
</div>
{/* <!-- End Background Shape --> */}
</section>
2025-02-03 14:17:13 +07:00
{/* Section */}
<BlogDetailContentSkeleton />
{/* End Section */}
</>
);
}