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

42 lines
1.5 KiB
TypeScript
Raw Normal View History

2022-10-07 23:43:39 +02:00
import type { GetServerSideProps, NextPage } from "next";
import Layout from "../../../components/Blog/Layout";
2022-10-08 13:28:16 +02:00
import DiaryPageSelector from "../../../components/Blog/DiaryPageSelector";
import { generateContent, getContentList } from "../../../lib/content/generateBackend";
import type { ContentList, Diary } from "../../../lib/content/types";
2022-10-07 23:43:39 +02:00
import styles from "../../../styles/Blog/Content.module.scss";
2022-10-08 13:28:16 +02:00
interface IContentRender extends Diary {
2022-10-07 23:43:39 +02:00
html: string;
}
const DiaryMain: NextPage<{ content: IContentRender }> = ({ content }) => {
return <Layout title={`${content.title} - c0ntroller.de`}>
2022-10-08 13:28:16 +02:00
<DiaryPageSelector title={content.title} pageSelected={0} name={content.name} pages={content.entries.map(e => e.title)} />
2022-10-07 23:43:39 +02:00
<div dangerouslySetInnerHTML={{ __html: content.html }}>
</div>
2022-10-08 13:28:16 +02:00
<DiaryPageSelector title={content.title} pageSelected={0} name={content.name} pages={content.entries.map(e => e.title)} bottom />
2022-10-07 23:43:39 +02:00
</Layout>;
};
export const getServerSideProps: GetServerSideProps = async (context) => {
const { did } = 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) return { notFound: true };
const contentHtml = await generateContent(contentEntry);
return {
props: {
content: {
2022-10-08 13:28:16 +02:00
...contentEntry,
2022-10-07 23:43:39 +02:00
html: contentHtml
}
}
};
};
export default DiaryMain;