mirror of
https://github.com/lux-tel/websites.git
synced 2026-10-30 20:31:36 +00:00
49 lines
1.2 KiB
TypeScript
49 lines
1.2 KiB
TypeScript
import 'server-only';
|
|
|
|
import logger from '@/lib/logger';
|
|
import { client } from '@/lib/sanity/sanity.client';
|
|
import {
|
|
QUERY_GET_SITE_SETTINGS,
|
|
type QUERY_GET_SITE_SETTINGS_RETURN_TYPE,
|
|
} from '@session/sanity-cms/queries/getSiteSettings';
|
|
|
|
let siteData: SiteData | null = null;
|
|
|
|
type SiteData = {
|
|
settings: QUERY_GET_SITE_SETTINGS_RETURN_TYPE[0];
|
|
};
|
|
|
|
export const getInitialSiteDataForSSR = async (): Promise<SiteData> => {
|
|
if (siteData) {
|
|
return siteData;
|
|
}
|
|
const [err, result] = await client.nextFetch<QUERY_GET_SITE_SETTINGS_RETURN_TYPE>({
|
|
query: QUERY_GET_SITE_SETTINGS,
|
|
});
|
|
|
|
if (err) {
|
|
logger.error(err);
|
|
throw err;
|
|
}
|
|
const siteSettings = result[0];
|
|
|
|
if (!siteSettings) {
|
|
logger.info('Site settings not found');
|
|
throw new Error('Site settings not found');
|
|
}
|
|
|
|
siteData = { settings: siteSettings };
|
|
|
|
return { settings: siteSettings };
|
|
};
|
|
|
|
export const getLandingPageSlug = async () => {
|
|
const { settings } = await getInitialSiteDataForSSR();
|
|
const landingSlug = settings?.landingPage?.slug?.current;
|
|
if (!landingSlug) {
|
|
logger.warn('No landing page set in settings');
|
|
return null;
|
|
}
|
|
return landingSlug;
|
|
};
|