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: window.location.host, pageName: pageName, siteSections: siteSections, } } function convertSlashToPipe(url: string) { const formattedUrl = url.startsWith("/") ? url.slice(1) : url return formattedUrl.replaceAll("/", "|") }