From 140b61e1d700f9eb2e9a69384dff6857af9a2123 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=A4ser?= Date: Tue, 7 Feb 2023 09:06:43 +0100 Subject: [PATCH] style: refactor initial props --- apps/website/pages/_app.tsx | 46 +++++++++++++++++-- apps/website/pages/home/index.tsx | 31 +------------ apps/website/pages/index.tsx | 25 +--------- apps/website/pages/lost-password/index.tsx | 34 ++------------ apps/website/pages/reset-password/index.tsx | 37 ++------------- apps/website/pages/sign-in/index.tsx | 27 +---------- apps/website/pages/sign-up/index.tsx | 34 ++------------ .../pages/signup-confirmation/index.tsx | 29 ------------ 8 files changed, 56 insertions(+), 207 deletions(-) diff --git a/apps/website/pages/_app.tsx b/apps/website/pages/_app.tsx index 003bfd7..cdd5b31 100644 --- a/apps/website/pages/_app.tsx +++ b/apps/website/pages/_app.tsx @@ -1,9 +1,13 @@ -import {AppProps} from 'next/app'; +import App, {AppProps} from 'next/app'; import {SessionProvider} from "next-auth/react"; -import { library } from "@fortawesome/fontawesome-svg-core"; -import { config } from '@fortawesome/fontawesome-svg-core'; +import {config, library} from "@fortawesome/fontawesome-svg-core"; import '@fortawesome/fontawesome-svg-core/styles.css'; import {faBagShopping, faRightToBracket, faUserPlus} from "@fortawesome/free-solid-svg-icons"; +import axios from "axios"; +import delve from 'dlv'; + +import {environment} from "../environments/environment"; +import './styles.css'; config.autoAddCss = false; @@ -11,9 +15,25 @@ library.add(faRightToBracket); library.add(faUserPlus); library.add(faBagShopping); -import './styles.css'; +interface CustomAppProps extends AppProps { + menuHeader: object[], + menuFooter: object[], + page: object, + seo: object, +} + +const getPageMetadata = async (path) => { + try { + return await axios.get(`${environment.strapiApiUrl}/pages?filters[slug]=${path === '/' ? 'home' : path.slice(1, path.length)}&populate=deep`); + } catch (e) { + console.error(e); + return Promise.resolve({}) + } +} + -function CustomApp({Component, pageProps: {session, ...pageProps}}: AppProps) { +const CustomApp = ({Component, pageProps: {session, ...pageProps}, menuFooter, menuHeader, seo}: CustomAppProps) => { + pageProps = {...pageProps, menuFooter, menuHeader, seo}; return ( @@ -21,4 +41,20 @@ function CustomApp({Component, pageProps: {session, ...pageProps}}: AppProps) { ); } +CustomApp.getInitialProps = async (context) => { + const appProps = await App.getInitialProps(context); + const path = context.router.pathname; + const menuHeader = await axios.get(`${environment.strapiApiUrl}/menus/1?nested&populate=deep`); + const menuFooter = await axios.get(`${environment.strapiApiUrl}/menus/2?nested&populate=deep`); + const page = await getPageMetadata(path); + + return { + ...appProps, + menuHeader: delve(menuHeader, 'data.data.attributes.items.data', []), + menuFooter: delve(menuFooter, 'data.data.attributes.items.data', []), + page: delve(page, "data.data.0.attributes", {}), + seo: delve(page, "data.data.0.attributes.seo", {}) + } +} + export default CustomApp; diff --git a/apps/website/pages/home/index.tsx b/apps/website/pages/home/index.tsx index 2ea756d..01b8754 100644 --- a/apps/website/pages/home/index.tsx +++ b/apps/website/pages/home/index.tsx @@ -1,36 +1,7 @@ -import axios from "axios"; -import delve from "dlv"; - import SeoConfig from "../../components/seo-config/seo-config"; import Layout from "../../components/layout/layout"; -import {config} from "../../config"; -import {environment} from "../../environments/environment"; - -const getPageMetadata = async (path) => { - try { - return await axios.get(`${environment.strapiApiUrl}/pages?filters[slug]=${path === '/' ? 'home' : path.slice(1, path.length)}&populate=deep`); - } catch (e) { - console.error(e); - return Promise.resolve({}) - } -} - -export const getServerSideProps = async (context) => { - const path = context.resolvedUrl; - const menuHeader = await axios.get(`${environment.strapiApiUrl}/menus/1?nested&populate=deep`); - const menuFooter = await axios.get(`${environment.strapiApiUrl}/menus/2?nested&populate=deep`); - const page = await getPageMetadata(path); - return { - props: { - menuHeader: delve(menuHeader, 'data.data.attributes.items.data', []), - menuFooter: delve(menuFooter, 'data.data.attributes.items.data', []), - page: delve(page, "data.data.0.attributes", {}), - seo: delve(page, "data.data.0.attributes.seo", {}) - } - } -} -export function Home({menuHeader, menuFooter, page, seo}) { +export function Home({menuHeader, menuFooter, seo}) { return ( <> diff --git a/apps/website/pages/index.tsx b/apps/website/pages/index.tsx index 0922b15..ddbdfe9 100644 --- a/apps/website/pages/index.tsx +++ b/apps/website/pages/index.tsx @@ -7,31 +7,8 @@ import Layout from "../components/layout/layout"; import {config} from "../config"; import {environment} from "../environments/environment"; -const getPageMetadata = async (path) => { - try { - return await axios.get(`${environment.strapiApiUrl}/pages?filters[slug]=${path === '/' ? 'home' : path.slice(1, path.length)}&populate=deep`); - } catch (e) { - console.error(e); - return Promise.resolve({}) - } -} - -export const getServerSideProps = async (context) => { - const path = context.resolvedUrl; - const menuHeader = await axios.get(`${environment.strapiApiUrl}/menus/1?nested&populate=deep`); - const menuFooter = await axios.get(`${environment.strapiApiUrl}/menus/2?nested&populate=deep`); - const page = await getPageMetadata(path); - return { - props: { - menuHeader: delve(menuHeader, 'data.data.attributes.items.data', []), - menuFooter: delve(menuFooter, 'data.data.attributes.items.data', []), - page: delve(page, "data.data.0.attributes", {}), - seo: delve(page, "data.data.0.attributes.seo", {}) - } - } -} - export function Index({menuHeader, menuFooter, page, seo}) { + console.log(menuHeader, menuFooter); return ( <> diff --git a/apps/website/pages/lost-password/index.tsx b/apps/website/pages/lost-password/index.tsx index f487d46..8413ea2 100644 --- a/apps/website/pages/lost-password/index.tsx +++ b/apps/website/pages/lost-password/index.tsx @@ -1,41 +1,14 @@ -import axios from "axios"; -import delve from "dlv"; import {useState} from "react"; import {SubmitHandler, useForm} from "react-hook-form"; import SeoConfig from "../../components/seo-config/seo-config"; import Layout from "../../components/layout/layout"; -import {environment} from "../../environments/environment"; import {LostPasswordInputs} from "../../libs/api"; import {lostPasswordStrapi} from "../../libs/auth"; import styles from "../sign-up/index.module.scss"; -const getPageMetadata = async (path) => { - try { - return await axios.get(`${environment.strapiApiUrl}/pages?filters[slug]=${path === '/' ? 'home' : path.slice(1, path.length)}&populate=deep`); - } catch (e) { - console.error(e); - return Promise.resolve({}) - } -} - -export const getServerSideProps = async (context) => { - const path = context.resolvedUrl; - const menuHeader = await axios.get(`${environment.strapiApiUrl}/menus/1?nested&populate=deep`); - const menuFooter = await axios.get(`${environment.strapiApiUrl}/menus/2?nested&populate=deep`); - const page = await getPageMetadata(path); - return { - props: { - menuHeaders: delve(menuHeader, 'data.data.attributes.items.data', []), - menuFooter: delve(menuFooter, 'data.data.attributes.items.data', []), - page: delve(page, "data.data.0.attributes", {}), - seo: delve(page, "data.data.0.attributes.seo", {}) - } - } -} - -export function LostPassword({menuHeaders, menuFooter, page, seo}) { +export function LostPassword({menuHeader, menuFooter, page, seo}) { const {register, handleSubmit, formState: {errors}} = useForm({ defaultValues: { email: "" @@ -59,7 +32,7 @@ export function LostPassword({menuHeaders, menuFooter, page, seo}) { return ( <> - +
@@ -85,7 +58,8 @@ export function LostPassword({menuHeaders, menuFooter, page, seo}) { {isBoolean(isSent) && !isSent ? (
- Oups ! Une erreur est survenue durant l'envoi de l'email. + Oups ! Une erreur est survenue durant l'envoi de + l'email. Rapprochez vous de nos équipes pour en savoir plus.
) : ('')}
diff --git a/apps/website/pages/reset-password/index.tsx b/apps/website/pages/reset-password/index.tsx index 4680a78..c07909c 100644 --- a/apps/website/pages/reset-password/index.tsx +++ b/apps/website/pages/reset-password/index.tsx @@ -1,42 +1,15 @@ -import delve from "dlv"; -import axios from "axios"; import {FieldError, SubmitHandler, useForm} from "react-hook-form"; +import {useRouter} from "next/router"; +import {useState} from "react"; import SeoConfig from "../../components/seo-config/seo-config"; import Layout from "../../components/layout/layout"; -import {environment} from "../../environments/environment"; import {ResetPasswordInputs} from "../../libs/api"; - -import styles from './index.module.scss'; -import {useRouter} from "next/router"; -import {useState} from "react"; import {resetPasswordStrapi} from "../../libs/auth"; -const getPageMetadata = async (path) => { - try { - return await axios.get(`${environment.strapiApiUrl}/pages?filters[slug]=${path === '/' ? 'home' : path.slice(1, path.length)}&populate=deep`); - } catch (e) { - console.error(e); - return Promise.resolve({}) - } -} - -export const getServerSideProps = async (context) => { - const path = context.resolvedUrl; - const menuHeader = await axios.get(`${environment.strapiApiUrl}/menus/1?nested&populate=deep`); - const menuFooter = await axios.get(`${environment.strapiApiUrl}/menus/2?nested&populate=deep`); - const page = await getPageMetadata(path); - return { - props: { - menuHeaders: delve(menuHeader, 'data.data.attributes.items.data', []), - menuFooter: delve(menuFooter, 'data.data.attributes.items.data', []), - page: delve(page, "data.data.0.attributes", {}), - seo: delve(page, "data.data.0.attributes.seo", {}) - } - } -} +import styles from './index.module.scss'; -export function ResetPassword({menuHeaders, menuFooter, page, seo}) { +export function ResetPassword({menuHeader, menuFooter, seo}) { const router = useRouter(); const [success, setSuccess] = useState(null); @@ -69,7 +42,7 @@ export function ResetPassword({menuHeaders, menuFooter, page, seo}) { return ( <> - +
diff --git a/apps/website/pages/sign-in/index.tsx b/apps/website/pages/sign-in/index.tsx index f3c5e65..8d9cbd7 100644 --- a/apps/website/pages/sign-in/index.tsx +++ b/apps/website/pages/sign-in/index.tsx @@ -1,38 +1,13 @@ -import delve from "dlv"; -import axios from "axios"; import {useRouter} from "next/router"; import SeoConfig from "../../components/seo-config/seo-config"; import Layout from "../../components/layout/layout"; import {createJwtToken} from "../../libs/auth"; -import {environment} from "../../environments/environment"; import styles from './index.module.scss'; -const getPageMetadata = async (path) => { - try { - return await axios.get(`${environment.strapiApiUrl}/pages?filters[slug]=${path === '/' ? 'home' : path.slice(1, path.length)}&populate=deep`); - } catch (e) { - console.error(e); - return Promise.resolve({}) - } -} - -export const getServerSideProps = async (context) => { - const path = context.resolvedUrl; - const menuFooter = await axios.get(`${environment.strapiApiUrl}/menus/2?nested&populate=deep`); - const page = await getPageMetadata(path); - - return { - props: { - menuFooter: delve(menuFooter, 'data.data.attributes.items.data', []), - page: delve(page, "data.data.0.attributes", {}), - seo: delve(page, "data.data.0.attributes.seo", {}) - } - } -} - export function SignIn({seo, menuFooter}) { + console.log(seo); const router = useRouter(); const onSubmit = async (e) => { diff --git a/apps/website/pages/sign-up/index.tsx b/apps/website/pages/sign-up/index.tsx index 877c17f..d168f0c 100644 --- a/apps/website/pages/sign-up/index.tsx +++ b/apps/website/pages/sign-up/index.tsx @@ -1,6 +1,5 @@ import styles from './index.module.scss'; import axios from "axios"; -import delve from 'dlv'; import {useRouter} from "next/router"; import {SubmitHandler, useForm} from 'react-hook-form'; import {BehaviorSubject, catchError, debounceTime, distinctUntilChanged, filter, map, of, switchMap} from "rxjs"; @@ -10,37 +9,10 @@ import SeoConfig from "../../components/seo-config/seo-config"; import Layout from "../../components/layout/layout"; import {Inputs, signUpRequest} from "../../libs/api"; import {createJwtToken} from "../../libs/auth"; -import {config} from "../../config"; -import {environment} from "../../environments/environment"; -const getPageMetadata = async (path) => { - try { - return await axios.get(`${environment.strapiApiUrl}/pages?filters[slug]=${path === '/' ? 'home' : path.slice(1, path.length)}&populate=deep`); - } catch (e) { - console.error(e); - return Promise.resolve({}) - } -} - -export const getServerSideProps = async (context) => { - const path = context.resolvedUrl; - const menuHeader = await axios.get(`${environment.strapiApiUrl}/menus/1?nested&populate=deep`); - const menuFooter = await axios.get(`${environment.strapiApiUrl}/menus/2?nested&populate=deep`); - const page = await getPageMetadata(path); - - return { - props: { - menuHeaders: delve(menuHeader, 'data.data.attributes.items.data', []), - menuFooter: delve(menuFooter, 'data.data.attributes.items.data', []), - page: delve(page, "data.data.0.attributes", {}), - seo: delve(page, "data.data.0.attributes.seo", {}) - } - } -} - -export function SignUp({seo, menuHeaders, menuFooter}) { +export function SignUp({seo, menuHeader, menuFooter}) { const router = useRouter(); - const {register, handleSubmit, watch, getValues, formState: {errors}, setError, clearErrors} = useForm({ + const {register, handleSubmit, getValues, formState: {errors}, setError, clearErrors} = useForm({ defaultValues: { email: "", username: "", @@ -106,7 +78,7 @@ export function SignUp({seo, menuHeaders, menuFooter}) { return ( <> - +
diff --git a/apps/website/pages/signup-confirmation/index.tsx b/apps/website/pages/signup-confirmation/index.tsx index 3a495f0..89d3c04 100644 --- a/apps/website/pages/signup-confirmation/index.tsx +++ b/apps/website/pages/signup-confirmation/index.tsx @@ -1,34 +1,5 @@ -import axios from "axios"; -import delve from 'dlv'; - import SeoConfig from "../../components/seo-config/seo-config"; import Layout from "../../components/layout/layout"; -import {config} from "../../config"; -import {environment} from "../../environments/environment"; - -const getPageMetadata = async (path) => { - try { - return await axios.get(`${environment.strapiApiUrl}/pages?filters[slug]=${path === '/' ? 'home' : path.slice(1, path.length)}&populate=deep`); - } catch (e) { - console.error(e); - return Promise.resolve({}) - } -} - -export const getServerSideProps = async (context) => { - const path = context.resolvedUrl; - const menuHeader = await axios.get(`${environment.strapiApiUrl}/menus/1?nested&populate=deep`); - const menuFooter = await axios.get(`${environment.strapiApiUrl}/menus/2?nested&populate=deep`); - const page = await getPageMetadata(path); - return { - props: { - menuHeader: delve(menuHeader, 'data.data.attributes.items.data', []), - menuFooter: delve(menuFooter, 'data.data.attributes.items.data', []), - page: delve(page, "data.data.0.attributes", {}), - seo: delve(page, "data.data.0.attributes.seo", {}) - } - } -} export function SignupConfirmation({menuHeader, menuFooter, page, seo}) { return (