Files
web/utils/tracking.ts
Tobias Johansson 6ca56f3138 Merged in feat/SW-822-handle-breakfast-included (pull request #1138)
Feat/SW-822 handle breakfast included

* feat(SW-822): Added flag for breakfast included and hide breakfast step if included

* fix: check if window is defined to avoid error during SSR

* fix: remove return if rate definition is not found because its expected if input is undefined


Approved-by: Christel Westerberg
Approved-by: Arvid Norlin
2025-01-08 12:34:20 +00:00

76 lines
1.7 KiB
TypeScript

import type {
TrackingPosition,
TrackingSDKData,
} from "@/types/components/tracking"
export function trackClick(name: string) {
pushToDataLayer({
event: "linkClick",
cta: {
name,
},
})
}
export function trackPageViewStart() {
pushToDataLayer({
event: "pageViewStart",
})
}
export function trackLoginClick(position: TrackingPosition) {
const loginEvent = {
event: "loginStart",
login: {
position,
action: "login start",
ctaName: "login",
},
}
pushToDataLayer(loginEvent)
}
export function trackUpdatePaymentMethod(hotelId: string, method: string) {
const paymentSelectionEvent = {
event: "paymentSelection",
hotelInfo: {
hotelId: hotelId,
},
cta: {
name: method,
},
}
pushToDataLayer(paymentSelectionEvent)
}
function pushToDataLayer(data: any) {
if (typeof window !== "undefined" && window.adobeDataLayer) {
console.log("TRACKING: Pushing to datalayer", data)
window.adobeDataLayer.push(data)
}
}
export function createSDKPageObject(
trackingData: TrackingSDKData
): TrackingSDKData {
let pageName = convertSlashToPipe(trackingData.pageName)
let siteSections = convertSlashToPipe(trackingData.siteSections)
if (trackingData.pathName.indexOf("/webview/") > -1) {
pageName = "webview|" + pageName
siteSections = "webview|" + siteSections
}
return {
...trackingData,
domain: typeof window !== "undefined" ? window.location.host : "",
pageName: pageName,
siteSections: siteSections,
}
}
function convertSlashToPipe(url: string) {
const formattedUrl = url.startsWith("/") ? url.slice(1) : url
return formattedUrl.replaceAll("/", "|")
}