From 85c4c42bd601270d7be0f34a0767a34bb85e29bb Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Tue, 12 Dec 2023 18:50:03 +0100 Subject: refactor(hooks): rewrite useBreadcrumbs hook * use next/router to get the slug instead of using props * handle cases where the current page title is not provided * update JSON-LD schema to match the example in documentation * add tests --- src/pages/404.tsx | 13 ++++++++----- src/pages/article/[slug].tsx | 16 +++++----------- src/pages/blog/index.tsx | 25 +++++++++++-------------- src/pages/blog/page/[number].tsx | 28 +++++++++++++--------------- src/pages/contact.tsx | 20 ++++++++------------ src/pages/cv.tsx | 22 +++++++++------------- src/pages/index.tsx | 15 +++------------ src/pages/mentions-legales.tsx | 20 ++++++++------------ src/pages/projets/[slug].tsx | 20 ++++++++------------ src/pages/projets/index.tsx | 20 ++++++++------------ src/pages/recherche/index.tsx | 19 +++++++------------ src/pages/sujet/[slug].tsx | 22 +++++++++------------- src/pages/thematique/[slug].tsx | 22 +++++++++------------- 13 files changed, 106 insertions(+), 156 deletions(-) (limited to 'src/pages') diff --git a/src/pages/404.tsx b/src/pages/404.tsx index 6ef0c55..450859c 100644 --- a/src/pages/404.tsx +++ b/src/pages/404.tsx @@ -36,7 +36,11 @@ import { CONFIG } from '../utils/config'; import { ROUTES } from '../utils/constants'; import { getLinksItemData } from '../utils/helpers'; import { loadTranslation, type Messages } from '../utils/helpers/server'; -import { useBreadcrumb, useThematicsList, useTopicsList } from '../utils/hooks'; +import { + useBreadcrumbs, + useThematicsList, + useTopicsList, +} from '../utils/hooks'; const link = (chunks: ReactNode) => {chunks}; @@ -110,10 +114,9 @@ const Error404Page: NextPageWithLayout = ({ data }) => { }), }, }; - const { items: breadcrumbItems, schema: breadcrumbSchema } = useBreadcrumb({ - title: messages.page.title, - url: ROUTES.NOT_FOUND, - }); + const { items: breadcrumbItems, schema: breadcrumbSchema } = useBreadcrumbs( + messages.page.title + ); const searchSubmitHandler: SearchFormSubmit = useCallback( async ({ query }) => { diff --git a/src/pages/article/[slug].tsx b/src/pages/article/[slug].tsx index bd102a9..6333056 100644 --- a/src/pages/article/[slug].tsx +++ b/src/pages/article/[slug].tsx @@ -46,7 +46,7 @@ import { import { loadTranslation, type Messages } from '../../utils/helpers/server'; import { useArticle, - useBreadcrumb, + useBreadcrumbs, useComments, useHeadingsTree, usePrism, @@ -74,10 +74,9 @@ const ArticlePage: NextPageWithLayout = ({ data }) => { contentId: article.id, }, }); - const { items: breadcrumbItems, schema: breadcrumbSchema } = useBreadcrumb({ - title: data.post.title, - url: data.post.slug, - }); + const { items: breadcrumbItems, schema: breadcrumbSchema } = useBreadcrumbs( + article.title + ); const { ref, tree } = useHeadingsTree({ fromLevel: 2 }); const { attributes, className: prismClassName } = usePrism({ attributes: { @@ -172,6 +171,7 @@ const ArticlePage: NextPageWithLayout = ({ data }) => { webpageSchema, blogSchema, blogPostSchema, + breadcrumbSchema, ...getCommentsSchema(comments), ]); @@ -208,12 +208,6 @@ const ArticlePage: NextPageWithLayout = ({ data }) => { // eslint-disable-next-line react/no-danger -- Necessary for schema dangerouslySetInnerHTML={{ __html: JSON.stringify(schemaJsonLd) }} /> -