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
61 lines
1.6 KiB
TypeScript
61 lines
1.6 KiB
TypeScript
"use client"
|
|
|
|
import { useEffect, useState } from "react"
|
|
|
|
import { useBookingConfirmationStore } from "@/stores/booking-confirmation"
|
|
|
|
import TrackingSDK from "@/components/TrackingSDK"
|
|
import useLang from "@/hooks/useLang"
|
|
|
|
import { getTracking } from "./tracking"
|
|
|
|
import type { Room } from "@/types/stores/booking-confirmation"
|
|
import type { BookingConfirmation } from "@/types/trpc/routers/booking/confirmation"
|
|
|
|
export default function Tracking({
|
|
bookingConfirmation,
|
|
}: {
|
|
bookingConfirmation: BookingConfirmation
|
|
}) {
|
|
const lang = useLang()
|
|
const bookingRooms = useBookingConfirmationStore((state) => state.rooms)
|
|
|
|
const [hasLoadedBookingConfirmation] = useState(() => {
|
|
if (typeof window !== "undefined") {
|
|
return sessionStorage.getItem("hasLoadedBookingConfirmation")
|
|
}
|
|
return null
|
|
})
|
|
|
|
useEffect(() => {
|
|
sessionStorage.setItem("hasLoadedBookingConfirmation", "true")
|
|
|
|
return () => {
|
|
sessionStorage.removeItem("hasLoadedBookingConfirmation")
|
|
}
|
|
}, [])
|
|
|
|
if (!bookingRooms.every(Boolean)) {
|
|
return null
|
|
}
|
|
|
|
const rooms = bookingRooms.filter((room): room is Room => !!room)
|
|
|
|
const { hotelsTrackingData, pageTrackingData, paymentInfo, ancillaries } =
|
|
getTracking(
|
|
lang,
|
|
bookingConfirmation.booking,
|
|
bookingConfirmation.hotel,
|
|
rooms
|
|
)
|
|
|
|
return (
|
|
<TrackingSDK
|
|
pageData={pageTrackingData}
|
|
hotelInfo={hasLoadedBookingConfirmation ? undefined : hotelsTrackingData}
|
|
paymentInfo={hasLoadedBookingConfirmation ? undefined : paymentInfo}
|
|
ancillaries={ancillaries}
|
|
/>
|
|
)
|
|
}
|