From c51b5d9a5f217f8aa59c4bdcb04eb3c87f5129b3 Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Mon, 23 May 2022 19:32:42 +0200 Subject: fix: ensure all topics/thematics have the base url --- src/components/organisms/layout/posts-list.fixture.tsx | 8 ++++---- src/components/organisms/layout/summary.fixture.tsx | 4 ++-- src/components/organisms/layout/summary.tsx | 4 ++-- src/pages/404.tsx | 8 ++++---- src/pages/article/[slug].tsx | 8 ++------ src/pages/blog/index.tsx | 8 ++++---- src/pages/blog/page/[number].tsx | 8 ++++---- src/pages/recherche/index.tsx | 8 ++++---- src/pages/sujet/[slug].tsx | 8 ++++---- src/pages/thematique/[slug].tsx | 9 +++++---- src/services/graphql/articles.ts | 4 ++-- src/services/graphql/thematics.ts | 2 +- src/services/graphql/topics.ts | 2 +- src/ts/types/app.ts | 2 +- src/utils/helpers/pages.ts | 16 ++++++---------- 15 files changed, 46 insertions(+), 53 deletions(-) (limited to 'src') diff --git a/src/components/organisms/layout/posts-list.fixture.tsx b/src/components/organisms/layout/posts-list.fixture.tsx index b0afdf8..e3f2378 100644 --- a/src/components/organisms/layout/posts-list.fixture.tsx +++ b/src/components/organisms/layout/posts-list.fixture.tsx @@ -25,8 +25,8 @@ export const posts: Post[] = [ dates: { publication: '2022-02-26' }, wordsCount: introPost1.split(' ').length, thematics: [ - { id: 1, name: 'Cat 1', slug: '#' }, - { id: 2, name: 'Cat 2', slug: '#' }, + { id: 1, name: 'Cat 1', url: '#' }, + { id: 2, name: 'Cat 2', url: '#' }, ], commentsCount: 1, }, @@ -39,7 +39,7 @@ export const posts: Post[] = [ meta: { dates: { publication: '2022-02-20' }, wordsCount: introPost2.split(' ').length, - thematics: [{ id: 2, name: 'Cat 2', slug: '#' }], + thematics: [{ id: 2, name: 'Cat 2', url: '#' }], commentsCount: 0, }, title: 'Debitis laudantium laudantium', @@ -52,7 +52,7 @@ export const posts: Post[] = [ cover, dates: { publication: '2021-12-20' }, wordsCount: introPost3.split(' ').length, - thematics: [{ id: 1, name: 'Cat 1', slug: '#' }], + thematics: [{ id: 1, name: 'Cat 1', url: '#' }], commentsCount: 3, }, title: 'Quaerat ut corporis', diff --git a/src/components/organisms/layout/summary.fixture.tsx b/src/components/organisms/layout/summary.fixture.tsx index fbc46a5..bb3ebcb 100644 --- a/src/components/organisms/layout/summary.fixture.tsx +++ b/src/components/organisms/layout/summary.fixture.tsx @@ -14,8 +14,8 @@ export const meta: SummaryMeta = { dates: { publication: '2022-04-11' }, wordsCount: intro.split(' ').length, thematics: [ - { id: 1, name: 'Cat 1', slug: '#' }, - { id: 2, name: 'Cat 2', slug: '#' }, + { id: 1, name: 'Cat 1', url: '#' }, + { id: 2, name: 'Cat 2', url: '#' }, ], commentsCount: 1, }; diff --git a/src/components/organisms/layout/summary.tsx b/src/components/organisms/layout/summary.tsx index ca51cd6..8807878 100644 --- a/src/components/organisms/layout/summary.tsx +++ b/src/components/organisms/layout/summary.tsx @@ -83,12 +83,12 @@ const Summary: FC = ({ : undefined, readingTime, thematics: thematics?.map((thematic) => ( - + {thematic.name} )), topics: topics?.map((topic) => ( - + {topic.name} )), diff --git a/src/pages/404.tsx b/src/pages/404.tsx index 4ab7784..fd7187a 100644 --- a/src/pages/404.tsx +++ b/src/pages/404.tsx @@ -98,8 +98,9 @@ const Error404Page: NextPageWithLayout = ({ + getPageLinkFromRawData(thematic, 'thematic') + ) )} title={thematicsListTitle} level={2} @@ -107,8 +108,7 @@ const Error404Page: NextPageWithLayout = ({ getPageLinkFromRawData(topic, 'topic')) )} title={topicsListTitle} level={2} diff --git a/src/pages/article/[slug].tsx b/src/pages/article/[slug].tsx index c72d48e..5e75ae7 100644 --- a/src/pages/article/[slug].tsx +++ b/src/pages/article/[slug].tsx @@ -81,7 +81,7 @@ const ArticlePage: NextPageWithLayout = ({ thematics: thematics && thematics.map((thematic) => ( - + {thematic.name} )), @@ -99,11 +99,7 @@ const ArticlePage: NextPageWithLayout = ({ label: footerMetaLabel, value: topics.map((topic) => { return ( - + {topic.logo && } {topic.name} ); diff --git a/src/pages/blog/index.tsx b/src/pages/blog/index.tsx index cfd6f8c..3956308 100644 --- a/src/pages/blog/index.tsx +++ b/src/pages/blog/index.tsx @@ -153,8 +153,9 @@ const BlogPage: NextPageWithLayout = ({ + getPageLinkFromRawData(thematic, 'thematic') + ) )} title={thematicsListTitle} level={2} @@ -162,8 +163,7 @@ const BlogPage: NextPageWithLayout = ({ getPageLinkFromRawData(topic, 'topic')) )} title={topicsListTitle} level={2} diff --git a/src/pages/blog/page/[number].tsx b/src/pages/blog/page/[number].tsx index 78b1db4..b5efd27 100644 --- a/src/pages/blog/page/[number].tsx +++ b/src/pages/blog/page/[number].tsx @@ -148,8 +148,9 @@ const BlogPage: NextPageWithLayout = ({ + getPageLinkFromRawData(thematic, 'thematic') + ) )} title={thematicsListTitle} level={2} @@ -157,8 +158,7 @@ const BlogPage: NextPageWithLayout = ({ getPageLinkFromRawData(topic, 'topic')) )} title={topicsListTitle} level={2} diff --git a/src/pages/recherche/index.tsx b/src/pages/recherche/index.tsx index ab619fb..ffdbf44 100644 --- a/src/pages/recherche/index.tsx +++ b/src/pages/recherche/index.tsx @@ -165,8 +165,9 @@ const SearchPage: NextPageWithLayout = ({ + getPageLinkFromRawData(thematic, 'thematic') + ) )} title={thematicsListTitle} level={2} @@ -174,8 +175,7 @@ const SearchPage: NextPageWithLayout = ({ getPageLinkFromRawData(topic, 'topic')) )} title={topicsListTitle} level={2} diff --git a/src/pages/sujet/[slug].tsx b/src/pages/sujet/[slug].tsx index 838f009..5c86720 100644 --- a/src/pages/sujet/[slug].tsx +++ b/src/pages/sujet/[slug].tsx @@ -138,13 +138,13 @@ const TopicPage: NextPageWithLayout = ({ ? [ , , @@ -198,10 +198,10 @@ export const getStaticProps: GetStaticProps = async ({ first: totalTopics, }); const allTopics = allTopicsEdges.edges.map((edge) => - getPageLinkFromRawData(edge.node) + getPageLinkFromRawData(edge.node, 'topic') ); const topicsLinks = allTopics.filter( - (topic) => topic.slug !== (params!.slug as TopicParams['slug']) + (topic) => topic.url !== `/sujet/${params!.slug as TopicParams['slug']}` ); const translation = await loadTranslation(locale); diff --git a/src/pages/thematique/[slug].tsx b/src/pages/thematique/[slug].tsx index 84ab134..0519731 100644 --- a/src/pages/thematique/[slug].tsx +++ b/src/pages/thematique/[slug].tsx @@ -118,13 +118,13 @@ const ThematicPage: NextPageWithLayout = ({ ? [ , , @@ -178,10 +178,11 @@ export const getStaticProps: GetStaticProps = async ({ first: totalThematics, }); const allThematics = allThematicsEdges.edges.map((edge) => - getPageLinkFromRawData(edge.node) + getPageLinkFromRawData(edge.node, 'thematic') ); const allThematicsLinks = allThematics.filter( - (thematic) => thematic.slug !== (params!.slug as ThematicParams['slug']) + (thematic) => + thematic.url !== `/thematique/${params!.slug as ThematicParams['slug']}` ); const translation = await loadTranslation(locale); diff --git a/src/services/graphql/articles.ts b/src/services/graphql/articles.ts index f0ba4e4..27406ac 100644 --- a/src/services/graphql/articles.ts +++ b/src/services/graphql/articles.ts @@ -82,10 +82,10 @@ export const getArticleFromRawData = (data: RawArticle): Article => { title: seo?.title || '', }, thematics: acfPosts.postsInThematic?.map((thematic) => - getPageLinkFromRawData(thematic) + getPageLinkFromRawData(thematic, 'thematic') ), topics: acfPosts.postsInTopic?.map((topic) => - getPageLinkFromRawData(topic) + getPageLinkFromRawData(topic, 'topic') ), wordsCount: info.wordsCount, }, diff --git a/src/services/graphql/thematics.ts b/src/services/graphql/thematics.ts index fd9d9f5..4dc69e7 100644 --- a/src/services/graphql/thematics.ts +++ b/src/services/graphql/thematics.ts @@ -79,7 +79,7 @@ export const getThematicFromRawData = (data: RawThematic): Thematic => { posts.forEach((post) => { if (post.acfPosts.postsInTopic) { post.acfPosts.postsInTopic.forEach((topic) => - topics.push(getPageLinkFromRawData(topic)) + topics.push(getPageLinkFromRawData(topic, 'topic')) ); } }); diff --git a/src/services/graphql/topics.ts b/src/services/graphql/topics.ts index 277580f..0b1971b 100644 --- a/src/services/graphql/topics.ts +++ b/src/services/graphql/topics.ts @@ -80,7 +80,7 @@ export const getTopicFromRawData = (data: RawTopic): Topic => { posts.forEach((post) => { if (post.acfPosts.postsInThematic) { post.acfPosts.postsInThematic.forEach((thematic) => - thematics.push(getPageLinkFromRawData(thematic)) + thematics.push(getPageLinkFromRawData(thematic, 'thematic')) ); } }); diff --git a/src/ts/types/app.ts b/src/ts/types/app.ts index cb5429b..7bf1541 100644 --- a/src/ts/types/app.ts +++ b/src/ts/types/app.ts @@ -103,7 +103,7 @@ export type PageLink = { id: number; logo?: Image; name: string; - slug: string; + url: string; }; export type Article = Page<'article'>; diff --git a/src/utils/helpers/pages.ts b/src/utils/helpers/pages.ts index 1a388e1..773d454 100644 --- a/src/utils/helpers/pages.ts +++ b/src/utils/helpers/pages.ts @@ -21,15 +21,17 @@ import { getImageFromRawData } from './images'; * @returns {PageLink} The link data (id, slug and title). */ export const getPageLinkFromRawData = ( - data: RawThematicPreview | RawTopicPreview + data: RawThematicPreview | RawTopicPreview, + kind: 'thematic' | 'topic' ): PageLink => { const { databaseId, featuredImage, slug, title } = data; + const baseUrl = kind === 'thematic' ? '/thematique/' : '/sujet/'; return { id: databaseId, logo: featuredImage ? getImageFromRawData(featuredImage?.node) : undefined, name: title, - slug, + url: `${baseUrl}${slug}`, }; }; @@ -37,19 +39,13 @@ export const getPageLinkFromRawData = ( * Convert page link data to an array of links items. * * @param {PageLink[]} links - An array of page links. - * @param {'thematic'|'topic'} kind - The page links kind. * @returns {LinksListItem[]} An array of links items. */ -export const getLinksListItems = ( - links: PageLink[], - kind: 'thematic' | 'topic' -): LinksListItems[] => { - const baseUrl = kind === 'thematic' ? '/thematique/' : '/sujet/'; - +export const getLinksListItems = (links: PageLink[]): LinksListItems[] => { return links.map((link) => { return { name: link.name, - url: `${baseUrl}${link.slug}`, + url: link.url, }; }); }; -- cgit v1.2.3