From 8b2bd5bcd6dc95699f41d778a9f4d9c6056baf9d Mon Sep 17 00:00:00 2001 From: Linus Flood Date: Wed, 27 Nov 2024 09:15:45 +0100 Subject: [PATCH] Refactor --- .../(standard)/step/enterDetailsTracking.tsx | 89 +++++++++---------- 1 file changed, 42 insertions(+), 47 deletions(-) diff --git a/app/[lang]/(live)/(public)/hotelreservation/(standard)/step/enterDetailsTracking.tsx b/app/[lang]/(live)/(public)/hotelreservation/(standard)/step/enterDetailsTracking.tsx index 0e515a8cc..a3dd1b40c 100644 --- a/app/[lang]/(live)/(public)/hotelreservation/(standard)/step/enterDetailsTracking.tsx +++ b/app/[lang]/(live)/(public)/hotelreservation/(standard)/step/enterDetailsTracking.tsx @@ -1,7 +1,7 @@ "use client" import { usePathname } from "next/navigation" -import { useEffect, useState } from "react" +import { useEffect, useMemo, useState } from "react" import { Lang } from "@/constants/languages" import { useStepsStore } from "@/stores/steps" @@ -28,55 +28,50 @@ export default function EnterDetailsTracking(props: Props) { const { getPageLoadTime, hasRun } = useTrackingStore() const pathName = usePathname() - const [hotelsTrackingData, setHotelsTrackingData] = useState( - initialHotelsTrackingData - ) + const pageObject = useMemo(() => { + const pageTrackingData: TrackingSDKPageData = { + pageId: currentStep, + domainLanguage: lang, + channel: TrackingChannelEnum["hotelreservation"], + pageName: `hotelreservation|${currentStep}`, + siteSections: `hotelreservation|${currentStep}`, + pageType: currentStep, + } + + const trackingData = { + ...pageTrackingData, + pathName, + pageLoadTime: getPageLoadTime(), + } + const pageObject = createSDKPageObject(trackingData) + return pageObject + }, [currentStep, getPageLoadTime, lang, pathName]) + + const hotelDetailsData = useMemo(() => { + const data: TrackingSDKHotelInfo = { ...initialHotelsTrackingData } + return data + }, [initialHotelsTrackingData]) useEffect(() => { - function trackData() { - const pageTrackingData: TrackingSDKPageData = { - pageId: currentStep, - domainLanguage: lang, - channel: TrackingChannelEnum["hotelreservation"], - pageName: `hotelreservation|${currentStep}`, - siteSections: `hotelreservation|${currentStep}`, - pageType: currentStep, // TODO: Change to correct - } - - const trackingData = { - ...pageTrackingData, - pathName, - pageLoadTime: getPageLoadTime(), - } - const pageObject = createSDKPageObject(trackingData) - console.log("TRACKING: Tracking RouterTransition pageViewEnd", pageObject) - console.log( - "TRACKING: Tracking RouterTransition userData", - userTrackingData - ) - console.log( - "TRACKING: Tracking RouterTransition hotelInfo", - hotelsTrackingData - ) - window.adobeDataLayer.push({ - event: "pageViewEnd", - pageInfo: pageObject, - userInfo: userTrackingData, - hotelInfo: hotelsTrackingData, - }) + if (!hasRun) { + return } - if (hasRun) { - trackData() - } - }, [ - currentStep, - getPageLoadTime, - hotelsTrackingData, - pathName, - userTrackingData, - hasRun, - lang, - ]) + console.log("TRACKING: Tracking RouterTransition pageViewEnd", pageObject) + console.log( + "TRACKING: Tracking RouterTransition userData", + userTrackingData + ) + console.log( + "TRACKING: Tracking RouterTransition hotelInfo", + hotelDetailsData + ) + window.adobeDataLayer.push({ + event: "pageViewEnd", + pageInfo: pageObject, + userInfo: userTrackingData, + hotelInfo: hotelDetailsData, + }) + }, [userTrackingData, hasRun, pageObject, hotelDetailsData]) return null }