Feat/BOOK-424 campaign banner
Approved-by: Bianca Widstam
This commit is contained in:
@@ -16,6 +16,7 @@ import {
|
||||
transformCardBlock,
|
||||
transformCardBlockRefs,
|
||||
} from "../schemas/blocks/cardsGrid"
|
||||
import { linkConnectionRefsSchema } from "../schemas/blocks/utils/linkConnection"
|
||||
import {
|
||||
linkRefsUnionSchema,
|
||||
linkUnionSchema,
|
||||
@@ -594,7 +595,7 @@ export const alertSchema = z
|
||||
}),
|
||||
}),
|
||||
}),
|
||||
visible_on: z.array(z.string()).nullable().default([]),
|
||||
visible_on: z.array(z.string()).nullish().default([]),
|
||||
})
|
||||
.transform(
|
||||
({
|
||||
@@ -673,13 +674,12 @@ export const siteConfigSchema = z
|
||||
}
|
||||
}
|
||||
|
||||
const { sitewide_alert } = data.all_site_config.items[0]
|
||||
|
||||
const sitewideAlertWeb = sitewide_alert.alerts?.find((alert) =>
|
||||
alert.alertConnection.edges[0]?.node.visible_on?.includes(
|
||||
AlertVisibleOnEnum.WEB
|
||||
const sitewideAlertWeb =
|
||||
data.all_site_config.items[0].sitewide_alert.alerts?.find((alert) =>
|
||||
alert.alertConnection.edges[0]?.node.visible_on?.includes(
|
||||
AlertVisibleOnEnum.WEB
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
return {
|
||||
sitewideAlert: sitewideAlertWeb?.alertConnection.edges[0]?.node || null,
|
||||
@@ -709,7 +709,7 @@ const alertConnectionRefSchema = z.object({
|
||||
}),
|
||||
})
|
||||
),
|
||||
visible_on: z.array(z.string()).nullable().default([]),
|
||||
visible_on: z.array(z.string()).nullish().default([]),
|
||||
})
|
||||
|
||||
export const siteConfigRefSchema = z.object({
|
||||
@@ -737,3 +737,98 @@ export const siteConfigRefSchema = z.object({
|
||||
),
|
||||
}),
|
||||
})
|
||||
|
||||
const bannerSchema = z
|
||||
.object({
|
||||
tag: z.string(),
|
||||
text: z.string(),
|
||||
link: linkAndTitleSchema,
|
||||
booking_code: z.string().nullish(),
|
||||
visible_on: z.array(z.string()).nullish().default([]),
|
||||
})
|
||||
.transform(({ tag, text, link, visible_on, booking_code }) => {
|
||||
const linkUrl = link.link?.url || null
|
||||
return {
|
||||
tag,
|
||||
text,
|
||||
link: linkUrl
|
||||
? {
|
||||
url: linkUrl,
|
||||
title: link.title,
|
||||
}
|
||||
: null,
|
||||
booking_code,
|
||||
visible_on,
|
||||
}
|
||||
})
|
||||
|
||||
const bannerRefSchema = z
|
||||
.object({
|
||||
link: linkConnectionRefsSchema,
|
||||
visible_on: z.array(z.string()).nullish().default([]),
|
||||
system: systemSchema,
|
||||
})
|
||||
.transform(({ link, visible_on, system }) => {
|
||||
return {
|
||||
linkSystem: link,
|
||||
visible_on,
|
||||
system,
|
||||
}
|
||||
})
|
||||
|
||||
export const sitewideCampaignBannerSchema = z
|
||||
.object({
|
||||
all_sitewide_campaign_banner: z.object({
|
||||
items: z
|
||||
.array(
|
||||
z.object({
|
||||
bannerConnection: z.object({
|
||||
edges: z.array(
|
||||
z.object({
|
||||
node: bannerSchema,
|
||||
})
|
||||
),
|
||||
}),
|
||||
})
|
||||
)
|
||||
.max(1),
|
||||
}),
|
||||
})
|
||||
.transform((data) => {
|
||||
if (!data.all_sitewide_campaign_banner.items.length) {
|
||||
return null
|
||||
}
|
||||
|
||||
const sitewideCampaignBannerWeb =
|
||||
data.all_sitewide_campaign_banner.items[0].bannerConnection.edges.find(
|
||||
(banner) => banner.node.visible_on?.includes(AlertVisibleOnEnum.WEB)
|
||||
)
|
||||
|
||||
return sitewideCampaignBannerWeb?.node ?? null
|
||||
})
|
||||
|
||||
export const sitewideCampaignBannerRefSchema = z.object({
|
||||
all_sitewide_campaign_banner: z
|
||||
.object({
|
||||
items: z.array(
|
||||
z.object({
|
||||
bannerConnection: z.object({
|
||||
edges: z.array(
|
||||
z.object({
|
||||
node: bannerRefSchema,
|
||||
})
|
||||
),
|
||||
}),
|
||||
system: systemSchema,
|
||||
})
|
||||
),
|
||||
})
|
||||
.transform((data) => {
|
||||
const webBanner = data.items.find((item) => {
|
||||
const bannerNode = item.bannerConnection.edges[0]?.node
|
||||
return bannerNode?.visible_on?.includes(AlertVisibleOnEnum.WEB)
|
||||
})
|
||||
|
||||
return webBanner ?? null
|
||||
}),
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user