From 8fdc27152aa3d8a7556823a06a458036822924f1 Mon Sep 17 00:00:00 2001 From: Hazem Krimi Date: Sun, 13 Feb 2022 19:30:46 +0100 Subject: [PATCH] Fix content loading --- pages/blog/[slug].tsx | 29 +++++++++++++++++---------- pages/portfolio/[slug].tsx | 41 +++++++++++++++++++++++++------------- utils/blog.ts | 2 ++ utils/portfolio.ts | 2 ++ 4 files changed, 50 insertions(+), 24 deletions(-) diff --git a/pages/blog/[slug].tsx b/pages/blog/[slug].tsx index c45d839..3a271e0 100644 --- a/pages/blog/[slug].tsx +++ b/pages/blog/[slug].tsx @@ -37,7 +37,7 @@ const BlogPost: FC = ({ source, frontMatter, text }) => { = ({ source, frontMatter, text }) => { - + - {frontMatter.title} | Hazem Krimi + {frontMatter?.title} | Hazem Krimi
@@ -69,19 +69,19 @@ const BlogPost: FC = ({ source, frontMatter, text }) => { Back
-

{frontMatter.title}

-

{frontMatter.description}

+

{frontMatter?.title}

+

{frontMatter?.description}

- By {frontMatter.author} on {frontMatter.date} ({stats.text}) + By {frontMatter?.author} on {frontMatter?.date} ({stats.text})

- {frontMatter.tags ? ( + {frontMatter?.tags ? (
{frontMatter.tags.map((tag: string, index: number) => ( #{tag}  ))}
) : null} - {frontMatter.image ? ( + {frontMatter?.image ? (
@@ -111,6 +111,15 @@ export const getStaticPaths: GetStaticPaths = async () => { }; export const getStaticProps: GetStaticProps = async ({ params }: any) => { const blogPostContent = await getBlogPostdata(params.slug); + + if (!blogPostContent) + return { + props: { + source: undefined, + frontMatter: undefined + } + }; + const { data, content } = matter(blogPostContent); const mdxSource = await serialize(content, { scope: data diff --git a/pages/portfolio/[slug].tsx b/pages/portfolio/[slug].tsx index 2d35801..49b686f 100644 --- a/pages/portfolio/[slug].tsx +++ b/pages/portfolio/[slug].tsx @@ -35,7 +35,7 @@ const PortfolioProject: FC = ({ source, frontMatter }) => { = ({ source, frontMatter }) => { - + - {frontMatter.title} | Hazem Krimi + {frontMatter?.title} | Hazem Krimi
@@ -63,18 +67,18 @@ const PortfolioProject: FC = ({ source, frontMatter }) => { Back
-

{frontMatter.title}

-

{frontMatter.description}

- {frontMatter.tags ? ( +

{frontMatter?.title}

+

{frontMatter?.description}

+ {frontMatter?.tags ? (
{frontMatter.tags.map((tag: string, index: number) => ( #{tag}  ))}
) : null} - {frontMatter.image && !frontMatter.hideImage ? ( + {frontMatter?.image && !frontMatter?.hideImage ? (
- +
) : null}
@@ -85,10 +89,10 @@ const PortfolioProject: FC = ({ source, frontMatter }) => {

Showcase

- + Demo - + Source Code
@@ -110,8 +114,17 @@ export const getStaticPaths: GetStaticPaths = async () => { }; }; export const getStaticProps: GetStaticProps = async ({ params }: any) => { - const blogPostContent = await getPortfolioProjectdata(params.slug); - const { data, content } = matter(blogPostContent); + const portfolioProjectContent = await getPortfolioProjectdata(params.slug); + + if (!portfolioProjectContent) + return { + props: { + source: undefined, + frontMatter: undefined + } + }; + + const { data, content } = matter(portfolioProjectContent); const mdxSource = await serialize(content, { scope: data }); diff --git a/utils/blog.ts b/utils/blog.ts index 1ef2525..15238f9 100644 --- a/utils/blog.ts +++ b/utils/blog.ts @@ -61,5 +61,7 @@ export const getBlogPostdata = async (slug: string) => { const fullPath = path.join(blogPostsDirectory, `${slug}.mdx`); const postContent = fs.readFileSync(fullPath, 'utf8'); + if (!postContent) return undefined; + return postContent; }; diff --git a/utils/portfolio.ts b/utils/portfolio.ts index be53093..36d1be8 100644 --- a/utils/portfolio.ts +++ b/utils/portfolio.ts @@ -61,5 +61,7 @@ export const getPortfolioProjectdata = async (slug: string) => { const fullPath = path.join(portfolioProjects, `${slug}.mdx`); const postContent = fs.readFileSync(fullPath, 'utf8'); + if (!postContent) return undefined; + return postContent; };