Merged in fix/BOOK-377-clear-booking-widget-state (pull request #2929)
fix(BOOK-377): clear date and guest data after confirmed booking * fix(BOOK-377): clear date and guest data after confirmed booking Approved-by: Erik Tiekstra
This commit is contained in:
@@ -6,6 +6,7 @@ import { useEffect } from "react"
|
|||||||
import { LoadingSpinner } from "@scandic-hotels/design-system/LoadingSpinner"
|
import { LoadingSpinner } from "@scandic-hotels/design-system/LoadingSpinner"
|
||||||
import { BookingStatusEnum } from "@scandic-hotels/trpc/enums/bookingStatus"
|
import { BookingStatusEnum } from "@scandic-hotels/trpc/enums/bookingStatus"
|
||||||
|
|
||||||
|
import { clearBookingWidgetState } from "../../../../hooks/useBookingWidgetState"
|
||||||
import { useHandleBookingStatus } from "../../../../hooks/useHandleBookingStatus"
|
import { useHandleBookingStatus } from "../../../../hooks/useHandleBookingStatus"
|
||||||
import { MEMBERSHIP_FAILED_ERROR } from "../../../../types/membershipFailedError"
|
import { MEMBERSHIP_FAILED_ERROR } from "../../../../types/membershipFailedError"
|
||||||
import TimeoutSpinner from "./TimeoutSpinner"
|
import TimeoutSpinner from "./TimeoutSpinner"
|
||||||
@@ -58,6 +59,7 @@ export function HandleSuccessCallback({
|
|||||||
bookingStatus.booking.reservationStatus as BookingStatusEnum
|
bookingStatus.booking.reservationStatus as BookingStatusEnum
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
|
clearBookingWidgetState()
|
||||||
trackGuaranteeBookingSuccess(cardType)
|
trackGuaranteeBookingSuccess(cardType)
|
||||||
// a successful booking can still have membership errors
|
// a successful booking can still have membership errors
|
||||||
const membershipFailedError = bookingStatus.booking.errors.find(
|
const membershipFailedError = bookingStatus.booking.errors.find(
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ import { RoomPackageCodeEnum } from "@scandic-hotels/trpc/enums/roomFilter"
|
|||||||
import { env } from "../../../../env/client"
|
import { env } from "../../../../env/client"
|
||||||
import { useAvailablePaymentOptions } from "../../../hooks/useAvailablePaymentOptions"
|
import { useAvailablePaymentOptions } from "../../../hooks/useAvailablePaymentOptions"
|
||||||
import { useBookingFlowContext } from "../../../hooks/useBookingFlowContext"
|
import { useBookingFlowContext } from "../../../hooks/useBookingFlowContext"
|
||||||
|
import { clearBookingWidgetState } from "../../../hooks/useBookingWidgetState"
|
||||||
import { useHandleBookingStatus } from "../../../hooks/useHandleBookingStatus"
|
import { useHandleBookingStatus } from "../../../hooks/useHandleBookingStatus"
|
||||||
import { useIsLoggedIn } from "../../../hooks/useIsLoggedIn"
|
import { useIsLoggedIn } from "../../../hooks/useIsLoggedIn"
|
||||||
import useLang from "../../../hooks/useLang"
|
import useLang from "../../../hooks/useLang"
|
||||||
@@ -169,6 +170,7 @@ export default function PaymentClient({
|
|||||||
const mainRoom = booking.rooms[0]
|
const mainRoom = booking.rooms[0]
|
||||||
|
|
||||||
if (booking.reservationStatus == BookingStatusEnum.BookingCompleted) {
|
if (booking.reservationStatus == BookingStatusEnum.BookingCompleted) {
|
||||||
|
clearBookingWidgetState()
|
||||||
// Cookie is used by Booking Confirmation page to validate that the user came from payment callback
|
// Cookie is used by Booking Confirmation page to validate that the user came from payment callback
|
||||||
document.cookie = `bcsig=${result.sig}; Path=/; Max-Age=60; Secure; SameSite=Strict`
|
document.cookie = `bcsig=${result.sig}; Path=/; Max-Age=60; Secure; SameSite=Strict`
|
||||||
const confirmationUrl = `${bookingConfirmation(lang)}?RefId=${encodeURIComponent(mainRoom.refId)}`
|
const confirmationUrl = `${bookingConfirmation(lang)}?RefId=${encodeURIComponent(mainRoom.refId)}`
|
||||||
@@ -281,6 +283,7 @@ export default function PaymentClient({
|
|||||||
BookingStatusEnum.BookingCompleted
|
BookingStatusEnum.BookingCompleted
|
||||||
) {
|
) {
|
||||||
const mainRoom = bookingStatus.data.booking.rooms[0]
|
const mainRoom = bookingStatus.data.booking.rooms[0]
|
||||||
|
clearBookingWidgetState()
|
||||||
// Cookie is used by Booking Confirmation page to validate that the user came from payment callback
|
// Cookie is used by Booking Confirmation page to validate that the user came from payment callback
|
||||||
document.cookie = `bcsig=${bookingStatus.data.sig}; Path=/; Max-Age=60; Secure; SameSite=Strict`
|
document.cookie = `bcsig=${bookingStatus.data.sig}; Path=/; Max-Age=60; Secure; SameSite=Strict`
|
||||||
const confirmationUrl = `${bookingConfirmation(lang)}?RefId=${encodeURIComponent(mainRoom.refId)}`
|
const confirmationUrl = `${bookingConfirmation(lang)}?RefId=${encodeURIComponent(mainRoom.refId)}`
|
||||||
|
|||||||
@@ -90,3 +90,12 @@ export function setBookingWidgetState(state: BookingWidgetState): void {
|
|||||||
)
|
)
|
||||||
} catch {}
|
} catch {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function clearBookingWidgetState(): void {
|
||||||
|
if (typeof window === "undefined") {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
sessionStorage.removeItem(BOOKING_WIDGET_STATE)
|
||||||
|
} catch {}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user