diff --git a/src/app/(blog)/categories/[category]/page.tsx b/src/app/(blog)/categories/[category]/page.tsx index 07d149a7..a84781e5 100644 --- a/src/app/(blog)/categories/[category]/page.tsx +++ b/src/app/(blog)/categories/[category]/page.tsx @@ -3,8 +3,9 @@ import type { Metadata } from 'next' import { KnowledgeList } from 'components/KnowledgeList' -import { getUniqueCategoryList, getPostListOfCategory } from 'lib/categories' +import { getUniqueCategoryList, getPostListOfCategory, getNormalCategoryString } from 'lib/categories' import { getSortedPosts } from 'lib/getSortedPosts' +import { transformToSlug } from 'lib/utils' import { FolderOpen } from './Icons' interface Props { @@ -13,21 +14,21 @@ interface Props { export function generateMetadata({ params }: Props): Metadata { return { - title: `mfg-b | ${params.category}`, - description: `Posts about ${params.category} category` + title: `mfg-b | ${getNormalCategoryString(params.category)}`, + description: `Posts about ${getNormalCategoryString(params.category)} category` } } export default function Page({ params }: Props) { const { category } = params - const postList = getSortedPosts(getPostListOfCategory(category)) + const postList = getSortedPosts(getPostListOfCategory(transformToSlug(category))) return (

- {category} + {getNormalCategoryString(category)}

@@ -39,5 +40,5 @@ export default function Page({ params }: Props) { export async function generateStaticParams() { const categoryList = getUniqueCategoryList() - return categoryList.map(category => ({ category })) + return categoryList.map(category => ({ category: transformToSlug(category) })) } diff --git a/src/app/(blog)/categories/page.tsx b/src/app/(blog)/categories/page.tsx index 2e840916..39656420 100644 --- a/src/app/(blog)/categories/page.tsx +++ b/src/app/(blog)/categories/page.tsx @@ -3,6 +3,7 @@ import type { Metadata } from 'next' import Link from 'next/link' import { getCategoriesAndNumberOfPosts } from 'lib/categories' +import { transformToSlug } from 'lib/utils' export const metadata: Metadata = { title: 'mfg-b | Categories', @@ -19,7 +20,7 @@ export default function Page() { {categories .sort((a, b) => a.category.localeCompare(b.category)) .map((categoryData, index) => ( - +

{categoryData.category} diff --git a/src/app/(blog)/post/[slug]/page.tsx b/src/app/(blog)/post/[slug]/page.tsx index b478d96f..c5f5a13d 100644 --- a/src/app/(blog)/post/[slug]/page.tsx +++ b/src/app/(blog)/post/[slug]/page.tsx @@ -9,6 +9,7 @@ import { allPosts, type Post } from 'contentlayer/generated' import { Date } from 'components/Date' import { authors } from 'lib/authors' +import { transformToSlug } from 'lib/utils' interface Props { params: { slug: string } @@ -55,7 +56,7 @@ export default function Page({ params }: Props) {

•{' '} {post.category} @@ -71,7 +72,7 @@ export default function Page({ params }: Props) { )}

{tags.map((tag, index) => ( - + {tag} diff --git a/src/app/(blog)/tag/[tag]/page.tsx b/src/app/(blog)/tag/[tag]/page.tsx index 8128f5a8..1522dc11 100644 --- a/src/app/(blog)/tag/[tag]/page.tsx +++ b/src/app/(blog)/tag/[tag]/page.tsx @@ -3,9 +3,10 @@ import type { Metadata } from 'next' import { KnowledgeList } from 'components/KnowledgeList' -import { getUniqueTagListFromPosts, getPostListBasedOnTag } from 'lib/tags' +import { getUniqueTagListFromPosts, getPostListBasedOnTag, getNormalTagString } from 'lib/tags' import { getSortedPosts } from 'lib/getSortedPosts' import { Tag } from './Icons' +import { transformToSlug } from 'lib/utils' interface Props { params: { tag: string } @@ -13,19 +14,19 @@ interface Props { export function generateMetadata({ params }: Props): Metadata { return { - title: `mfg-b | ${params.tag}`, - description: `Posts with tag ${params.tag}` + title: `mfg-b | ${getNormalTagString(params.tag)}`, + description: `Posts with tag "${getNormalTagString(params.tag)}"` } } export default function Page({ params }: Props) { const { tag } = params - const postList = getSortedPosts(getPostListBasedOnTag(tag)) + const postList = getSortedPosts(getPostListBasedOnTag(transformToSlug(tag))) return (

- {tag} + {getNormalTagString(tag)}

@@ -38,5 +39,5 @@ export default function Page({ params }: Props) { export async function generateStaticParams() { const tagList = getUniqueTagListFromPosts() - return tagList.map(tag => ({ tag })) + return tagList.map(tag => ({ tag: transformToSlug(tag) })) } diff --git a/src/lib/authors.ts b/src/lib/authors.ts index a6a446af..cc69d256 100644 --- a/src/lib/authors.ts +++ b/src/lib/authors.ts @@ -1,6 +1,6 @@ import { allPosts } from 'contentlayer/generated' -import { removeRepeatedValuesFromArray } from './utils' +import { removeRepeatedValuesFromArray, transformToSlug } from './utils' import { getSortedPosts } from './getSortedPosts' export function getAuthors() { @@ -10,11 +10,11 @@ export function getAuthors() { } export function getAuthorByUser(user: string) { - return authors.filter(author => author.user === user)[0] + return authors.filter(author => transformToSlug(author.user) === transformToSlug(user))[0] } export function getPostsByAuthor(authorUsername: string) { - const postList = allPosts.filter(post => post.author === authorUsername) + const postList = allPosts.filter(post => transformToSlug(post.author) === transformToSlug(authorUsername)) return getSortedPosts(postList) } diff --git a/src/lib/categories.ts b/src/lib/categories.ts index ed410df8..d6a2343f 100644 --- a/src/lib/categories.ts +++ b/src/lib/categories.ts @@ -1,5 +1,5 @@ import { allPosts } from 'contentlayer/generated' -import { getFrequencyOfValue, removeRepeatedValuesFromArray } from './utils' +import { getFrequencyOfValue, removeRepeatedValuesFromArray, transformToSlug } from './utils' const getRawCategoryList = () => allPosts.map(post => post.category) @@ -28,4 +28,10 @@ export function getCategoriesAndNumberOfPosts(): CategoriesAndNumberOfPosts[] { } export const getPostListOfCategory = (category: string) => - allPosts.filter(post => post.category === category) + allPosts.filter(post => transformToSlug(post.category) === transformToSlug(category)) + + export function getNormalCategoryString(category: string) { + const categories = getUniqueCategoryList() + + return categories.find(currCategory => transformToSlug(currCategory) === transformToSlug(category)) + } diff --git a/src/lib/tags.ts b/src/lib/tags.ts index a001f820..41087680 100644 --- a/src/lib/tags.ts +++ b/src/lib/tags.ts @@ -1,5 +1,5 @@ import { allPosts } from 'contentlayer/generated' -import { removeRepeatedValuesFromArray } from './utils' +import { removeRepeatedValuesFromArray, transformToSlug } from './utils' const getRawTagListFromPosts = (): string[] => { const listOfTagList = allPosts.map(post => { @@ -20,9 +20,15 @@ export const getUniqueTagListFromPosts = () => export function getPostListBasedOnTag(tag: string) { const filteredPostList = allPosts.filter(post => { - const listOfTags = post.tags.split(',').map(rawTag => rawTag.trim()) - return listOfTags.includes(tag) + const listOfTags = post.tags.split(',').map(rawTag => transformToSlug(rawTag.trim())) + return listOfTags.includes(transformToSlug(tag)) }) return filteredPostList } + +export function getNormalTagString(tag: string) { + const allTags = getUniqueTagListFromPosts() + + return allTags.find(currTag => transformToSlug(currTag) === transformToSlug(tag)) +}