107 lines
3.5 KiB
TypeScript
107 lines
3.5 KiB
TypeScript
import { DefaultLayout } from "@Front/Components/LayoutTemplates/DefaultLayout";
|
|
import { FrontendVariables } from "@Front/Config/VariablesFront";
|
|
import "@Front/index.scss";
|
|
import type { NextPage } from "next";
|
|
import type { AppType, AppProps } from "next/app";
|
|
import { useEffect, type ReactElement, type ReactNode } from "react";
|
|
import getConfig from "next/config";
|
|
import { GoogleTagManager } from "@next/third-parties/google";
|
|
import { hotjar } from "react-hotjar";
|
|
|
|
export type NextPageWithLayout<TProps = Record<string, unknown>, TInitialProps = TProps> = NextPage<TProps, TInitialProps> & {
|
|
getLayout?: (page: ReactElement) => ReactNode;
|
|
};
|
|
|
|
type AppPropsWithLayout = AppProps & {
|
|
Component: NextPageWithLayout;
|
|
} & {
|
|
backApiProtocol: string;
|
|
backApiHost: string;
|
|
backApiRootUrl: string;
|
|
backApiVersion: string;
|
|
frontAppHost: string;
|
|
idNotBaseUrl: string;
|
|
idNotAuthorizeEndpoint: string;
|
|
idNotClientId: string;
|
|
fcAuthorizeEndpoint: string;
|
|
fcClientId: string;
|
|
docaposteApiUrl: string;
|
|
hotjarSiteId: number;
|
|
hotjarVersion: number;
|
|
};
|
|
|
|
const { publicRuntimeConfig } = getConfig();
|
|
|
|
const MyApp = (({
|
|
Component,
|
|
pageProps,
|
|
backApiProtocol,
|
|
backApiHost,
|
|
backApiRootUrl,
|
|
backApiVersion,
|
|
frontAppHost,
|
|
idNotBaseUrl,
|
|
idNotAuthorizeEndpoint,
|
|
idNotClientId,
|
|
fcAuthorizeEndpoint,
|
|
fcClientId,
|
|
docaposteApiUrl,
|
|
hotjarSiteId,
|
|
hotjarVersion,
|
|
}: AppPropsWithLayout) => {
|
|
const getLayout = Component.getLayout ?? ((page) => <DefaultLayout children={page}></DefaultLayout>);
|
|
|
|
const instance = FrontendVariables.getInstance();
|
|
instance.BACK_API_PROTOCOL = backApiProtocol;
|
|
instance.BACK_API_HOST = backApiHost;
|
|
instance.BACK_API_ROOT_URL = backApiRootUrl;
|
|
instance.BACK_API_VERSION = backApiVersion;
|
|
instance.FRONT_APP_HOST = frontAppHost;
|
|
instance.IDNOT_BASE_URL = idNotBaseUrl;
|
|
instance.IDNOT_AUTHORIZE_ENDPOINT = idNotAuthorizeEndpoint;
|
|
instance.IDNOT_CLIENT_ID = idNotClientId;
|
|
instance.FC_AUTHORIZE_ENDPOINT = fcAuthorizeEndpoint;
|
|
instance.FC_CLIENT_ID = fcClientId;
|
|
instance.DOCAPOST_API_URL = docaposteApiUrl;
|
|
instance.HOTJAR_SITE_ID = hotjarSiteId;
|
|
instance.HOJAR_VERSION = hotjarVersion;
|
|
useEffect(() => {
|
|
if (!hotjarSiteId || !hotjarVersion) {
|
|
console.warn("No hotjar site id or version provided");
|
|
return;
|
|
}
|
|
console.log("Intializing hotjar");
|
|
hotjar.initialize({
|
|
id: hotjarSiteId,
|
|
sv: hotjarVersion,
|
|
});
|
|
}, [hotjarSiteId, hotjarVersion]);
|
|
|
|
return getLayout(
|
|
<Component {...pageProps}>
|
|
<GoogleTagManager gtmId="GTM-5GLJN86P" />
|
|
</Component>,
|
|
);
|
|
}) as AppType;
|
|
|
|
MyApp.getInitialProps = async () => {
|
|
return {
|
|
backApiProtocol: publicRuntimeConfig.NEXT_PUBLIC_BACK_API_PROTOCOL,
|
|
backApiHost: publicRuntimeConfig.NEXT_PUBLIC_BACK_API_HOST,
|
|
backApiRootUrl: publicRuntimeConfig.NEXT_PUBLIC_BACK_API_ROOT_URL,
|
|
backApiVersion: publicRuntimeConfig.NEXT_PUBLIC_BACK_API_VERSION,
|
|
frontAppHost: publicRuntimeConfig.NEXT_PUBLIC_FRONT_APP_HOST,
|
|
frontAppPort: publicRuntimeConfig.NEXT_PUBLIC_FRONT_APP_PORT,
|
|
idNotBaseUrl: publicRuntimeConfig.NEXT_PUBLIC_IDNOT_BASE_URL,
|
|
idNotAuthorizeEndpoint: publicRuntimeConfig.NEXT_PUBLIC_IDNOT_AUTHORIZE_ENDPOINT,
|
|
idNotClientId: publicRuntimeConfig.NEXT_PUBLIC_IDNOT_CLIENT_ID,
|
|
fcAuthorizeEndpoint: publicRuntimeConfig.NEXT_PUBLIC_FC_AUTHORIZE_ENDPOINT,
|
|
fcClientId: publicRuntimeConfig.NEXT_PUBLIC_FC_CLIENT_ID,
|
|
docaposteApiUrl: publicRuntimeConfig.NEXT_PUBLIC_DOCAPOST_API_URL,
|
|
hotjarSiteId: publicRuntimeConfig.NEXT_PUBLIC_HOTJAR_SITE_ID,
|
|
hotjarVersion: publicRuntimeConfig.NEXT_PUBLIC_HOTJAR_VERSION,
|
|
};
|
|
};
|
|
|
|
export default MyApp;
|