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
76 lines
1.7 KiB
TypeScript
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("/", "|")
|
|
}
|