feat(SW-392): Added adobeSDK with page and hotel data

This commit is contained in:
Erik Tiekstra
2025-01-15 14:40:50 +01:00
parent e9deb25d06
commit 626db96bf9
4 changed files with 58 additions and 1 deletions

View File

@@ -9,6 +9,7 @@ import Breadcrumbs from "@/components/Breadcrumbs"
import SidePeekProvider from "@/components/SidePeeks/SidePeekProvider" import SidePeekProvider from "@/components/SidePeeks/SidePeekProvider"
import Alert from "@/components/TempDesignSystem/Alert" import Alert from "@/components/TempDesignSystem/Alert"
import BreadcrumbsSkeleton from "@/components/TempDesignSystem/Breadcrumbs/BreadcrumbsSkeleton" import BreadcrumbsSkeleton from "@/components/TempDesignSystem/Breadcrumbs/BreadcrumbsSkeleton"
import TrackingSDK from "@/components/TrackingSDK"
import { getLang } from "@/i18n/serverContext" import { getLang } from "@/i18n/serverContext"
import { getRestaurantHeading } from "@/utils/facilityCards" import { getRestaurantHeading } from "@/utils/facilityCards"
import { generateHotelSchema } from "@/utils/jsonSchemas" import { generateHotelSchema } from "@/utils/jsonSchemas"
@@ -33,6 +34,7 @@ import {
WellnessAndExerciseSidePeek, WellnessAndExerciseSidePeek,
} from "./SidePeeks" } from "./SidePeeks"
import TabNavigation from "./TabNavigation" import TabNavigation from "./TabNavigation"
import { getTrackingHotelData, getTrackingPageData } from "./utils"
import styles from "./hotelPage.module.css" import styles from "./hotelPage.module.css"
@@ -113,6 +115,13 @@ export default async function HotelPage({ hotelId }: HotelPageProps) {
lng: location.longitude, lng: location.longitude,
} }
const trackingPageData = getTrackingPageData(
hotelPageData.system,
hotelData.data.attributes,
lang
)
const trackingHotelData = getTrackingHotelData(hotelData.data)
return ( return (
<div className={styles.pageContainer}> <div className={styles.pageContainer}>
<script <script
@@ -225,6 +234,12 @@ export default async function HotelPage({ hotelId }: HotelPageProps) {
<RoomSidePeek key={room.name} room={room} /> <RoomSidePeek key={room.name} room={room} />
))} ))}
</SidePeekProvider> </SidePeekProvider>
<Suspense fallback={null}>
<TrackingSDK
pageData={trackingPageData}
hotelInfo={trackingHotelData}
/>
</Suspense>
</div> </div>
) )
} }

View File

@@ -1,3 +1,44 @@
import {
TrackingChannelEnum,
type TrackingSDKHotelInfo,
type TrackingSDKPageData,
} from "@/types/components/tracking"
import type { Hotel, HotelData } from "@/types/hotel"
import type { HotelPage } from "@/types/trpc/routers/contentstack/hotelPage"
import type { Lang } from "@/constants/languages"
export function getRoomNameAsParam(roomName: string) { export function getRoomNameAsParam(roomName: string) {
return roomName.replace(/[()]/g, "").replaceAll(" ", "-").toLowerCase() return roomName.replace(/[()]/g, "").replaceAll(" ", "-").toLowerCase()
} }
export function getTrackingPageData(
pageData: HotelPage["hotel_page"]["system"],
hotelData: Hotel,
lang: Lang
) {
const country = hotelData.address.country
const city = hotelData.address.city
const hotelName = hotelData.name
const tracking: TrackingSDKPageData = {
pageId: pageData.uid,
domainLanguage: lang,
publishDate: pageData.updated_at,
createDate: pageData.created_at,
channel: TrackingChannelEnum["hotels"],
pageType: "hotelpage",
pageName: `hotels|${country}|${city}|${hotelName}`,
siteSections: `hotels|${country}|${city}|${hotelName}`,
siteVersion: "new-web",
}
return tracking
}
export function getTrackingHotelData(hotelData: HotelData["data"]) {
const tracking: TrackingSDKHotelInfo = {
hotelID: hotelData.id,
}
return tracking
}

View File

@@ -27,7 +27,7 @@ export default async function TrackingSDK({
<RouterTransition <RouterTransition
pageData={pageData} pageData={pageData}
userData={userTrackingData} userData={userTrackingData}
//hotelInfo={hotelInfo} // hotelInfo={hotelInfo}
//paymentInfo={paymentInfo} //paymentInfo={paymentInfo}
/> />
) )

View File

@@ -6,6 +6,7 @@ export enum TrackingChannelEnum {
"static-content-page" = "static-content-page", "static-content-page" = "static-content-page",
"hotelreservation" = "hotelreservation", "hotelreservation" = "hotelreservation",
"collection-page" = "collection-page", "collection-page" = "collection-page",
"hotels" = "hotels",
} }
export type TrackingChannel = keyof typeof TrackingChannelEnum export type TrackingChannel = keyof typeof TrackingChannelEnum