diff --git a/src/app/stories/[slug]/page.tsx b/src/app/stories/[slug]/page.tsx index a3bd4b3..0eb9a3b 100644 --- a/src/app/stories/[slug]/page.tsx +++ b/src/app/stories/[slug]/page.tsx @@ -1,7 +1,7 @@ -import { notFound } from 'next/navigation'; -import Link from 'next/link'; -import { loadStories } from '@/utils/mdxLoader'; -import { formatReadingTime } from '@/utils/readingTime'; +import { notFound } from "next/navigation"; +import Link from "next/link"; +import { loadStories } from "@/utils/mdxLoader"; +import { formatReadingTime } from "@/utils/readingTime"; interface StoryPageProps { params: { @@ -9,27 +9,30 @@ interface StoryPageProps { }; } -import fs from 'fs'; +import fs from "fs"; +import { Metadata } from "next"; export async function generateStaticParams() { - const storiesDirectory = process.cwd() + '/src/content/stories'; - + const storiesDirectory = process.cwd() + "/src/content/stories"; + try { const filenames = fs.readdirSync(storiesDirectory); return filenames.map((filename: string) => ({ - slug: filename.replace(/\.mdx$/, ''), + slug: filename.replace(/\.mdx$/, ""), })); } catch { return []; } } -export async function generateMetadata({ params }: StoryPageProps) { +export async function generateMetadata({ + params, +}: StoryPageProps): Promise { const story = await getStoryBySlug(params.slug); - + if (!story) { return { - title: 'Story Not Found', + title: "Story Not Found", }; } @@ -50,12 +53,14 @@ export async function generateMetadata({ params }: StoryPageProps) { async function getStoryBySlug(slug: string) { const stories = await loadStories(); - return stories.find(story => story.id === slug.replace(/[^a-zA-Z0-9]/g, '-')); + return stories.find( + (story) => story.id === slug.replace(/[^a-zA-Z0-9]/g, "-"), + ); } export default async function StoryPage({ params }: StoryPageProps) { const story = await getStoryBySlug(params.slug); - + if (!story) { notFound(); } @@ -122,16 +127,16 @@ export default async function StoryPage({ params }: StoryPageProps) {

{story.title}

- +
{formatReadingTime(story.readTime)} read - {new Date(story.createdAt).toLocaleDateString('en-US', { - year: 'numeric', - month: 'long', - day: 'numeric' + {new Date(story.createdAt).toLocaleDateString("en-US", { + year: "numeric", + month: "long", + day: "numeric", })}
@@ -153,4 +158,4 @@ export default async function StoryPage({ params }: StoryPageProps) { ); -} \ No newline at end of file +} diff --git a/src/app/thoughts/[slug]/page.tsx b/src/app/thoughts/[slug]/page.tsx index ec30cee..a088f7b 100644 --- a/src/app/thoughts/[slug]/page.tsx +++ b/src/app/thoughts/[slug]/page.tsx @@ -1,7 +1,7 @@ -import { notFound } from 'next/navigation'; -import Link from 'next/link'; -import { loadThoughts } from '@/utils/mdxLoader'; -import { formatReadingTime } from '@/utils/readingTime'; +import { notFound } from "next/navigation"; +import Link from "next/link"; +import { loadThoughts } from "@/utils/mdxLoader"; +import { formatReadingTime } from "@/utils/readingTime"; interface ThoughtPageProps { params: { @@ -9,27 +9,31 @@ interface ThoughtPageProps { }; } -import fs from 'fs'; +import fs from "fs"; +import { Metadata } from "next"; +import Markdown from "react-markdown"; export async function generateStaticParams() { - const thoughtsDirectory = process.cwd() + '/src/content/thoughts'; - + const thoughtsDirectory = process.cwd() + "/src/content/thoughts"; + try { const filenames = fs.readdirSync(thoughtsDirectory); return filenames.map((filename: string) => ({ - slug: filename.replace(/\.mdx$/, ''), + slug: filename.replace(/\.mdx$/, ""), })); } catch { return []; } } -export async function generateMetadata({ params }: ThoughtPageProps) { +export async function generateMetadata({ + params, +}: ThoughtPageProps): Promise { const thought = await getThoughtBySlug(params.slug); - + if (!thought) { return { - title: 'Thought Not Found', + title: "Thought Not Found", }; } @@ -50,12 +54,14 @@ export async function generateMetadata({ params }: ThoughtPageProps) { async function getThoughtBySlug(slug: string) { const thoughts = await loadThoughts(); - return thoughts.find(thought => thought.id === slug.replace(/[^a-zA-Z0-9]/g, '-')); + return thoughts.find( + (thought) => thought.id === slug.replace(/[^a-zA-Z0-9]/g, "-"), + ); } export default async function ThoughtPage({ params }: ThoughtPageProps) { const thought = await getThoughtBySlug(params.slug); - + if (!thought) { notFound(); } @@ -122,7 +128,7 @@ export default async function ThoughtPage({ params }: ThoughtPageProps) {

{thought.title}

- +
{thought.category} @@ -131,10 +137,10 @@ export default async function ThoughtPage({ params }: ThoughtPageProps) { {formatReadingTime(thought.readTime)} read - {new Date(thought.createdAt).toLocaleDateString('en-US', { - year: 'numeric', - month: 'long', - day: 'numeric' + {new Date(thought.createdAt).toLocaleDateString("en-US", { + year: "numeric", + month: "long", + day: "numeric", })}
@@ -142,7 +148,7 @@ export default async function ThoughtPage({ params }: ThoughtPageProps) {
- {thought.content} + {thought.content}
@@ -156,4 +162,4 @@ export default async function ThoughtPage({ params }: ThoughtPageProps) { ); -} \ No newline at end of file +}