fix: track navigation transitions

This commit is contained in:
Christel Westerberg
2024-08-26 14:30:49 +02:00
parent e04485d896
commit 2e99525c94
4 changed files with 80 additions and 58 deletions

View File

@@ -5,31 +5,9 @@ import { useCallback, useEffect, useState } from "react"
import { webviews } from "@/constants/routes/webviews"
import { TrackingSDKData, TrackingSDKProps } from "@/types/components/tracking"
import { createSDKPageObject } from "@/utils/tracking"
function createSDKPageObject(trackingData: TrackingSDKData) {
const [lang, ...segments] = trackingData.pathName
.split("/")
.filter((seg: string) => seg)
const joinedSegments = segments.join("|")
const { host: domain } = window.location
const page_obj = {
pageType: trackingData.pageType,
pageName: joinedSegments,
pageId: trackingData.pageId,
channel: trackingData.channel,
siteSection: joinedSegments,
domain,
siteversion: "new-web",
domainlanguage: trackingData.lang ? trackingData.lang : lang,
createDate: trackingData.createdDate,
publishDate: trackingData.publishedDate,
// sessionid: "<unique identifier of session>", // base on what?
}
return page_obj
}
import { TrackingSDKProps } from "@/types/components/tracking"
export default function TrackingSDK({ pageData, userData }: TrackingSDKProps) {
const pathName = usePathname()
@@ -73,14 +51,9 @@ export default function TrackingSDK({ pageData, userData }: TrackingSDKProps) {
entry as PerformanceNavigationTiming
window.adobeDataLayer.push({
event: "pageViewEnd",
event: "pageView",
pageInfo: pageObject,
userInfo: userData,
timing: {
duration,
loadEventEnd,
startTime,
},
})
}
})
@@ -99,19 +72,6 @@ export default function TrackingSDK({ pageData, userData }: TrackingSDKProps) {
}
}, [pathName, pageData, userData, initPerformanceTracking])
useEffect(() => {
if (window.adobeDataLayer) {
const trackingData = { ...pageData, pathName }
const pageObject = createSDKPageObject(trackingData)
window.adobeDataLayer.push({
event: "pageView",
pageInfo: pageObject,
userInfo: userData,
})
}
}, [pathName, pageData, userData])
useEffect(() => {
// handle consent
window.addEventListener("CookiebotOnAccept", CookiebotCallbackOnAccept)