Files
web/packages/trpc/lib/routers/contentstack/campaignOverviewPage/utils.ts
Erik Tiekstra 4229e9b11b feat(SW-2283): Added carousel cards block to campaign overview page
Approved-by: Christian Andolf
Approved-by: Matilda Landström
2025-06-30 09:08:22 +00:00

58 lines
1.7 KiB
TypeScript

import {
generateTag,
generateTagsFromSystem,
} from "@scandic-hotels/trpc/utils/generateTag"
import { CampaignOverviewPageEnum } from "../../../types/campaignOverviewPageEnum"
import type { Lang } from "@scandic-hotels/common/constants/language"
import type { System } from "@scandic-hotels/trpc/routers/contentstack/schemas/system"
import type { CampaignOverviewPageRefs } from "../../../types/campaignOverviewPage"
export function generatePageTags(
validatedData: CampaignOverviewPageRefs,
lang: Lang
): string[] {
const connections = getConnections(validatedData)
return [
generateTagsFromSystem(lang, connections),
generateTag(lang, validatedData.campaign_overview_page.system.uid),
].flat()
}
export function getConnections({
campaign_overview_page,
}: CampaignOverviewPageRefs) {
const connections: System["system"][] = [campaign_overview_page.system]
if (campaign_overview_page.header.navigation_links) {
campaign_overview_page.header.navigation_links.forEach((link) => {
if (link.link) {
connections.push(link.link)
}
})
}
if (campaign_overview_page.top_campaignConnection) {
campaign_overview_page.top_campaignConnection.edges.forEach(({ node }) => {
connections.push(node.system)
})
}
if (campaign_overview_page.blocks) {
campaign_overview_page.blocks.forEach((block) => {
switch (block.__typename) {
case CampaignOverviewPageEnum.ContentStack.blocks.CarouselCards: {
block.carousel_cards.card_groups.forEach((group) => {
group.cardConnection.edges.forEach(({ node }) => {
connections.push(node.system)
})
})
break
}
}
})
}
return connections
}