Merged in fix/BOOK-456-destination-city-validation-error (pull request #2975)

fix(BOOK-456): Added nullish() to destination pages content and sidepeek content schema to avoid unexpected errors

* fix(BOOK-456): Added nullish() to destination pages content and sidepeek content schema to avoid unexpected errors


Approved-by: Linus Flood
This commit is contained in:
Erik Tiekstra
2025-10-15 14:41:26 +00:00
committed by Linus Flood
parent e2403e11b3
commit c6f76b83cc
9 changed files with 114 additions and 95 deletions

View File

@@ -73,22 +73,24 @@ export const destinationCountryPageSchema = z.object({
sidepeek_content: z
.object({
heading: z.string(),
content: z.object({
json: z.any(),
embedded_itemsConnection: z.object({
edges: z.array(
z.object({
node: linkUnionSchema.transform((data) => {
const link = transformPageLink(data)
if (link) {
return link
}
return data
}),
})
),
}),
}),
content: z
.object({
json: z.any(),
embedded_itemsConnection: z.object({
edges: z.array(
z.object({
node: linkUnionSchema.transform((data) => {
const link = transformPageLink(data)
if (link) {
return link
}
return data
}),
})
),
}),
})
.nullish(),
})
.nullish(),
blocks: discriminatedUnionArray(blocksSchema.options).nullable(),
@@ -153,17 +155,21 @@ const blocksRefsSchema = z.discriminatedUnion("__typename", [
])
export const destinationCountryPageRefsSchema = z.object({
destination_country_page: z.object({
sidepeek_content: z.object({
content: z.object({
embedded_itemsConnection: z.object({
edges: z.array(
z.object({
node: linkRefsUnionSchema,
})
),
}),
}),
}),
sidepeek_content: z
.object({
content: z
.object({
embedded_itemsConnection: z.object({
edges: z.array(
z.object({
node: linkRefsUnionSchema,
})
),
}),
})
.nullish(),
})
.nullish(),
blocks: discriminatedUnionArray(blocksRefsSchema.options).nullable(),
seo_filters: destinationFiltersRefsSchema,
system: systemSchema,

View File

@@ -45,7 +45,7 @@ export function getConnections({
}
case DestinationCountryPageEnum.ContentStack.blocks.Content:
{
if (block.content.length) {
if (block?.content?.length) {
// TS has trouble infering the filtered types
// @ts-ignore
connections.push(...block.content)
@@ -56,7 +56,7 @@ export function getConnections({
})
}
if (destination_country_page.sidepeek_content) {
destination_country_page.sidepeek_content.content.embedded_itemsConnection.edges.forEach(
destination_country_page.sidepeek_content?.content?.embedded_itemsConnection.edges.forEach(
({ node }) => {
connections.push(node.system)
}