Add initial project files
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
import 'server-only';
|
||||
import { cache } from 'react';
|
||||
import { createEmptySiteSettings, normalizeRoutePath } from '../data/normalize';
|
||||
import type { PageRenderData } from '../types';
|
||||
import { getWebRuntimeAPI } from './web-runtime-api';
|
||||
|
||||
export const resolvePageRenderData = cache(
|
||||
async (locale: string, requestedPath: string): Promise<PageRenderData | null> => {
|
||||
const api = getWebRuntimeAPI();
|
||||
const request = {
|
||||
locale: locale.trim(),
|
||||
path: normalizeRoutePath(requestedPath)
|
||||
};
|
||||
const resolution = await api.resolvePage(request);
|
||||
|
||||
if (!resolution || resolution.page.status !== 'published') {
|
||||
return null;
|
||||
}
|
||||
|
||||
const settings = resolution.settings ?? (await api.getSettings(request.locale));
|
||||
|
||||
return {
|
||||
page: resolution.page,
|
||||
settings: settings ?? createEmptySiteSettings(request.locale),
|
||||
languageAlternatives: resolution.languageAlternatives
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
export async function resolvePreviewRenderData(token: string): Promise<PageRenderData | null> {
|
||||
if (!token) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const resolution = await getWebRuntimeAPI().getPreview(token);
|
||||
|
||||
if (!resolution) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return {
|
||||
page: resolution.page,
|
||||
settings: resolution.settings ?? createEmptySiteSettings(resolution.page.locale),
|
||||
languageAlternatives: resolution.languageAlternatives
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user