diff --git a/app/[lang]/(live)/(public)/loyalty-page/page.tsx b/app/[lang]/(live)/(public)/loyalty-page/page.tsx
index d35d2947c..881276af5 100644
--- a/app/[lang]/(live)/(public)/loyalty-page/page.tsx
+++ b/app/[lang]/(live)/(public)/loyalty-page/page.tsx
@@ -29,7 +29,7 @@ export default async function LoyaltyPage({
{loyaltyPage.sidebar ? : null}
-
+ {loyaltyPage.blocks ? : null}
)
diff --git a/server/routers/contentstack/loyaltyPage/input.ts b/server/routers/contentstack/loyaltyPage/input.ts
index 1cddb2b6f..9f23fdef5 100644
--- a/server/routers/contentstack/loyaltyPage/input.ts
+++ b/server/routers/contentstack/loyaltyPage/input.ts
@@ -6,5 +6,5 @@ const langs = Object.keys(Lang) as [keyof typeof Lang]
export const getLoyaltyPageInput = z.object({
href: z.string().min(1, { message: "href is required" }),
- locale: z.enum(langs),
+ locale: z.nativeEnum(Lang),
})
diff --git a/server/routers/contentstack/loyaltyPage/output.ts b/server/routers/contentstack/loyaltyPage/output.ts
index 0d546a500..251230d97 100644
--- a/server/routers/contentstack/loyaltyPage/output.ts
+++ b/server/routers/contentstack/loyaltyPage/output.ts
@@ -170,8 +170,8 @@ export const validateLoyaltyPageSchema = z.object({
items: z.array(
z.object({
title: z.string(),
- blocks: z.array(loyaltyPageBlockItem),
- sidebar: z.array(loyaltyPageSidebarItem),
+ blocks: z.array(loyaltyPageBlockItem).nullable(),
+ sidebar: z.array(loyaltyPageSidebarItem).nullable(),
})
),
}),
diff --git a/server/routers/contentstack/loyaltyPage/query.ts b/server/routers/contentstack/loyaltyPage/query.ts
index 4c4ce9e5c..cf437d57d 100644
--- a/server/routers/contentstack/loyaltyPage/query.ts
+++ b/server/routers/contentstack/loyaltyPage/query.ts
@@ -41,68 +41,14 @@ export const loyaltyPageQueryRouter = router({
throw badRequestError()
}
- const sidebar =
- validatedLoyaltyPage.data.all_loyalty_page.items[0].sidebar.map(
- (block) => {
- if (
- block.__typename == SidebarTypenameEnum.LoyaltyPageSidebarContent
- ) {
- return {
- ...block,
- content: {
- content: {
- json: block.content.content.json as RTEDocument,
- embedded_itemsConnection: block.content.content
- .embedded_itemsConnection as Edges,
- },
- },
- }
- } else {
- return block
- }
- }
- )
-
- const blocks =
- validatedLoyaltyPage.data.all_loyalty_page.items[0].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.url,
- title: card.cta_text || _("Read more"),
- }
- : undefined,
- }
- }),
- },
- }
- case LoyaltyBlocksTypenameEnum.LoyaltyPageBlocksDynamicContent:
- return {
- ...block,
- dynamic_content: {
- ...block.dynamic_content,
- link: block.dynamic_content.link.pageConnection.totalCount
- ? {
- text: block.dynamic_content.link.text,
- href: block.dynamic_content.link.pageConnection
- .edges[0].node.url,
- title:
- block.dynamic_content.link.pageConnection.edges[0]
- .node.title,
- }
- : undefined,
- },
- }
- case LoyaltyBlocksTypenameEnum.LoyaltyPageBlocksContent:
+ const sidebar = validatedLoyaltyPage.data.all_loyalty_page.items[0]
+ .sidebar
+ ? validatedLoyaltyPage.data.all_loyalty_page.items[0].sidebar.map(
+ (block) => {
+ if (
+ block.__typename ==
+ SidebarTypenameEnum.LoyaltyPageSidebarContent
+ ) {
return {
...block,
content: {
@@ -113,27 +59,86 @@ export const loyaltyPageQueryRouter = router({
},
},
}
- case LoyaltyBlocksTypenameEnum.LoyaltyPageBlocksShortcuts:
- return {
- ...block,
- shortcuts: {
- ...block.shortcuts,
- shortcuts: block.shortcuts.shortcuts.map((shortcut) => ({
- text: shortcut.text,
- openInNewTab: shortcut.open_in_new_tab,
- ...shortcut.linkConnection.edges[0].node,
- url:
- shortcut.linkConnection.edges[0].node.web
- ?.original_url ||
- `/${shortcut.linkConnection.edges[0].node.system.locale}${shortcut.linkConnection.edges[0].node.url}`,
- })),
- },
- }
- default:
+ } else {
return block
+ }
}
- }
- )
+ )
+ : null
+
+ const blocks = validatedLoyaltyPage.data.all_loyalty_page.items[0].blocks
+ ? validatedLoyaltyPage.data.all_loyalty_page.items[0].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
+ .url,
+ title: card.cta_text || _("Read more"),
+ }
+ : undefined,
+ }
+ }),
+ },
+ }
+ case LoyaltyBlocksTypenameEnum.LoyaltyPageBlocksDynamicContent:
+ return {
+ ...block,
+ dynamic_content: {
+ ...block.dynamic_content,
+ link: block.dynamic_content.link.pageConnection.totalCount
+ ? {
+ text: block.dynamic_content.link.text,
+ href: block.dynamic_content.link.pageConnection
+ .edges[0].node.url,
+ title:
+ block.dynamic_content.link.pageConnection.edges[0]
+ .node.title,
+ }
+ : undefined,
+ },
+ }
+ case LoyaltyBlocksTypenameEnum.LoyaltyPageBlocksContent:
+ return {
+ ...block,
+ content: {
+ content: {
+ json: block.content.content.json as RTEDocument,
+ embedded_itemsConnection: block.content.content
+ .embedded_itemsConnection as Edges,
+ },
+ },
+ }
+ case LoyaltyBlocksTypenameEnum.LoyaltyPageBlocksShortcuts:
+ return {
+ ...block,
+ shortcuts: {
+ ...block.shortcuts,
+ shortcuts: block.shortcuts.shortcuts.map((shortcut) => ({
+ text: shortcut.text,
+ openInNewTab: shortcut.open_in_new_tab,
+ ...shortcut.linkConnection.edges[0].node,
+ url:
+ shortcut.linkConnection.edges[0].node.web
+ ?.original_url ||
+ `/${shortcut.linkConnection.edges[0].node.system.locale}${shortcut.linkConnection.edges[0].node.url}`,
+ })),
+ },
+ }
+ default:
+ return block
+ }
+ }
+ )
+ : null
const loyaltyPage = {
...validatedLoyaltyPage.data.all_loyalty_page.items[0],