Merged in feat/book-530-selectrate-tracking (pull request #3128)
feat(BOOK-530): fixed noAvailableRooms tracking on select rate page * feat(BOOK-530): fixed noAvailableRooms tracking on select rate page Approved-by: Bianca Widstam
This commit is contained in:
@@ -1,9 +1,7 @@
|
||||
"use client"
|
||||
|
||||
import { NoAvailabilityTracking } from "@scandic-hotels/tracking/NoAvailabilityTracking"
|
||||
import { TrackingSDK } from "@scandic-hotels/tracking/TrackingSDK"
|
||||
import { SEARCH_TYPE_REDEMPTION } from "@scandic-hotels/trpc/constants/booking"
|
||||
import { AvailabilityEnum } from "@scandic-hotels/trpc/enums/selectHotel"
|
||||
|
||||
import { useSelectRateContext } from "../../../contexts/SelectRate/SelectRateContext"
|
||||
import useLang from "../../../hooks/useLang"
|
||||
@@ -22,7 +20,7 @@ interface TrackingProps {
|
||||
|
||||
export function SelectRateTracking({ hotelData, booking }: TrackingProps) {
|
||||
const lang = useLang()
|
||||
const { availability, input } = useSelectRateContext()
|
||||
const { input } = useSelectRateContext()
|
||||
|
||||
const { fromDate, toDate } = getValidDates(booking.fromDate, booking.toDate)
|
||||
|
||||
@@ -39,6 +37,7 @@ export function SelectRateTracking({ hotelData, booking }: TrackingProps) {
|
||||
return packages ?? ""
|
||||
})
|
||||
.join("|")
|
||||
|
||||
const { hotelsTrackingData, pageTrackingData } = getSelectRateTracking({
|
||||
lang,
|
||||
arrivalDate,
|
||||
@@ -53,47 +52,7 @@ export function SelectRateTracking({ hotelData, booking }: TrackingProps) {
|
||||
rooms,
|
||||
})
|
||||
|
||||
let shouldTrackNoAvailability = false
|
||||
if (availability && !availability.isFetching && availability.data) {
|
||||
shouldTrackNoAvailability = availability.data.some((room) => {
|
||||
if (!room || "error" in room) return false
|
||||
|
||||
const allRoomsNotAvailable = room.roomConfigurations.every(
|
||||
(roomConfig) => roomConfig.status === AvailabilityEnum.NotAvailable
|
||||
)
|
||||
|
||||
const isPublicPromotionWithCode = room.roomConfigurations.some((r) => {
|
||||
const filteredCampaigns = r.campaign.filter(Boolean)
|
||||
return filteredCampaigns.length
|
||||
? filteredCampaigns.every(
|
||||
(product) => !!product.rateDefinition?.isCampaignRate
|
||||
)
|
||||
: false
|
||||
})
|
||||
|
||||
const noAvailableBookingCodeRooms =
|
||||
!isPublicPromotionWithCode &&
|
||||
room.roomConfigurations.every(
|
||||
(r) => r.status === AvailabilityEnum.NotAvailable || !r.code.length
|
||||
)
|
||||
|
||||
return (
|
||||
allRoomsNotAvailable ||
|
||||
(input.bookingCode && noAvailableBookingCodeRooms)
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<NoAvailabilityTracking
|
||||
lang={lang}
|
||||
shouldTrackNoAvailability={shouldTrackNoAvailability}
|
||||
hotelsTrackingData={hotelsTrackingData}
|
||||
pageTrackingData={pageTrackingData}
|
||||
/>
|
||||
|
||||
<TrackingSDK hotelInfo={hotelsTrackingData} pageData={pageTrackingData} />
|
||||
</>
|
||||
<TrackingSDK hotelInfo={hotelsTrackingData} pageData={pageTrackingData} />
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user