Merged in fix/SW-3020-tracking-card-type (pull request #2431)

fix(SW-3020)-tracking-card-type

* fix(SW-3020): add card type for guarantee success

* fix(SW-3020): fix pr comment


Approved-by: Tobias Johansson
This commit is contained in:
Bianca Widstam
2025-06-25 14:08:55 +00:00
parent 9e3d82b62c
commit ebc90a825d
3 changed files with 29 additions and 20 deletions

View File

@@ -100,6 +100,7 @@ export default async function PaymentCallbackPage(
refId={refId}
sig={sig}
successRedirectUrl={confirmationUrl}
cardType={booking.guaranteeInfo?.cardType}
/>
)
}

View File

@@ -7,10 +7,9 @@ import { BookingStatusEnum, MEMBERSHIP_FAILED_ERROR } from "@/constants/booking"
import LoadingSpinner from "@/components/LoadingSpinner"
import { useHandleBookingStatus } from "@/hooks/booking/useHandleBookingStatus"
import { trackEvent } from "@/utils/tracking/base"
import { clearGlaSessionStorage, readGlaFromSessionStorage } from "./helpers"
import TimeoutSpinner from "./TimeoutSpinner"
import { trackGuaranteeBookingSuccess } from "./tracking"
const validBookingStatuses = [
BookingStatusEnum.PaymentSucceeded,
@@ -21,12 +20,14 @@ interface HandleStatusPollingProps {
refId: string
sig: string
successRedirectUrl: string
cardType?: string
}
export default function HandleSuccessCallback({
refId,
sig,
successRedirectUrl,
cardType,
}: HandleStatusPollingProps) {
const router = useRouter()
@@ -57,23 +58,7 @@ export default function HandleSuccessCallback({
bookingStatus.booking.reservationStatus as BookingStatusEnum
)
) {
const glaSessionData = readGlaFromSessionStorage()
if (glaSessionData) {
trackEvent({
event: "guaranteeBookingSuccess",
hotelInfo: {
lateArrivalGuarantee: glaSessionData.lateArrivalGuarantee,
hotelId: glaSessionData.hotelId,
guaranteedProduct: "room",
},
paymentInfo: {
hotelId: glaSessionData.hotelId,
type: glaSessionData.paymentMethod,
isSavedCreditCard: glaSessionData.isSavedCreditCard,
},
})
clearGlaSessionStorage()
}
trackGuaranteeBookingSuccess(cardType)
// a successful booking can still have membership errors
const membershipFailedError = bookingStatus.booking.errors.find(
(e) => e.errorCode === MEMBERSHIP_FAILED_ERROR
@@ -84,7 +69,7 @@ export default function HandleSuccessCallback({
router.replace(`${successRedirectUrl}${errorParam}`)
}
}, [bookingStatus, successRedirectUrl, router])
}, [bookingStatus, cardType, successRedirectUrl, router])
if (isTimeout || error) {
return <TimeoutSpinner />

View File

@@ -0,0 +1,23 @@
import { trackEvent } from "@/utils/tracking/base"
import { clearGlaSessionStorage, readGlaFromSessionStorage } from "./helpers"
export function trackGuaranteeBookingSuccess(cardType?: string) {
const glaSessionData = readGlaFromSessionStorage()
if (glaSessionData) {
trackEvent({
event: "guaranteeBookingSuccess",
hotelInfo: {
lateArrivalGuarantee: glaSessionData.lateArrivalGuarantee,
hotelId: glaSessionData.hotelId,
guaranteedProduct: "room",
},
paymentInfo: {
hotelId: glaSessionData.hotelId,
type: cardType ?? glaSessionData.paymentMethod,
isSavedCreditCard: glaSessionData.isSavedCreditCard,
},
})
}
clearGlaSessionStorage()
}