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:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user