feat(SW-285): Ship support for ContentPageBlocksCardsGrid

This commit is contained in:
Chuma McPhoy
2024-09-02 10:23:21 +02:00
parent dd336ca4ab
commit e88e4d92bf
8 changed files with 320 additions and 5 deletions
@@ -18,10 +18,14 @@ import {
fetchContentPageRefs,
generatePageTags,
getContentPageCounter,
makeButtonObject,
validateContentPageRefs,
} from "./utils"
import { ContentBlocksTypenameEnum } from "@/types/components/content/enums"
import {
CardsGridEnum,
ContentBlocksTypenameEnum,
} from "@/types/components/content/enums"
import {
TrackingChannelEnum,
TrackingSDKPageData,
@@ -85,6 +89,38 @@ export const contentPageQueryRouter = router({
})),
},
}
case ContentBlocksTypenameEnum.ContentPageBlocksCardsGrid:
return {
...block,
cards_grid: {
...block.cards_grid,
cards: block.cards_grid.cardConnection.edges.map(
({ node: card }: { node: any }) => {
switch (card.__typename) {
case CardsGridEnum.Card:
return {
...card,
backgroundImage: makeImageVaultImage(
card.background_image
),
primaryButton: card.has_primary_button
? makeButtonObject(card.primary_button)
: undefined,
secondaryButton: card.has_secondary_button
? makeButtonObject(card.secondary_button)
: undefined,
}
case CardsGridEnum.LoyaltyCard:
return {
...card,
image: makeImageVaultImage(card.image),
link: makeButtonObject(card.link),
}
}
}
),
},
}
default:
return block
}