import { builder } from '@tempi/core-renderer'; export const getServerSidePropsLandingPage = async ( context: any, slug: string, languageCode?: string, ) => { // get information provided by middleware const envs = (context.req as any).envs; const isMobile = (context.req as any).isMobile; const homePageSlug = '/'; const notFound = '404'; const forbiddenErrorCode = '403000'; const hostname = context.req.headers.host; builder.init(hostname, { env: envs['ENV'], }); // call to page-build bff to get page data by slug const isProd = process.env.NODE_ENV === 'production'; const device = isMobile ? 'mobile' : 'desktop'; try { const page = await builder.getPublicPageV2( { slug, device, languageCode, }, isProd, ); const { content, isHomepage } = page || {}; if (isHomepage && slug !== homePageSlug) return { redirect: { statusCode: 301, destination: languageCode ? `/${languageCode}` : homePageSlug, }, }; // if config of page 404 => return notfound if (!!content?.[notFound]) throw new Error('Not Found'); const { pbConfig, ...restPage } = page || {}; return { props: { page: restPage, envs, slug, languageCode: languageCode || null, hostname, requestUUID: context.req.uuid || null, prefixLangUrl: languageCode && languageCode === page.languageCode ? `/${languageCode}` : '', }, }; } catch (err: any) { if (err?.response?.code === forbiddenErrorCode) { return { props: { envs, slug, languageCode: languageCode || null, hostname, errorCode: forbiddenErrorCode, }, }; } return { notFound: true, }; } };