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 type { ReactElement, ReactNode } from "react"; import getConfig from 'next/config' export type NextPageWithLayout, TInitialProps = TProps> = NextPage & { 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; }; const { publicRuntimeConfig } = getConfig(); const MyApp = (({ Component, pageProps, backApiProtocol, backApiHost, backApiRootUrl, backApiVersion, frontAppHost, idNotBaseUrl, idNotAuthorizeEndpoint, idNotClientId, fcAuthorizeEndpoint, fcClientId, docaposteApiUrl }: AppPropsWithLayout) => { const getLayout = Component.getLayout ?? ((page) => ); 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; console.log("instance", instance); return getLayout(); }) as AppType; MyApp.getInitialProps = async () => { console.log("runtime config", publicRuntimeConfig); 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, }; }; export default MyApp;