Merged in fix/tracking-fixes (pull request #1930)

Fix/tracking fixes

* fix: remove hotelInfo and paymentInfo when user reloads page on confirmation page

* fix: clean session storage item on unmount

* fix: commented out hard navigation hook

* fix: update price calculation on room ancillary in tracking

* fix: update discount calculation

* fix: add space between fns

* fix: allow useSoftNavigation to fire pageview again on same pathname

* fix: prevent bedSelection and breakfastSelection from tracking twice


Approved-by: Hrishikesh Vaipurkar
This commit is contained in:
Tobias Johansson
2025-05-03 07:27:54 +00:00
parent 0c7836fa59
commit 71f1e9fe2c
6 changed files with 84 additions and 68 deletions

View File

@@ -1,13 +1,7 @@
"use client"
import { usePathname } from "next/navigation"
import {
startTransition,
useEffect,
useOptimistic,
useRef,
useState,
} from "react"
import { startTransition, useEffect, useRef, useState } from "react"
import { trpc } from "@/lib/trpc/client"
import useRouterTransitionStore from "@/stores/router-transition"
@@ -105,7 +99,6 @@ export const useTrackSoftNavigation = ({
isError,
} = trpc.user.userTrackingInfo.useQuery()
const [loading, setLoading] = useOptimistic(false)
const [status, setStatus] = useState<TransitionStatus>(
TransitionStatusEnum.NotRun
)
@@ -125,22 +118,17 @@ export const useTrackSoftNavigation = ({
if (isTransitioning && status === TransitionStatusEnum.NotRun) {
startTransition(() => {
setStatus(TransitionStatusEnum.Running)
setLoading(true)
})
return
}
if (
!loading &&
isTransitioning &&
status === TransitionStatusEnum.Running
) {
if (isTransitioning && status === TransitionStatusEnum.Running) {
setStatus(TransitionStatusEnum.Done)
stopRouterTransition()
return
}
if (!loading && !isTransitioning && status === TransitionStatusEnum.Done) {
if (!isTransitioning && status === TransitionStatusEnum.Done) {
const pageLoadTime = getPageLoadTime()
const trackingData = {
...pageData,
@@ -149,29 +137,27 @@ export const useTrackSoftNavigation = ({
pageLoadTime: pageLoadTime,
}
const pageObject = createSDKPageObject(trackingData)
if (previousPathname.current !== pathName) {
const userData: TrackingSDKUserData = isError
? { loginStatus: "Error" }
: userTrackingData
const userData: TrackingSDKUserData = isError
? { loginStatus: "Error" }
: userTrackingData
trackPageView({
event: "pageView",
pageInfo: pageObject,
userInfo: userData,
hotelInfo: hotelInfo,
paymentInfo,
ancillaries,
})
}
trackPageView({
event: "pageView",
pageInfo: pageObject,
userInfo: userData,
hotelInfo: hotelInfo,
paymentInfo,
ancillaries,
})
setStatus(TransitionStatusEnum.NotRun) // Reset status
previousPathname.current = pathName // Update for next render
}
}, [
isError,
isPending,
isTransitioning,
loading,
status,
setLoading,
stopRouterTransition,
pageData,
pathName,