Fixed new tracking requirements

This commit is contained in:
Linus Flood
2024-11-29 13:01:03 +01:00
parent b424cf7bc4
commit 6433f136b4
3 changed files with 32 additions and 27 deletions

View File

@@ -1,7 +1,7 @@
"use client" "use client"
import { usePathname } from "next/navigation" import { usePathname } from "next/navigation"
import { useEffect, useMemo } from "react" import { useEffect, useMemo, useRef } from "react"
import { Lang } from "@/constants/languages" import { Lang } from "@/constants/languages"
import { RoomConfiguration } from "@/server/routers/hotels/output" import { RoomConfiguration } from "@/server/routers/hotels/output"
@@ -48,6 +48,11 @@ export default function EnterDetailsTracking(props: Props) {
const { getPageLoadTime, hasRun } = useTrackingStore() const { getPageLoadTime, hasRun } = useTrackingStore()
const pathName = usePathname() const pathName = usePathname()
// We need this check to differentiate hard vs soft navigations
// This is not because of StrictMode
const hasRunInitial = useRef<boolean>(false)
const previousPathname = useRef<string | null>(null)
const getSpecialRoomType = (packages: Packages | null) => { const getSpecialRoomType = (packages: Packages | null) => {
if (!packages) { if (!packages) {
return "" return ""
@@ -123,9 +128,13 @@ export default function EnterDetailsTracking(props: Props) {
]) ])
useEffect(() => { useEffect(() => {
if (!hasRun) { if (!hasRunInitial.current) {
hasRunInitial.current = true
previousPathname.current = pathName // Set initial path to compare later
return return
} }
if (previousPathname.current !== pathName) {
console.log("TRACKING: Tracking RouterTransition pageViewEnd", pageObject) console.log("TRACKING: Tracking RouterTransition pageViewEnd", pageObject)
console.log( console.log(
"TRACKING: Tracking RouterTransition userData", "TRACKING: Tracking RouterTransition userData",
@@ -136,12 +145,14 @@ export default function EnterDetailsTracking(props: Props) {
hotelDetailsData hotelDetailsData
) )
window.adobeDataLayer.push({ window.adobeDataLayer.push({
event: "pageViewEnd", event: "pageView",
pageInfo: pageObject, pageInfo: pageObject,
userInfo: userTrackingData, userInfo: userTrackingData,
hotelInfo: hotelDetailsData, hotelInfo: hotelDetailsData,
}) })
}, [userTrackingData, hasRun, pageObject, hotelDetailsData]) }
previousPathname.current = pathName // Update for next render
}, [userTrackingData, pageObject, hotelDetailsData, pathName])
return null return null
} }

View File

@@ -11,7 +11,7 @@ import { trackPageViewStart } from "@/utils/tracking"
export default function RouterTracking() { export default function RouterTracking() {
const pathName = usePathname() const pathName = usePathname()
const searchParams = useSearchParams() const searchParams = useSearchParams()
const { setInitialPageLoadTime, hasRun } = useTrackingStore() const { setInitialPageLoadTime } = useTrackingStore()
const { startRouterTransition } = useRouterTransitionStore() const { startRouterTransition } = useRouterTransitionStore()
@@ -36,13 +36,7 @@ export default function RouterTracking() {
}) })
} }
previousPathname.current = pathName // Update for next render previousPathname.current = pathName // Update for next render
}, [ }, [pathName, searchParams, setInitialPageLoadTime, startRouterTransition])
pathName,
searchParams,
setInitialPageLoadTime,
startRouterTransition,
hasRun,
])
return null return null
} }

View File

@@ -107,7 +107,7 @@ export default function RouterTransition({
console.log("TRACKING: Tracking RouterTransition userData", userData) console.log("TRACKING: Tracking RouterTransition userData", userData)
console.log("TRACKING: Tracking RouterTransition hotelInfo", hotelInfo) console.log("TRACKING: Tracking RouterTransition hotelInfo", hotelInfo)
window.adobeDataLayer.push({ window.adobeDataLayer.push({
event: "pageViewEnd", event: "pageView",
pageInfo: pageObject, pageInfo: pageObject,
userInfo: userData, userInfo: userData,
hotelInfo: hotelInfo, hotelInfo: hotelInfo,