Merged in feat/sw-3545-update-sas-userinfo-tracking (pull request #2982)

feat(SW-3545): Update partner-sas userinfo tracking

* Update loginType to eurobonus

* Remove tracking booking code properties when disabled

* Add EB user data to tracking

* Fix type issue


Approved-by: Joakim Jäderberg
This commit is contained in:
Anton Gunnarsson
2025-10-17 09:35:37 +00:00
parent c01f440651
commit 710309b7eb
17 changed files with 100 additions and 41 deletions

View File

@@ -4,6 +4,7 @@ import { useEffect, useState } from "react"
import { TrackingSDK } from "@scandic-hotels/tracking/TrackingSDK"
import { useBookingFlowConfig } from "../../../bookingFlowConfig/bookingFlowConfigContext"
import { clearPaymentInfoSessionStorage } from "../../../components/EnterDetails/Payment/helpers"
import useLang from "../../../hooks/useLang"
import { useSearchHistory } from "../../../hooks/useSearchHistory"
@@ -23,6 +24,7 @@ export default function BookingConfirmationTracking({
}) {
const lang = useLang()
const bookingRooms = useBookingConfirmationStore((state) => state.rooms)
const config = useBookingFlowConfig()
const [loadedBookingConfirmationRefId] = useState(() => {
if (typeof window !== "undefined") {
@@ -47,6 +49,7 @@ export default function BookingConfirmationTracking({
bookingConfirmation.booking,
bookingConfirmation.hotel,
rooms,
config,
searchTerm
)
}

View File

@@ -14,6 +14,7 @@ import {
import { BreakfastPackageEnum } from "@scandic-hotels/trpc/enums/breakfast"
import { RoomPackageCodeEnum } from "@scandic-hotels/trpc/enums/roomFilter"
import { type BookingFlowConfig } from "../../../bookingFlowConfig/bookingFlowConfig"
import { invertedBedTypeMap } from "../../../utils/SelectRate"
import { getSpecialRoomType } from "../../../utils/specialRoomType"
import { readPaymentInfoFromSessionStorage } from "../../EnterDetails/Payment/helpers"
@@ -63,6 +64,7 @@ export function getTracking(
booking: BookingConfirmation["booking"],
hotel: BookingConfirmation["hotel"],
rooms: Room[],
config: Pick<BookingFlowConfig, "bookingCodeEnabled">,
searchTerm?: string
) {
const arrivalDate = new Date(booking.checkInDate)
@@ -96,6 +98,13 @@ export function getTracking(
)
.map((pkg) => mapAncillaryPackage(pkg, hotel.operaId))
const bookingCodeProperties = {
bookingCode: rooms.map((room) => room.bookingCode ?? "n/a").join(", "),
bookingCodeAvailability: booking.bookingCode
? rooms.map((room) => (room.bookingCode ? "true" : "false")).join(", ")
: undefined,
}
const hotelsTrackingData: TrackingSDKHotelInfo = {
ageOfChildren: rooms.map((r) => r.childrenAges?.join(",") ?? "").join("|"),
analyticsRateCode: rooms
@@ -107,10 +116,7 @@ export function getTracking(
.join(",")
.toLowerCase(),
bnr: rooms.map((r) => r.confirmationNumber).join(","),
bookingCode: rooms.map((room) => room.bookingCode ?? "n/a").join(", "),
bookingCodeAvailability: booking.bookingCode
? rooms.map((room) => (room.bookingCode ? "true" : "false")).join(", ")
: undefined,
...(config.bookingCodeEnabled ? bookingCodeProperties : {}),
bookingTypeofDay: isWeekend(arrivalDate) ? "weekend" : "weekday",
breakfastOption: rooms
.map((r) => {

View File

@@ -2,6 +2,7 @@
import { TrackingSDK } from "@scandic-hotels/tracking/TrackingSDK"
import { useBookingFlowConfig } from "../../../bookingFlowConfig/bookingFlowConfigContext"
import { useSearchHistory } from "../../../hooks/useSearchHistory"
import { useEnterDetailsStore } from "../../../stores/enter-details"
import { getTracking } from "./tracking"
@@ -31,7 +32,7 @@ export default function EnterDetailsTrackingWrapper({
storedRooms: state.rooms,
breakfastPackages: state.breakfastPackages,
}))
const config = useBookingFlowConfig()
const searchHistory = useSearchHistory()
const searchTerm = searchHistory.searchHistory[0]?.name
@@ -43,6 +44,7 @@ export default function EnterDetailsTrackingWrapper({
lang,
storedRooms,
breakfastPackages,
config,
searchTerm
)

View File

@@ -24,6 +24,7 @@ import type {
Product,
} from "@scandic-hotels/trpc/types/roomAvailability"
import type { BookingFlowConfig } from "../../../bookingFlowConfig/bookingFlowConfig"
import type { RoomState } from "../../../stores/enter-details/types"
import type { DetailsBooking } from "../../../utils/url"
@@ -35,6 +36,7 @@ export function getTracking(
lang: Lang,
storedRooms: RoomState[],
breakfastPackages: BreakfastPackages,
config: Pick<BookingFlowConfig, "bookingCodeEnabled">,
searchTerm?: string
) {
const arrivalDate = new Date(booking.fromDate)
@@ -62,15 +64,7 @@ export function getTracking(
siteSections: "hotelreservation|details",
siteVersion: "new-web",
}
const hotelsTrackingData: TrackingSDKHotelInfo = {
ageOfChildren: booking.rooms
.map((room) => room.childrenInRoom?.map((kid) => kid.age).join(",") ?? "")
.join("|"),
analyticsRateCode: rooms.map((room) => room.rate).join("|"),
arrivalDate: format(arrivalDate, "yyyy-MM-dd"),
bedType: storedRooms
.map((r) => (r.room.bedType ? r.room.bedType.type : ""))
.join("|"),
const bookingCodeProperties = {
// Comma separated booking code values in "code,code,n/a" format for multiroom and "code" or "n/a" for singleroom
// n/a is used whenever code is Not applicable as defined by Tracking team
bookingCode: rooms
@@ -82,6 +76,17 @@ export function getTracking(
.map((room) => (room.roomRate.bookingCode ? "true" : "false"))
.join(", ")
: undefined,
}
const hotelsTrackingData: TrackingSDKHotelInfo = {
ageOfChildren: booking.rooms
.map((room) => room.childrenInRoom?.map((kid) => kid.age).join(",") ?? "")
.join("|"),
analyticsRateCode: rooms.map((room) => room.rate).join("|"),
arrivalDate: format(arrivalDate, "yyyy-MM-dd"),
bedType: storedRooms
.map((r) => (r.room.bedType ? r.room.bedType.type : ""))
.join("|"),
...(config.bookingCodeEnabled ? bookingCodeProperties : null),
bookingTypeofDay: isWeekend(arrivalDate) ? "weekend" : "weekday",
breakfastOption,
childBedPreference: booking.rooms