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,25 +128,31 @@ 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
} }
console.log("TRACKING: Tracking RouterTransition pageViewEnd", pageObject)
console.log( if (previousPathname.current !== pathName) {
"TRACKING: Tracking RouterTransition userData", console.log("TRACKING: Tracking RouterTransition pageViewEnd", pageObject)
userTrackingData console.log(
) "TRACKING: Tracking RouterTransition userData",
console.log( userTrackingData
"TRACKING: Tracking RouterTransition hotelInfo", )
hotelDetailsData console.log(
) "TRACKING: Tracking RouterTransition hotelInfo",
window.adobeDataLayer.push({ hotelDetailsData
event: "pageViewEnd", )
pageInfo: pageObject, window.adobeDataLayer.push({
userInfo: userTrackingData, event: "pageView",
hotelInfo: hotelDetailsData, pageInfo: pageObject,
}) userInfo: userTrackingData,
}, [userTrackingData, hasRun, pageObject, hotelDetailsData]) hotelInfo: 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,