Files
web/packages/trpc/lib/routers/contentstack/profilingConsent/output.ts
Matilda Landström f19d5fa083 Merged in fix/handle-unpublished-profiling-consent (pull request #3275)
fix: handle unpublished profiling consent

* fix: handle unpublished profiling consent


Approved-by: Emma Zettervall
Approved-by: Chuma Mcphoy (We Ahead)
2025-12-03 08:41:33 +00:00

50 lines
1.1 KiB
TypeScript

import { z } from "zod"
export const bannerSchema = z.object({
button_text: z.string(),
header: z.string(),
sub_header: z.string(),
})
export const modalSchema = z
.object({
header: z.string(),
sub_header: z.string(),
cards: z.object({
card: z.array(
z.object({
image_type: z.string(),
preamble: z.string(),
title: z.string(),
})
),
}),
})
.transform(({ header, sub_header, cards }) => ({
header,
sub_header,
cards: cards.card,
}))
export const profilingConsentSchema = z
.object({
all_profiling_consent: z.object({
items: z.array(
z.object({
main_icon: z.string(),
profiling_consent_banner: bannerSchema,
profiling_consent_modal: modalSchema,
})
),
}),
})
.transform((data) => {
const profiling_consent = data.all_profiling_consent.items[0]
if (!profiling_consent) return null
return {
icon: profiling_consent.main_icon,
banner: profiling_consent.profiling_consent_banner,
modal: profiling_consent.profiling_consent_modal,
}
})