frontpage/pages/blog/diary/[did]/[page].tsx

35 lines
1.4 KiB
TypeScript
Raw Normal View History

2022-10-07 23:43:39 +02:00
import type { GetServerSideProps, NextPage } from "next";
2022-10-15 22:17:51 +02:00
import ContentPage from "../../../../components/Blog/ContentPage";
2022-10-07 23:43:39 +02:00
import Layout from "../../../../components/Blog/Layout";
2022-10-18 16:46:33 +02:00
import { generateContent, getContentList, prepareDOM } from "../../../../lib/content/generateBackend";
2022-10-15 22:17:51 +02:00
import type { ContentList, Diary, DiaryRender } from "../../../../lib/content/types";
2022-10-07 23:43:39 +02:00
2022-10-15 22:17:51 +02:00
const DiaryMain: NextPage<{ content: DiaryRender }> = ({ content }) => {
2022-10-08 13:28:16 +02:00
return <Layout title={`${content.entries[content.pageSelected - 1].title} - ${content.title} - c0ntroller.de`}>
2022-10-15 22:17:51 +02:00
<ContentPage content={content} />
2022-10-07 23:43:39 +02:00
</Layout>;
};
export const getServerSideProps: GetServerSideProps = async (context) => {
const { did, page } = context.query;
2022-10-08 13:28:16 +02:00
const contentList = await getContentList();
const contentEntry: Diary | undefined = (contentList as ContentList).find((c) => c.name === did && c.type === "diary") as Diary | undefined;
2022-10-07 23:43:39 +02:00
if (!contentEntry || !page || typeof page !== "string") return { notFound: true };
const contentHtml = await generateContent(contentEntry, Number.parseInt(page));
2022-10-18 16:46:33 +02:00
const contentPrepared = prepareDOM(contentHtml);
2022-10-07 23:43:39 +02:00
return {
props: {
content: {
2022-10-08 13:28:16 +02:00
...contentEntry,
2022-10-18 16:46:33 +02:00
html: contentPrepared,
2022-10-08 13:28:16 +02:00
pageSelected: Number.parseInt(page)
2022-10-07 23:43:39 +02:00
}
}
};
};
export default DiaryMain;