From b9c1953c79688fc3f536b7927692309c9780b5da Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Thu, 6 Jan 2022 17:55:24 +0100 Subject: refactor: reuse PostMeta components on single articles/pages --- src/pages/article/[slug].tsx | 25 +++++++++++++++---------- src/pages/contact.tsx | 8 +++++--- src/pages/cv.tsx | 24 ++++++++++++++++++------ src/pages/mentions-legales.tsx | 28 ++++++++++++++++++++++------ src/pages/sujet/[slug].tsx | 34 ++++++++++++---------------------- src/pages/thematique/[slug].tsx | 6 ++---- 6 files changed, 74 insertions(+), 51 deletions(-) (limited to 'src/pages') diff --git a/src/pages/article/[slug].tsx b/src/pages/article/[slug].tsx index 493f061..e8df85e 100644 --- a/src/pages/article/[slug].tsx +++ b/src/pages/article/[slug].tsx @@ -9,7 +9,7 @@ import { config } from '@config/website'; import { t } from '@lingui/macro'; import { getAllPostsSlug, getPostBySlug } from '@services/graphql/queries'; import { NextPageWithLayout } from '@ts/types/app'; -import { ArticleProps } from '@ts/types/articles'; +import { ArticleMeta, ArticleProps } from '@ts/types/articles'; import { loadTranslation } from '@utils/helpers/i18n'; import { addPrismClasses, translateCopyButton } from '@utils/helpers/prism'; import { GetStaticPaths, GetStaticProps, GetStaticPropsContext } from 'next'; @@ -32,6 +32,13 @@ const SingleArticle: NextPageWithLayout = ({ post }) => { title, } = post; + const meta: ArticleMeta = { + author, + commentCount: comments.length, + dates, + thematics, + }; + const router = useRouter(); const locale = router.locale ? router.locale : config.defaultLocale; @@ -51,17 +58,15 @@ const SingleArticle: NextPageWithLayout = ({ post }) => {
- - + +
- +

{t`Comments`}

diff --git a/src/pages/contact.tsx b/src/pages/contact.tsx index 3ce6098..ca82f5b 100644 --- a/src/pages/contact.tsx +++ b/src/pages/contact.tsx @@ -9,6 +9,7 @@ import { loadTranslation } from '@utils/helpers/i18n'; import { GetStaticProps, GetStaticPropsContext } from 'next'; import Head from 'next/head'; import { FormEvent, useState } from 'react'; +import PostHeader from '@components/PostHeader/PostHeader'; const ContactPage: NextPageWithLayout = () => { const [name, setName] = useState(''); @@ -48,6 +49,9 @@ const ContactPage: NextPageWithLayout = () => { } }; + const title = t`Contact`; + const intro = t`Please fill the form to contact me.`; + return ( <> @@ -55,9 +59,7 @@ const ContactPage: NextPageWithLayout = () => {
-
-

{t`Contact`}

-
+

{t`All fields marked with * are required.`}

{status &&

{status}

} diff --git a/src/pages/cv.tsx b/src/pages/cv.tsx index 5107f6a..3faa941 100644 --- a/src/pages/cv.tsx +++ b/src/pages/cv.tsx @@ -6,8 +6,19 @@ import { loadTranslation } from '@utils/helpers/i18n'; import { GetStaticProps, GetStaticPropsContext } from 'next'; import Head from 'next/head'; import CVContent, { intro, meta } from '@content/pages/cv.mdx'; +import PostHeader from '@components/PostHeader/PostHeader'; +import { ArticleMeta } from '@ts/types/articles'; const CV: NextPageWithLayout = () => { + const dates = { + publication: meta.publishedOn, + update: meta.updatedOn, + }; + + const pageMeta: ArticleMeta = { + dates, + }; + return ( <> @@ -15,12 +26,13 @@ const CV: NextPageWithLayout = () => {
-
-

{meta.title}

-
-
- - + + +
+ +
); diff --git a/src/pages/mentions-legales.tsx b/src/pages/mentions-legales.tsx index 6bb1a55..d8dfe49 100644 --- a/src/pages/mentions-legales.tsx +++ b/src/pages/mentions-legales.tsx @@ -5,9 +5,23 @@ import { NextPageWithLayout } from '@ts/types/app'; import { loadTranslation } from '@utils/helpers/i18n'; import { GetStaticProps, GetStaticPropsContext } from 'next'; import Head from 'next/head'; -import LegalNoticeContent, { meta } from '@content/pages/legal-notice.mdx'; +import LegalNoticeContent, { + intro, + meta, +} from '@content/pages/legal-notice.mdx'; +import PostHeader from '@components/PostHeader/PostHeader'; +import { ArticleMeta } from '@ts/types/articles'; const LegalNotice: NextPageWithLayout = () => { + const dates = { + publication: meta.publishedOn, + update: meta.updatedOn, + }; + + const pageMeta: ArticleMeta = { + dates, + }; + return ( <> @@ -15,11 +29,13 @@ const LegalNotice: NextPageWithLayout = () => {
-
-

{meta.title}

-
- - + + +
+ +
); diff --git a/src/pages/sujet/[slug].tsx b/src/pages/sujet/[slug].tsx index 527d529..bcea544 100644 --- a/src/pages/sujet/[slug].tsx +++ b/src/pages/sujet/[slug].tsx @@ -5,13 +5,14 @@ import { NextPageWithLayout } from '@ts/types/app'; import { SubjectProps } from '@ts/types/taxonomies'; import { loadTranslation } from '@utils/helpers/i18n'; import { GetStaticPaths, GetStaticProps, GetStaticPropsContext } from 'next'; -import Image from 'next/image'; import { ParsedUrlQuery } from 'querystring'; import styles from '@styles/pages/Subject.module.scss'; import { getAllSubjectsSlug, getSubjectBySlug, } from '@services/graphql/queries'; +import PostHeader from '@components/PostHeader/PostHeader'; +import { ArticleMeta } from '@ts/types/articles'; const Subject: NextPageWithLayout = ({ subject }) => { const getPostsList = () => { @@ -22,29 +23,18 @@ const Subject: NextPageWithLayout = ({ subject }) => { )); }; + const meta: ArticleMeta = { + website: subject.officialWebsite, + }; + return (
-
-

- {subject.featuredImage && ( - - {subject.featuredImage.altText} - - )} - {subject.title} -

- {subject.officialWebsite && ( -
-
{t`Official website:`}
-
{subject.officialWebsite}
-
- )} -
-
+
{subject.posts.length > 0 && (
diff --git a/src/pages/thematique/[slug].tsx b/src/pages/thematique/[slug].tsx index 74c2212..dca8f25 100644 --- a/src/pages/thematique/[slug].tsx +++ b/src/pages/thematique/[slug].tsx @@ -11,6 +11,7 @@ import { getAllThematicsSlug, getThematicBySlug, } from '@services/graphql/queries'; +import PostHeader from '@components/PostHeader/PostHeader'; const Thematic: NextPageWithLayout = ({ thematic }) => { const getPostsList = () => { @@ -23,10 +24,7 @@ const Thematic: NextPageWithLayout = ({ thematic }) => { return (
-
-

{thematic.title}

-
-
+
{thematic.posts.length > 0 && (
-- cgit v1.2.3