You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.0 KiB
72 lines
2.0 KiB
import App from "next/app" |
|
import Head from "next/head" |
|
import ErrorPage from "next/error" |
|
import { useRouter } from "next/router" |
|
import { DefaultSeo } from "next-seo" |
|
import { getStrapiMedia } from "utils/media" |
|
import { getGlobalData } from "utils/api" |
|
import "@/styles/index.css" |
|
|
|
const MyApp = ({ Component, pageProps }) => { |
|
// Extract the data we need |
|
const { global } = pageProps |
|
if (global == null) { |
|
return <ErrorPage statusCode={404} /> |
|
} |
|
|
|
const { metadata, favicon, metaTitleSuffix } = global.attributes |
|
|
|
return ( |
|
<> |
|
{/* Favicon */} |
|
<Head> |
|
<link |
|
rel="shortcut icon" |
|
href={getStrapiMedia(favicon.data.attributes.url)} |
|
/> |
|
</Head> |
|
{/* Global site metadata */} |
|
<DefaultSeo |
|
titleTemplate={`%s | ${metaTitleSuffix}`} |
|
title="Page" |
|
description={metadata.metaDescription} |
|
openGraph={{ |
|
images: Object.values( |
|
metadata.shareImage.data.attributes.formats |
|
).map((image) => { |
|
return { |
|
url: getStrapiMedia(image.url), |
|
width: image.width, |
|
height: image.height, |
|
} |
|
}), |
|
}} |
|
twitter={{ |
|
cardType: metadata.twitterCardType, |
|
handle: metadata.twitterUsername, |
|
}} |
|
/> |
|
{/* Display the content */} |
|
<Component {...pageProps} /> |
|
</> |
|
) |
|
} |
|
|
|
// getInitialProps disables automatic static optimization for pages that don't |
|
// have getStaticProps. So [[...slug]] pages still get SSG. |
|
// Hopefully we can replace this with getStaticProps once this issue is fixed: |
|
// https://github.com/vercel/next.js/discussions/10949 |
|
MyApp.getInitialProps = async (appContext) => { |
|
// Calls page's `getInitialProps` and fills `appProps.pageProps` |
|
const appProps = await App.getInitialProps(appContext) |
|
const globalLocale = await getGlobalData(appContext.router.locale) |
|
console.log('globalLocale',globalLocale); |
|
return { |
|
...appProps, |
|
pageProps: { |
|
global: globalLocale, |
|
}, |
|
} |
|
} |
|
|
|
export default MyApp
|
|
|