Files
web/packages/trpc/lib/routers/contentstack/promoCampaignPage/utils.ts
Erik Tiekstra c6f76b83cc 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
2025-10-15 14:41:26 +00:00

46 lines
1.3 KiB
TypeScript

import {
PromoCampaignPageEnum,
type PromoCampaignPageRefs,
} from "../../../types/promoCampaignPage"
import { generateTag, generateTagsFromSystem } from "../../../utils/generateTag"
import type { Lang } from "@scandic-hotels/common/constants/language"
import type { System } from "../schemas/system"
export function generatePageTags(
validatedData: PromoCampaignPageRefs,
lang: Lang
): string[] {
const connections = getConnections(validatedData)
return [
generateTagsFromSystem(lang, connections),
generateTag(lang, validatedData.promo_campaign_page.system.uid),
].flat()
}
export function getConnections({ promo_campaign_page }: PromoCampaignPageRefs) {
const connections: System["system"][] = [promo_campaign_page.system]
if (promo_campaign_page.blocks) {
promo_campaign_page.blocks.forEach((block) => {
switch (block.__typename) {
case PromoCampaignPageEnum.ContentStack.blocks.Accordion: {
if (block.accordion.length) {
connections.push(...block.accordion)
}
break
}
case PromoCampaignPageEnum.ContentStack.blocks.Content:
{
if (block?.content?.length) {
connections.push(...block.content)
}
}
break
}
})
}
return connections
}