Merged develop into feat/hotel-pages-intro-section

This commit is contained in:
Chuma Mcphoy (We Ahead)
2024-07-08 07:12:59 +00:00
10 changed files with 179 additions and 70 deletions

View File

@@ -3,6 +3,9 @@ import "@scandic-hotels/design-system/style.css"
import TrpcProvider from "@/lib/trpc/Provider"
import { getIntl } from "@/i18n"
import ServerIntlProvider from "@/i18n/Provider"
import styles from "./layout.module.css"
import type { Metadata } from "next"
@@ -13,14 +16,17 @@ export const metadata: Metadata = {
title: "Webview",
}
export default function RootLayout({
export default async function RootLayout({
children,
params,
}: React.PropsWithChildren<LayoutArgs<LangParams>>) {
const { defaultLocale, locale, messages } = await getIntl()
return (
<html lang={params.lang}>
<body className={styles.layout}>
<TrpcProvider lang={params.lang}>{children}</TrpcProvider>
<ServerIntlProvider intl={{ defaultLocale, locale, messages }}>
<TrpcProvider lang={params.lang}>{children}</TrpcProvider>
</ServerIntlProvider>
</body>
</html>
)

View File

@@ -19,13 +19,11 @@ export default async function AboutScandicFriends({ lang }: LangParams) {
<section className={styles.content}>
<LinkToOverview lang={lang} />
{loyaltyPage.sidebar ? (
<section className={styles.sidebar}>
<Sidebar blocks={loyaltyPage.sidebar} lang={lang} />
</section>
{loyaltyPage.sidebar.length ? (
<Sidebar blocks={loyaltyPage.sidebar} lang={lang} />
) : null}
<MaxWidth tag="main">
<MaxWidth tag="main" className={styles.blocks}>
<Title>{loyaltyPage.heading}</Title>
<Blocks blocks={loyaltyPage.blocks} lang={lang} />
</MaxWidth>

View File

@@ -8,3 +8,8 @@
margin-left: calc(var(--Spacing-x2) * -1);
margin-right: calc(var(--Spacing-x2) * -1);
}
.blocks {
display: grid;
gap: var(--Spacing-x5);
}

View File

@@ -20,11 +20,11 @@
},
{
"name": "Gratis mocktail til børn under opholdet",
"description": "Vi vil så gerne have, at børnenes føler sig som de VIPs, de er, så vi giver en forfriskende mocktail under hvert ophold.",
"description": "Vi vil så gerne have, at børnene føler sig som de VIPs, de er, så vi giver en forfriskende mocktail under hvert ophold.",
"unlocked": true
},
{
"name": "Sen udcheckning, når tilgængelig",
"name": "Sen check ud, når tilgængelig",
"description": "Vi ved godt, at muligheden for at checke sent ud virkelig kan redde turen, og nu skal du ikke længere skynde dig ud af sengen. Check ud en time senere uden ekstra omkostninger, og nyd at kunne sove lidt længere.",
"unlocked": false
},
@@ -39,13 +39,13 @@
"unlocked": false
},
{
"name": "Tidlig indcheckning, når tilgængelig",
"name": "Tidlig check ind, når tilgængelig",
"description": "Vil du tage hul på opholdet lidt hurtigere? Intet problem. Check ind en time før uden ekstra omkostninger, og nyd at kunne slappe en smule mere af.",
"unlocked": false
},
{
"name": "Gratis opgraderinger, når tilgængelige",
"description": "ad os bare sige det lige ud: Vi giver det hele et nøk opad. På det her venskabsniveau opgraderer vi dit værelse, hvis det er muligt, så du får et endnu mere behageligt ophold.",
"description": "På det her venskabsniveau opgraderer vi dit værelse, hvis det er muligt, så du får et endnu mere behageligt ophold.",
"unlocked": false
},
{
@@ -55,7 +55,7 @@
},
{
"name": "48-timers værelsesgaranti",
"description": "Shh, kun få af jer får denne særlige fordel! Selv hvis vi er fuldt bookede, er du garanteret et værelse, så længe du booker mindst 48 timer i forvejen.",
"description": "Kun få af jer får denne særlige fordel! Selv hvis vi er fuldt bookede, er du garanteret et værelse, så længe du booker mindst 48 timer i forvejen.",
"unlocked": false
},
{
@@ -89,7 +89,7 @@
},
{
"name": "Rabat på mad",
"description": "Hvad er mere lækkert end en rabat? Som vores ven får du i weekenderne og på udvalgte helligdage 15% rabat vores restaurant og på maden i vores hotelshop og det er uanset om du overnatter hos os eller ej. Så kom i gang med at forkæle dig selv: Bestil noget roomservice!",
"description": "Hvad er mere lækkert end en rabat? Som vores ven får du i weekenderne og på udvalgte helligdage 15% rabat i vores restaurant og på maden i vores hotel shop og det er uanset om du overnatter hos os eller ej. Så kom i gang med at forkæle dig selv: Bestil noget roomservice!",
"unlocked": true,
"value": "15%"
},
@@ -99,7 +99,7 @@
"unlocked": true
},
{
"name": "Sen udcheckning, når tilgængelig",
"name": "Sen check ud, når tilgængelig",
"description": "Vi ved godt, at muligheden for at checke sent ud virkelig kan redde turen, og nu skal du ikke længere skynde dig ud af sengen. Check ud en time senere uden ekstra omkostninger, og nyd at kunne sove lidt længere.",
"unlocked": false
},
@@ -114,13 +114,13 @@
"unlocked": false
},
{
"name": "Tidlig indcheckning, når tilgængelig",
"name": "Tidlig check ind, når tilgængelig",
"description": "Vil du tage hul på opholdet lidt hurtigere? Intet problem. Check ind en time før uden ekstra omkostninger, og nyd at kunne slappe en smule mere af.",
"unlocked": false
},
{
"name": "Gratis opgraderinger, når tilgængelige",
"description": "ad os bare sige det lige ud: Vi giver det hele et nøk opad. På det her venskabsniveau opgraderer vi dit værelse, hvis det er muligt, så du får et endnu mere behageligt ophold.",
"description": "På det her venskabsniveau opgraderer vi dit værelse, hvis det er muligt, så du får et endnu mere behageligt ophold.",
"unlocked": false
},
{
@@ -130,7 +130,7 @@
},
{
"name": "48-timers værelsesgaranti",
"description": "Shh, kun få af jer får denne særlige fordel! Selv hvis vi er fuldt bookede, er du garanteret et værelse, så længe du booker mindst 48 timer i forvejen.",
"description": "Kun få af jer får denne særlige fordel! Selv hvis vi er fuldt bookede, er du garanteret et værelse, så længe du booker mindst 48 timer i forvejen.",
"unlocked": false
},
{
@@ -164,7 +164,7 @@
},
{
"name": "Rabat på mad",
"description": "Hvad er mere lækkert end en rabat? Som vores ven får du i weekenderne og på udvalgte helligdage 15% rabat vores restaurant og på maden i vores hotelshop og det er uanset om du overnatter hos os eller ej. Så kom i gang med at forkæle dig selv: Bestil noget roomservice!",
"description": "Hvad er mere lækkert end en rabat? Som vores ven får du i weekenderne og på udvalgte helligdage 15% rabat i vores restaurant og på maden i vores hotel shop og det er uanset om du overnatter hos os eller ej. Så kom i gang med at forkæle dig selv: Bestil noget roomservice!",
"unlocked": true,
"value": "15%"
},
@@ -174,7 +174,7 @@
"unlocked": true
},
{
"name": "Sen udcheckning, når tilgængelig",
"name": "Sen check ud, når tilgængelig",
"description": "Vi ved godt, at muligheden for at checke sent ud virkelig kan redde turen, og nu skal du ikke længere skynde dig ud af sengen. Check ud en time senere uden ekstra omkostninger, og nyd at kunne sove lidt længere.",
"unlocked": true
},
@@ -190,13 +190,13 @@
"unlocked": false
},
{
"name": "Tidlig indcheckning, når tilgængelig",
"name": "Tidlig check ind, når tilgængelig",
"description": "Vil du tage hul på opholdet lidt hurtigere? Intet problem. Check ind en time før uden ekstra omkostninger, og nyd at kunne slappe en smule mere af.",
"unlocked": false
},
{
"name": "Gratis opgraderinger, når tilgængelige",
"description": "ad os bare sige det lige ud: Vi giver det hele et nøk opad. På det her venskabsniveau opgraderer vi dit værelse, hvis det er muligt, så du får et endnu mere behageligt ophold.",
"description": "På det her venskabsniveau opgraderer vi dit værelse, hvis det er muligt, så du får et endnu mere behageligt ophold.",
"unlocked": false
},
{
@@ -206,7 +206,7 @@
},
{
"name": "48-timers værelsesgaranti",
"description": "Shh, kun få af jer får denne særlige fordel! Selv hvis vi er fuldt bookede, er du garanteret et værelse, så længe du booker mindst 48 timer i forvejen.",
"description": "Kun få af jer får denne særlige fordel! Selv hvis vi er fuldt bookede, er du garanteret et værelse, så længe du booker mindst 48 timer i forvejen.",
"unlocked": false
},
{
@@ -240,7 +240,7 @@
},
{
"name": "Rabat på mad",
"description": "Hvad er mere lækkert end en rabat? Som vores ven får du i weekenderne og på udvalgte helligdage 15% rabat vores restaurant og på maden i vores hotelshop og det er uanset om du overnatter hos os eller ej. Så kom i gang med at forkæle dig selv: Bestil noget roomservice!",
"description": "Hvad er mere lækkert end en rabat? Som vores ven får du i weekenderne og på udvalgte helligdage 15% rabat i vores restaurant og på maden i vores hotelshop og det er uanset om du overnatter hos os eller ej. Så kom i gang med at forkæle dig selv: Bestil noget roomservice!",
"unlocked": true,
"value": "15%"
},
@@ -250,7 +250,7 @@
"unlocked": true
},
{
"name": "Sen udcheckning, når tilgængelig",
"name": "Sen check ud, når tilgængelig",
"description": "Vi ved godt, at muligheden for at checke sent ud virkelig kan redde turen, og nu skal du ikke længere skynde dig ud af sengen. Check ud en time senere uden ekstra omkostninger, og nyd at kunne sove lidt længere.",
"unlocked": true
},
@@ -262,18 +262,18 @@
},
{
"name": "Venskabsboost",
"description": "Hver gang du booster dine venskabspoint, får du 25% ekstra! Så kom i gang med at optjene point på ophold, måltider med mere, og pludselig har du en gratis overnatning.",
"description": "Hver gang du booster dine venskabspoint, får du 25% ekstra! Så kom i gang med at optjene point på ophold, måltider m.m., og pludselig har du en gratis overnatning.",
"unlocked": true,
"value": "25%"
},
{
"name": "Tidlig indcheckning, når tilgængelig",
"name": "Tidlig check ind, når tilgængelig",
"description": "Vil du tage hul på opholdet lidt hurtigere? Intet problem. Check ind en time før uden ekstra omkostninger, og nyd at kunne slappe en smule mere af.",
"unlocked": true
},
{
"name": "Gratis opgraderinger, når tilgængelige",
"description": "ad os bare sige det lige ud: Vi giver det hele et nøk opad. På det her venskabsniveau opgraderer vi dit værelse, hvis det er muligt, så du får et endnu mere behageligt ophold.",
"description": "På det her venskabsniveau opgraderer vi dit værelse, hvis det er muligt, så du får et endnu mere behageligt ophold.",
"unlocked": false
},
{
@@ -283,7 +283,7 @@
},
{
"name": "48-timers værelsesgaranti",
"description": "Shh, kun få af jer får denne særlige fordel! Selv hvis vi er fuldt bookede, er du garanteret et værelse, så længe du booker mindst 48 timer i forvejen.",
"description": "Kun få af jer får denne særlige fordel! Selv hvis vi er fuldt bookede, er du garanteret et værelse, så længe du booker mindst 48 timer i forvejen.",
"unlocked": false
},
{
@@ -317,7 +317,7 @@
},
{
"name": "Rabat på mad",
"description": "Hvad er mere lækkert end en rabat? Som vores ven får du i weekenderne og på udvalgte helligdage 15% rabat vores restaurant og på maden i vores hotelshop og det er uanset om du overnatter hos os eller ej. Så kom i gang med at forkæle dig selv: Bestil noget roomservice!",
"description": "Hvad er mere lækkert end en rabat? Som vores ven får du i weekenderne og på udvalgte helligdage 15% rabat i vores restaurant og på maden i vores hotel shop og det er uanset om du overnatter hos os eller ej. Så kom i gang med at forkæle dig selv: Bestil noget roomservice!",
"unlocked": true,
"value": "15%"
},
@@ -327,7 +327,7 @@
"unlocked": true
},
{
"name": "Sen udcheckning, når tilgængelig",
"name": "Sen check ud, når tilgængelig",
"description": "Vi ved godt, at muligheden for at checke sent ud virkelig kan redde turen, og nu skal du ikke længere skynde dig ud af sengen. Check ud en time senere uden ekstra omkostninger, og nyd at kunne sove lidt længere.",
"unlocked": true
},
@@ -339,18 +339,18 @@
},
{
"name": "Venskabsboost",
"description": "Hver gang du booster dine venskabspoint, får du 25% ekstra! Så kom i gang med at optjene point på ophold, måltider med mere, og pludselig har du en gratis overnatning.",
"description": "Hver gang du booster dine venskabspoint, får du 25% ekstra! Så kom i gang med at optjene point på ophold, måltider m.m., og pludselig har du en gratis overnatning.",
"unlocked": true,
"value": "25%"
},
{
"name": "Tidlig indcheckning, når tilgængelig",
"name": "Tidlig check ind, når tilgængelig",
"description": "Vil du tage hul på opholdet lidt hurtigere? Intet problem. Check ind en time før uden ekstra omkostninger, og nyd at kunne slappe en smule mere af.",
"unlocked": true
},
{
"name": "Gratis opgraderinger, når tilgængelige",
"description": "ad os bare sige det lige ud: Vi giver det hele et nøk opad. På det her venskabsniveau opgraderer vi dit værelse, hvis det er muligt, så du får et endnu mere behageligt ophold.",
"description": "På det her venskabsniveau opgraderer vi dit værelse, hvis det er muligt, så du får et endnu mere behageligt ophold.",
"unlocked": true
},
{
@@ -360,7 +360,7 @@
},
{
"name": "48-timers værelsesgaranti",
"description": "Shh, kun få af jer får denne særlige fordel! Selv hvis vi er fuldt bookede, er du garanteret et værelse, så længe du booker mindst 48 timer i forvejen.",
"description": "Kun få af jer får denne særlige fordel! Selv hvis vi er fuldt bookede, er du garanteret et værelse, så længe du booker mindst 48 timer i forvejen.",
"unlocked": false
},
{
@@ -394,7 +394,7 @@
},
{
"name": "Rabat på mad",
"description": "Hvad er mere lækkert end en rabat? Som vores ven får du i weekenderne og på udvalgte helligdage 15% rabat vores restaurant og på maden i vores hotelshop og det er uanset om du overnatter hos os eller ej. Så kom i gang med at forkæle dig selv: Bestil noget roomservice!",
"description": "Hvad er mere lækkert end en rabat? Som vores ven får du i weekenderne og på udvalgte helligdage 15% rabat i vores restaurant og på maden i vores hotel shop og det er uanset om du overnatter hos os eller ej. Så kom i gang med at forkæle dig selv: Bestil noget roomservice!",
"unlocked": true,
"value": "15%"
},
@@ -404,13 +404,13 @@
"unlocked": true
},
{
"name": "Sen udcheckning, når tilgængelig",
"name": "Sen check ud, når tilgængelig",
"description": "Vi ved godt, at muligheden for at checke sent ud virkelig kan redde turen, og nu skal du ikke længere skynde dig ud af sengen. Check ud en time senere uden ekstra omkostninger, og nyd at kunne sove lidt længere.",
"unlocked": true
},
{
"name": "Restaurantvoucher",
"description": "Det går ret godt, så nu giver hver pointgivende overnatning en restaurantvoucher på 150 DKK. Den er helt sikkert god at have ved hånden, næste gang du vil spise en lækker morgenmad eller romantisk middag!",
"description": "Det går ret godt, så nu giver hver pointgivende overnatning en restaurantvoucher på 150 DKK. Den er helt sikkert god at have ved hånden, næste gang du vil spise en god middag!",
"unlocked": true,
"value": "150 DKK"
},
@@ -421,13 +421,13 @@
"value": "50%"
},
{
"name": "Tidlig indcheckning, når tilgængelig",
"name": "Tidlig check ind, når tilgængelig",
"description": "Vil du tage hul på opholdet lidt hurtigere? Intet problem. Check ind en time før uden ekstra omkostninger, og nyd at kunne slappe en smule mere af.",
"unlocked": true
},
{
"name": "Gratis opgraderinger, når tilgængelige",
"description": "ad os bare sige det lige ud: Vi giver det hele et nøk opad. På det her venskabsniveau opgraderer vi dit værelse, hvis det er muligt, så du får et endnu mere behageligt ophold.",
"description": "På det her venskabsniveau opgraderer vi dit værelse, hvis det er muligt, så du får et endnu mere behageligt ophold.",
"unlocked": true
},
{
@@ -437,7 +437,7 @@
},
{
"name": "48-timers værelsesgaranti",
"description": "Shh, kun få af jer får denne særlige fordel! Selv hvis vi er fuldt bookede, er du garanteret et værelse, så længe du booker mindst 48 timer i forvejen.",
"description": "Kun få af jer får denne særlige fordel! Selv hvis vi er fuldt bookede, er du garanteret et værelse, så længe du booker mindst 48 timer i forvejen.",
"unlocked": true
},
{
@@ -471,7 +471,7 @@
},
{
"name": "Rabat på mad",
"description": "Hvad er mere lækkert end en rabat? Som vores ven får du i weekenderne og på udvalgte helligdage 15% rabat vores restaurant og på maden i vores hotelshop og det er uanset om du overnatter hos os eller ej. Så kom i gang med at forkæle dig selv: Bestil noget roomservice!",
"description": "Hvad er mere lækkert end en rabat? Som vores ven får du i weekenderne og på udvalgte helligdage 15% rabat i vores restaurant og på maden i vores hotel shop og det er uanset om du overnatter hos os eller ej. Så kom i gang med at forkæle dig selv: Bestil noget roomservice!",
"unlocked": true,
"value": "15%"
},
@@ -481,7 +481,7 @@
"unlocked": true
},
{
"name": "Sen udcheckning, når tilgængelig",
"name": "Sen check ud, når tilgængelig",
"description": "Vi ved godt, at muligheden for at checke sent ud virkelig kan redde turen, og nu skal du ikke længere skynde dig ud af sengen. Check ud en time senere uden ekstra omkostninger, og nyd at kunne sove lidt længere.",
"unlocked": true
},
@@ -498,13 +498,13 @@
"value": "50%"
},
{
"name": "Tidlig indcheckning, når tilgængelig",
"name": "Tidlig check ind, når tilgængelig",
"description": "Vil du tage hul på opholdet lidt hurtigere? Intet problem. Check ind en time før uden ekstra omkostninger, og nyd at kunne slappe en smule mere af.",
"unlocked": true
},
{
"name": "Gratis opgraderinger, når tilgængelige",
"description": "ad os bare sige det lige ud: Vi giver det hele et nøk opad. På det her venskabsniveau opgraderer vi dit værelse, hvis det er muligt, så du får et endnu mere behageligt ophold.",
"description": "På det her venskabsniveau opgraderer vi dit værelse, hvis det er muligt, så du får et endnu mere behageligt ophold.",
"unlocked": true
},
{
@@ -514,7 +514,7 @@
},
{
"name": "48-timers værelsesgaranti",
"description": "Shh, kun få af jer får denne særlige fordel! Selv hvis vi er fuldt bookede, er du garanteret et værelse, så længe du booker mindst 48 timer i forvejen.",
"description": "Kun få af jer får denne særlige fordel! Selv hvis vi er fuldt bookede, er du garanteret et værelse, så længe du booker mindst 48 timer i forvejen.",
"unlocked": true
},
{

View File

@@ -34,11 +34,22 @@ export default async function JoinLoyaltyContact({
</Title>
<ScandicFriends color="red" />
{block.preamble ? <Body>{block.preamble}</Body> : null}
<Button asChild intent="primary" theme="base" className={styles.button}>
<Link href={login[lang]} color="white">
{formatMessage({ id: "Join Scandic Friends" })}
</Link>
</Button>
{block.button ? (
<Button
asChild
intent="primary"
theme="base"
className={styles.button}
>
<Link
href={block.button.href}
color="white"
target={block.button.openInNewTab ? "_blank" : "_self"}
>
{block.button.title}
</Link>
</Button>
) : null}
<section className={styles.loginContainer}>
<Body>{formatMessage({ id: "Already a friend?" })}</Body>
<Link

View File

@@ -23,7 +23,7 @@ function DynamicComponent({ component, props }: AccountPageContentProps) {
return (
<Overview
lang={props.lang}
link={undefined}
link={props.link}
subtitle={null}
title={props.title}
/>
@@ -56,7 +56,11 @@ export default function Content({ lang, content }: ContentProps) {
href:
item.dynamic_content.link.linkConnection.edges[0].node
.original_url ||
`/${lang}/webview${item.dynamic_content.link.linkConnection.edges[0].node.url}`,
modWebviewLink(
item.dynamic_content.link.linkConnection.edges[0].node
.url,
lang
),
text: item.dynamic_content.link.link_text,
}
: null

View File

@@ -109,6 +109,24 @@ query GetLoyaltyPage($locale: String!, $uid: String!) {
join_loyalty_contact {
title
preamble
button {
cta_text
external_link {
title
href
}
open_in_new_tab
linkConnection {
edges {
node {
__typename
...AccountPageLink
...ContentPageLink
...LoyaltyPageLink
}
}
}
}
contact {
... on LoyaltyPageSidebarJoinLoyaltyContactBlockContactContact {
__typename
@@ -252,6 +270,23 @@ query GetLoyaltyPageRefs($locale: String!, $uid: String!) {
}
}
}
... on LoyaltyPageSidebarJoinLoyaltyContact {
__typename
join_loyalty_contact {
button {
linkConnection {
edges {
node {
__typename
...AccountPageRef
...ContentPageRef
...LoyaltyPageRef
}
}
}
}
}
}
}
system {
...System

View File

@@ -152,6 +152,14 @@ const loyaltyPageJoinLoyaltyContact = z.object({
join_loyalty_contact: z.object({
title: z.string().nullable(),
preamble: z.string().nullable(),
button: z
.object({
openInNewTab: z.boolean(),
title: z.string(),
href: z.string(),
isExternal: z.boolean(),
})
.nullable(),
contact: z.array(
z.object({
__typename: z.literal(
@@ -362,8 +370,22 @@ const loyaltyPageSidebarTextContentRef = z.object({
}),
})
const loyaltyPageSidebarJoinLoyaltyContactRef = z.object({
__typename: z.literal(
SidebarTypenameEnum.LoyaltyPageSidebarJoinLoyaltyContact
),
join_loyalty_contact: z.object({
button: z
.object({
linkConnection: pageConnectionRefs,
})
.nullable(),
}),
})
const loyaltyPageSidebarRefsItem = z.discriminatedUnion("__typename", [
loyaltyPageSidebarTextContentRef,
loyaltyPageSidebarJoinLoyaltyContactRef,
])
export const validateLoyaltyPageRefsSchema = z.object({

View File

@@ -27,6 +27,7 @@ import { InsertResponse } from "@/types/components/imageVaultImage"
import {
LoyaltyBlocksTypenameEnum,
LoyaltyCardsGridEnum,
SidebarTypenameEnum,
} from "@/types/components/loyalty/enums"
function makeImageVaultImage(image: any) {
@@ -36,21 +37,25 @@ function makeImageVaultImage(image: any) {
}
function makeButtonObject(button: any) {
if (!button) return null
const isContenstackLink =
button?.is_contentstack_link || button.linkConnection?.edges?.length
return {
openInNewTab: button.open_in_new_tab,
openInNewTab: button?.open_in_new_tab,
title:
button.cta_text ||
(button.is_contentstack_link && button.linkConnection.edges.length
(isContenstackLink
? button.linkConnection.edges[0].node.title
: button.external_link.title),
href:
button.is_contentstack_link && button.linkConnection.edges.length
? button.linkConnection.edges[0].node.web?.original_url ||
removeMultipleSlashes(
`/${button.linkConnection.edges[0].node.system.locale}/${button.linkConnection.edges[0].node.url}`
)
: button.external_link.href,
isExternal: !button.is_contentstack_link,
href: isContenstackLink
? button.linkConnection.edges[0].node.web?.original_url ||
removeMultipleSlashes(
`/${button.linkConnection.edges[0].node.system.locale}/${button.linkConnection.edges[0].node.url}`
)
: button.external_link.href,
isExternal: !isContenstackLink,
}
}
@@ -155,11 +160,7 @@ export const loyaltyPageQueryRouter = router({
return {
...card,
image: makeImageVaultImage(card.image),
link: makeButtonObject({
...card.link,
is_contentstack_link:
!!card.link.linkConnection.edges.length,
}),
link: makeButtonObject(card.link),
}
case LoyaltyCardsGridEnum.Card:
return {
@@ -185,11 +186,28 @@ export const loyaltyPageQueryRouter = router({
})
: null
const sidebar = response.data.loyalty_page.sidebar
? response.data.loyalty_page.sidebar.map((item: any) => {
switch (item.__typename) {
case SidebarTypenameEnum.LoyaltyPageSidebarJoinLoyaltyContact:
return {
...item,
join_loyalty_contact: {
...item.join_loyalty_contact,
button: makeButtonObject(item.join_loyalty_contact.button),
},
}
default:
return item
}
})
: null
const loyaltyPage = {
heading: response.data.loyalty_page.heading,
system: response.data.loyalty_page.system,
blocks,
sidebar: response.data.loyalty_page.sidebar,
sidebar,
}
const validatedLoyaltyPage =

View File

@@ -3,6 +3,7 @@ import { LoyaltyPageRefsDataRaw } from "./output"
import {
LoyaltyBlocksTypenameEnum,
LoyaltyCardsGridEnum,
SidebarTypenameEnum,
} from "@/types/components/loyalty/enums"
import type { Edges } from "@/types/requests/utils/edges"
import type { NodeRefs } from "@/types/requests/utils/refs"
@@ -59,8 +60,17 @@ export function getConnections(refs: LoyaltyPageRefsDataRaw) {
}
if (refs.loyalty_page.sidebar) {
refs.loyalty_page.sidebar?.forEach((item) => {
if (item.content.content.embedded_itemsConnection.edges.length) {
connections.push(item.content.content.embedded_itemsConnection)
switch (item.__typename) {
case SidebarTypenameEnum.LoyaltyPageSidebarContent:
if (item.content.content.embedded_itemsConnection.edges.length) {
connections.push(item.content.content.embedded_itemsConnection)
}
break
case SidebarTypenameEnum.LoyaltyPageSidebarJoinLoyaltyContact:
if (item.join_loyalty_contact.button?.linkConnection) {
connections.push(item.join_loyalty_contact.button.linkConnection)
}
break
}
})
}