feat: add new cards grid block
This commit is contained in:
@@ -60,6 +60,8 @@ export const loyaltyPageQueryRouter = router({
|
||||
const validatedLoyaltyPageRefs =
|
||||
validateLoyaltyPageRefsSchema.safeParse(cleanedData)
|
||||
if (!validatedLoyaltyPageRefs.success) {
|
||||
console.error("Bad validation for `GetLoyaltyPageRefs`")
|
||||
console.error(validatedLoyaltyPageRefs.error)
|
||||
throw internalServerError(validatedLoyaltyPageRefs.error)
|
||||
}
|
||||
|
||||
@@ -114,24 +116,6 @@ export const loyaltyPageQueryRouter = router({
|
||||
const blocks = validatedLoyaltyPage.data.loyalty_page.blocks
|
||||
? validatedLoyaltyPage.data.loyalty_page.blocks.map((block) => {
|
||||
switch (block.__typename) {
|
||||
case LoyaltyBlocksTypenameEnum.LoyaltyPageBlocksCardGrid:
|
||||
return {
|
||||
...block,
|
||||
card_grid: {
|
||||
...block.card_grid,
|
||||
cards: block.card_grid.cards.map((card) => {
|
||||
return {
|
||||
...card,
|
||||
link: card.referenceConnection.totalCount
|
||||
? {
|
||||
href: `/${card.referenceConnection.edges[0].node.system.locale}${card.referenceConnection.edges[0].node.url}`,
|
||||
title: card.cta_text || _("Read more"),
|
||||
}
|
||||
: undefined,
|
||||
}
|
||||
}),
|
||||
},
|
||||
}
|
||||
case LoyaltyBlocksTypenameEnum.LoyaltyPageBlocksDynamicContent:
|
||||
return {
|
||||
...block,
|
||||
@@ -174,6 +158,70 @@ export const loyaltyPageQueryRouter = router({
|
||||
})),
|
||||
},
|
||||
}
|
||||
case LoyaltyBlocksTypenameEnum.LoyaltyPageBlocksCardsGrid:
|
||||
return {
|
||||
...block,
|
||||
cards_grid: {
|
||||
...block.cards_grid,
|
||||
cards: block.cards_grid.cardConnection.edges.map(
|
||||
({ node: card }) => {
|
||||
const primaryButton = card.primary_button
|
||||
? {
|
||||
open_in_new_tab:
|
||||
card.primary_button.open_in_new_tab,
|
||||
link: {
|
||||
title:
|
||||
card.primary_button.cta_text ||
|
||||
(card.primary_button.is_contentstack_link &&
|
||||
card.primary_button.linkConnection.edges.length
|
||||
? card.primary_button.linkConnection.edges[0]
|
||||
.node.title
|
||||
: card.primary_button.external_link.title),
|
||||
href:
|
||||
card.primary_button.is_contentstack_link &&
|
||||
card.primary_button.linkConnection.edges.length
|
||||
? `/${card.primary_button.linkConnection.edges[0].node.system.locale}${card.primary_button.linkConnection.edges[0].node.url}`
|
||||
: card.primary_button.external_link.href,
|
||||
},
|
||||
isExternal:
|
||||
!card.primary_button.is_contentstack_link,
|
||||
}
|
||||
: undefined
|
||||
|
||||
const secondaryButton = card.secondary_button
|
||||
? {
|
||||
open_in_new_tab:
|
||||
card.secondary_button.open_in_new_tab,
|
||||
link: {
|
||||
title:
|
||||
card.secondary_button.cta_text ||
|
||||
(card.secondary_button.is_contentstack_link &&
|
||||
card.secondary_button.linkConnection.edges
|
||||
.length
|
||||
? card.secondary_button.linkConnection
|
||||
.edges[0].node.title
|
||||
: card.secondary_button.external_link.title),
|
||||
href:
|
||||
card.secondary_button.is_contentstack_link &&
|
||||
card.secondary_button.linkConnection.edges
|
||||
.length
|
||||
? `/${card.secondary_button.linkConnection.edges[0].node.system.locale}${card.secondary_button.linkConnection.edges[0].node.url}`
|
||||
: card.secondary_button.external_link.title,
|
||||
},
|
||||
isExternal:
|
||||
!card.secondary_button.is_contentstack_link,
|
||||
}
|
||||
: undefined
|
||||
|
||||
return {
|
||||
...card,
|
||||
primaryButton,
|
||||
secondaryButton,
|
||||
}
|
||||
}
|
||||
),
|
||||
},
|
||||
}
|
||||
default:
|
||||
return block
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user