Merged in feat/rework-contentstack (pull request #3493)

Feat(SW-3708): refactor contentstack fetching (removing all refs) and cache invalidation

* Remove all REFS

* Revalidate correct language

* PR fixes

* PR fixes

* Throw when errors from contentstack api


Approved-by: Joakim Jäderberg
This commit is contained in:
Linus Flood
2026-01-27 12:38:36 +00:00
parent a5e214f783
commit 5fc93472f4
193 changed files with 489 additions and 9018 deletions
@@ -1,17 +1,9 @@
import { z } from "zod"
import { ContentEnum } from "../../../../types/content"
import { SidebarEnums } from "../../../../types/sidebar"
import {
imageContainerRefsSchema,
imageContainerSchema,
} from "../blocks/imageContainer"
import { sysAssetRefsSchema, sysAssetSchema } from "../blocks/sysAsset"
import {
rawLinkRefsUnionSchema,
rawLinkUnionSchema,
transformPageLink,
} from "../pageLinks"
import { imageContainerSchema } from "../blocks/imageContainer"
import { sysAssetSchema } from "../blocks/sysAsset"
import { rawLinkUnionSchema, transformPageLink } from "../pageLinks"
export const contentSchema = z.object({
typename: z
@@ -50,40 +42,3 @@ export const contentSchema = z.object({
}
}),
})
const actualRefs = z.discriminatedUnion("__typename", [
imageContainerRefsSchema,
...rawLinkRefsUnionSchema.options,
])
export const contentRefsSchema = z.object({
content: z
.object({
content: z.object({
embedded_itemsConnection: z.object({
edges: z.array(
z.object({
node: z.discriminatedUnion("__typename", [
sysAssetRefsSchema,
...actualRefs.options,
]),
})
),
}),
}),
})
.transform((data) => {
return data?.content?.embedded_itemsConnection.edges
.map(({ node }) => {
switch (node.__typename) {
case ContentEnum.blocks.SysAsset:
return node.system && (node.permanent_url || node.url)
? { system: node.system, url: node.permanent_url || node.url }
: null
default:
return node.system
}
})
.filter((node) => !!node)
}),
})
@@ -3,7 +3,6 @@ import { z } from "zod"
import { JoinLoyaltyContactEnums } from "../../../../types/joinLoyaltyContact"
import { SidebarEnums } from "../../../../types/sidebar"
import { buttonSchema } from "../blocks/utils/buttonLinkSchema"
import { linkConnectionRefsSchema } from "../blocks/utils/linkConnection"
export const contactSchema = z.object({
contact: z.array(
@@ -49,9 +48,3 @@ export const joinLoyaltyContactSchema = z.object({
})
.merge(contactSchema),
})
export const joinLoyaltyContactRefsSchema = z.object({
join_loyalty_contact: z.object({
button: linkConnectionRefsSchema,
}),
})
@@ -1,7 +1,7 @@
import { z } from "zod"
import { SidebarEnums } from "../../../../types/sidebar"
import { shortcutsBlockSchema, shortcutsRefsSchema } from "../blocks/shortcuts"
import { shortcutsBlockSchema } from "../blocks/shortcuts"
export const quickLinksSchema = z
.object({
@@ -11,5 +11,3 @@ export const quickLinksSchema = z
.default(SidebarEnums.blocks.QuickLinks),
})
.merge(shortcutsBlockSchema)
export const quickLinksRefschema = shortcutsRefsSchema
@@ -4,9 +4,7 @@ import { scriptedCardThemeEnum } from "../../../../enums/scriptedCard"
import { SidebarEnums } from "../../../../types/sidebar"
import {
getInfoCardThemeFromDeprecatedCardTheme,
infoCardBlockRefsSchema,
infoCardBlockSchema,
transformCardBlockRefs,
transformInfoCardBlock,
} from "../blocks/cardsGrid"
@@ -41,25 +39,3 @@ export const scriptedCardsSchema = z.object({
}
}),
})
export const scriptedCardRefschema = z.object({
scripted_card: z
.object({
scripted_cardConnection: z.object({
edges: z.array(
z.object({
node: infoCardBlockRefsSchema,
})
),
}),
})
.transform((data) => {
let card = null
if (data.scripted_cardConnection.edges.length) {
card = transformCardBlockRefs(
data.scripted_cardConnection.edges[0].node
)
}
return card
}),
})
@@ -2,11 +2,9 @@ import { z } from "zod"
import { SidebarEnums } from "../../../../types/sidebar"
import {
teaserCardBlockRefsSchema,
teaserCardBlockSchema,
transformTeaserCardBlock,
} from "../blocks/cards/teaserCard"
import { transformCardBlockRefs } from "../blocks/cardsGrid"
export const teaserCardsSchema = z.object({
typename: z
@@ -36,23 +34,3 @@ export const teaserCardsSchema = z.object({
}
}),
})
export const teaserCardRefschema = z.object({
teaser_card: z
.object({
teaser_cardConnection: z.object({
edges: z.array(
z.object({
node: teaserCardBlockRefsSchema,
})
),
}),
})
.transform((data) => {
let card = null
if (data.teaser_cardConnection.edges.length) {
card = transformCardBlockRefs(data.teaser_cardConnection.edges[0].node)
}
return card
}),
})