Files
web/utils/entry.ts
Christian Andolf 127bb6a0a7 Merged in feat/SW-1381-new-startpage-page (pull request #1197)
feat(SW-1381): add initial start page

* feat(SW-1381): add initial start page

* fix: remove unused startpage template

remove translation key for middleware error page

* fix(SW-1381): add tracking SDK and feature flag to hide start page


Approved-by: Erik Tiekstra
Approved-by: Matilda Landström
Approved-by: Chuma Mcphoy (We Ahead)
2025-01-23 10:18:21 +00:00

48 lines
1.2 KiB
TypeScript

import { Lang } from "@/constants/languages"
import { batchEdgeRequest } from "@/lib/graphql/batchEdgeRequest"
import {
EntryByUrlBatch1,
EntryByUrlBatch2,
} from "@/lib/graphql/Query/ResolveEntry.graphql"
import { internalServerError } from "@/server/errors/next"
import { validateEntryResolveSchema } from "@/types/requests/entry"
export async function resolve(url: string, lang = Lang.en) {
const variables = { locale: lang, url: url || "/" }
// The maximum amount of content types you can query is 6, therefor more
// than that is being batched
const response = await batchEdgeRequest([
{
document: EntryByUrlBatch1,
variables,
},
{
document: EntryByUrlBatch2,
variables,
},
])
const validatedData = validateEntryResolveSchema.safeParse(response.data)
if (!validatedData.success) {
throw internalServerError(validatedData.error)
}
for (const value of Object.values(validatedData.data)) {
if (value.total) {
const { content_type_uid, uid } = value.items[0].system
return {
contentType: content_type_uid,
uid,
}
}
}
return {
contentType: null,
uid: null,
}
}