Merged in fix/BOOK-131-noroomsavailability-tracking (pull request #2971)

fix(BOOK-131): add action and domain

* fix(BOOK-131): add action and domain


Approved-by: Anton Gunnarsson
This commit is contained in:
Bianca Widstam
2025-10-15 14:21:41 +00:00
parent 33f4952d94
commit e2403e11b3
3 changed files with 42 additions and 3 deletions

View File

@@ -6,6 +6,7 @@ import { useIntl } from "react-intl"
import { AlertTypeEnum } from "@scandic-hotels/common/constants/alert"
import { selectRate } from "@scandic-hotels/common/constants/routes/hotelReservation"
import { useSessionId } from "@scandic-hotels/common/hooks/useSessionId"
import useStickyPosition from "@scandic-hotels/common/hooks/useStickyPosition"
import { Alert } from "@scandic-hotels/design-system/Alert"
import { trackNoAvailability } from "@scandic-hotels/tracking/NoAvailabilityTracking"
@@ -165,6 +166,7 @@ function useNoAvailabilityTracking() {
const { fromDate, toDate, hotelId, bookingCode, searchType, rooms } =
useEnterDetailsStore((state) => state.booking)
const lang = useLang()
const sessionId = useSessionId()
const specialRoomType = rooms
?.map((room) => {
@@ -191,6 +193,8 @@ function useNoAvailabilityTracking() {
pageName: "hotelreservation|details",
pageType: "bookingenterdetailspage",
siteSections: "hotelreservation|details",
sessionId,
domain: typeof window !== "undefined" ? window.location.host : "",
}),
[
specialRoomType,
@@ -201,6 +205,7 @@ function useNoAvailabilityTracking() {
rooms.length,
searchType,
bookingCode,
sessionId,
]
)
return track

View File

@@ -4,6 +4,7 @@ import { usePathname, useSearchParams } from "next/navigation"
import { useCallback, useEffect } from "react"
import { useIntl } from "react-intl"
import { useSessionId } from "@scandic-hotels/common/hooks/useSessionId"
import { toast } from "@scandic-hotels/design-system/Toast"
import { trackNoAvailability } from "@scandic-hotels/tracking/NoAvailabilityTracking"
import { BookingErrorCodeEnum } from "@scandic-hotels/trpc/enums/bookingErrorCode"
@@ -21,6 +22,8 @@ export default function AvailabilityError({ booking }: AvailabilityErrorProps) {
const intl = useIntl()
const pathname = usePathname()
const searchParams = useSearchParams()
const sessionId = useSessionId()
const lang = useLang()
const { rooms, fromDate, toDate, hotelId, bookingCode, searchType } = booking
@@ -61,8 +64,19 @@ export default function AvailabilityError({ booking }: AvailabilityErrorProps) {
pageName: "hotelreservation|select-rate",
pageType: "bookingroomsandratespage",
siteSections: "hotelreservation|select-rate",
sessionId,
domain: typeof window !== "undefined" ? window.location.host : "",
})
}, [rooms, hotelId, lang, fromDate, toDate, searchType, bookingCode])
}, [
rooms,
hotelId,
lang,
fromDate,
toDate,
searchType,
bookingCode,
sessionId,
])
useEffect(() => {
if (hasAvailabilityError) {

View File

@@ -1,8 +1,10 @@
"use client"
import { differenceInCalendarDays, isWeekend } from "date-fns"
import { usePathname } from "next/navigation"
import { useEffect } from "react"
import { useSessionId } from "@scandic-hotels/common/hooks/useSessionId"
import {
TrackingChannelEnum,
type TrackingSDKHotelInfo,
@@ -11,6 +13,7 @@ import {
import { SEARCH_TYPE_REDEMPTION } from "@scandic-hotels/trpc/constants/booking"
import { trackEvent } from "./base"
import { createSDKPageObject } from "./pageview"
import type { Lang } from "@scandic-hotels/common/constants/language"
@@ -27,10 +30,19 @@ export function NoAvailabilityTracking({
hotelsTrackingData,
pageTrackingData,
}: NoAvailabilityTrackingProps) {
const pathName = usePathname()
const sessionId = useSessionId()
useEffect(() => {
if (!shouldTrackNoAvailability) {
return
}
const pageTracking = {
...pageTrackingData,
sessionId,
pathName,
}
const pageObject = createSDKPageObject(pageTracking)
const {
searchTerm,
searchType,
@@ -49,6 +61,7 @@ export function NoAvailabilityTracking({
hotelInfo: {
searchTerm,
searchType,
action: "Hotel search",
noRoomsAvailable: "yes",
hotelID,
leadTime,
@@ -59,7 +72,7 @@ export function NoAvailabilityTracking({
duration,
specialRoomType,
},
pageInfo: pageTrackingData,
pageInfo: pageObject,
})
}, [lang, hotelsTrackingData, pageTrackingData])
@@ -80,6 +93,8 @@ type TrackNoAvailabilityParams = {
pageType: string
siteSections: string
lang: Lang
sessionId: string | null
domain?: string
}
export function trackNoAvailability({
@@ -96,6 +111,8 @@ export function trackNoAvailability({
pageName,
pageType,
siteSections,
sessionId,
domain,
}: TrackNoAvailabilityParams) {
const arrivalDate = new Date(fromDate)
const departureDate = new Date(toDate)
@@ -105,6 +122,7 @@ export function trackNoAvailability({
hotelInfo: {
searchTerm,
searchType,
action: "Hotel search",
noRoomsAvailable: "yes",
hotelId,
leadTime: differenceInCalendarDays(arrivalDate, new Date()),
@@ -117,12 +135,14 @@ export function trackNoAvailability({
},
pageInfo: {
channel: TrackingChannelEnum.hotelreservation,
domain: "www.scandichotels.com",
domain,
domainLanguage: lang,
pageId,
pageName,
pageType,
siteSections,
sessionId,
siteVersion: "new-web",
},
})
}