From 2f0a196b49d2a244d67a8a507093a5e5a734a24c Mon Sep 17 00:00:00 2001 From: Bianca Widstam Date: Wed, 23 Apr 2025 11:05:43 +0000 Subject: [PATCH] Merged in fix/SW-1414-tracking-gla (pull request #1837) fix(SW-1414): add hotelId to tracking for gla * fix(SW-1414): add hotelId to tracking for gla Approved-by: Niclas Edenvin --- .../PaymentCallback/HandleErrorCallback.tsx | 18 ++++++++-------- .../PaymentCallback/HandleSuccessCallback.tsx | 7 ++++--- .../Payment/PaymentCallback/helpers.ts | 21 +++++++++++++++---- .../EnterDetails/Payment/PaymentClient.tsx | 4 ++-- .../GuaranteeLateArrivalCallback/index.tsx | 3 +++ 5 files changed, 35 insertions(+), 18 deletions(-) diff --git a/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentCallback/HandleErrorCallback.tsx b/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentCallback/HandleErrorCallback.tsx index 6fdea77f2..2324ada8c 100644 --- a/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentCallback/HandleErrorCallback.tsx +++ b/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentCallback/HandleErrorCallback.tsx @@ -38,19 +38,19 @@ export default function HandleErrorCallback({ searchObject ) - const lateArrivalGuarantee = readGlaFromSessionStorage() + const glaSessionData = readGlaFromSessionStorage() if (status === PaymentCallbackStatusEnum.Cancel) { - if (lateArrivalGuarantee) { + if (glaSessionData) { trackEvent({ event: "glaCardSaveCancelled", hotelInfo: { - hotelId: detailsStorage.booking.hotelId, - lateArrivalGuarantee, + hotelId: glaSessionData.hotelId, + lateArrivalGuarantee: glaSessionData.lateArrivalGuarantee, guaranteedProduct: "room", }, paymentInfo: { - hotelId: detailsStorage.booking.hotelId, + hotelId: glaSessionData.hotelId, status: "glacardsavecancelled", }, }) @@ -63,16 +63,16 @@ export default function HandleErrorCallback({ } } if (status === PaymentCallbackStatusEnum.Error) { - if (lateArrivalGuarantee) { + if (glaSessionData) { trackEvent({ event: "glaCardSaveFailed", hotelInfo: { - hotelId: detailsStorage.booking.hotelId, - lateArrivalGuarantee, + hotelId: glaSessionData.hotelId, + lateArrivalGuarantee: glaSessionData, guaranteedProduct: "room", }, paymentInfo: { - hotelId: detailsStorage.booking.hotelId, + hotelId: glaSessionData.hotelId, status: "glacardsavefailed", }, }) diff --git a/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentCallback/HandleSuccessCallback.tsx b/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentCallback/HandleSuccessCallback.tsx index eef8e2dc7..20445bb6e 100644 --- a/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentCallback/HandleSuccessCallback.tsx +++ b/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentCallback/HandleSuccessCallback.tsx @@ -50,12 +50,13 @@ export default function HandleSuccessCallback({ bookingStatus.reservationStatus as BookingStatusEnum ) ) { - const lateArrivalGuarantee = readGlaFromSessionStorage() - if (lateArrivalGuarantee) { + const glaSessionData = readGlaFromSessionStorage() + if (glaSessionData) { trackEvent({ event: "guaranteeBookingSuccess", hotelInfo: { - lateArrivalGuarantee, + lateArrivalGuarantee: glaSessionData.lateArrivalGuarantee, + hotelId: glaSessionData.hotelId, guaranteedProduct: "room", }, }) diff --git a/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentCallback/helpers.ts b/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentCallback/helpers.ts index 55f98882b..445bedd6b 100644 --- a/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentCallback/helpers.ts +++ b/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentCallback/helpers.ts @@ -2,18 +2,31 @@ import "client-only" export const glaStorageName = "gla-storage" -export function readGlaFromSessionStorage(): string | null { +type GlaSessionData = { + lateArrivalGuarantee: string + hotelId: string +} + +export function readGlaFromSessionStorage(): GlaSessionData | null { try { - return sessionStorage.getItem(glaStorageName) + const glaSessionData = sessionStorage.getItem(glaStorageName) + if (!glaSessionData) return null + return JSON.parse(glaSessionData) } catch (error) { console.error("Error reading from session storage:", error) return null } } -export function writeGlaToSessionStorage(lateArrivalGuarantee: string) { +export function writeGlaToSessionStorage( + lateArrivalGuarantee: string, + hotelId: string +) { try { - sessionStorage.setItem(glaStorageName, lateArrivalGuarantee) + sessionStorage.setItem( + glaStorageName, + JSON.stringify({ lateArrivalGuarantee, hotelId }) + ) } catch (error) { console.error("Error writing to session storage:", error) } diff --git a/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentClient.tsx b/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentClient.tsx index 951cfb845..45b9d09d9 100644 --- a/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentClient.tsx +++ b/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentClient.tsx @@ -308,9 +308,9 @@ export default function PaymentClient({ if (guarantee || (bookingMustBeGuaranteed && hasOnlyFlexRates)) { const lateArrivalGuarantee = guarantee ? "yes" : "mandatory" - writeGlaToSessionStorage(lateArrivalGuarantee) + writeGlaToSessionStorage(lateArrivalGuarantee, hotelId) trackGlaSaveCardAttempt(hotelId, savedCreditCard, lateArrivalGuarantee) - } else { + } else if (!hasOnlyFlexRates) { trackPaymentEvent({ event: "paymentAttemptStart", hotelId, diff --git a/apps/scandic-web/components/HotelReservation/MyStay/GuaranteeLateArrival/GuaranteeLateArrivalCallback/index.tsx b/apps/scandic-web/components/HotelReservation/MyStay/GuaranteeLateArrival/GuaranteeLateArrivalCallback/index.tsx index f95f48a52..e5f7ecff0 100644 --- a/apps/scandic-web/components/HotelReservation/MyStay/GuaranteeLateArrival/GuaranteeLateArrivalCallback/index.tsx +++ b/apps/scandic-web/components/HotelReservation/MyStay/GuaranteeLateArrival/GuaranteeLateArrivalCallback/index.tsx @@ -5,6 +5,7 @@ import { useEffect } from "react" import { PaymentCallbackStatusEnum } from "@/constants/booking" +import { readGlaFromSessionStorage } from "@/components/HotelReservation/EnterDetails/Payment/PaymentCallback/helpers" import LoadingSpinner from "@/components/LoadingSpinner" import { trackEvent } from "@/utils/tracking/base" @@ -72,9 +73,11 @@ export default function TrackGuarantee({ switch (status) { case PaymentCallbackStatusEnum.Success: + const glaHotelInfo = readGlaFromSessionStorage() trackEvent({ event: "guaranteeBookingSuccess", hotelInfo: { + hotelId: glaHotelInfo?.hotelId, lateArrivalGuarantee: "yes", guaranteedProduct: "room", },