Merged in fix/SW-3283-select-rate-booking-code (pull request #2699)

fix(SW-3283): add booking code when selecting rate and reset state when removing booking code

* fix(SW-3283): add booking code when selecting rate and reset state when removing booking code

* feat: add removeBookingCode action to SelectRateContext

* fix(SW-3283): add booking code when selecting rate and reset state when removing booking code

* fix(SW-3283): merge


Approved-by: Joakim Jäderberg
This commit is contained in:
Bianca Widstam
2025-08-26 13:03:46 +00:00
parent c53e6ef187
commit 4d4c90b800
6 changed files with 25 additions and 12 deletions

View File

@@ -1,5 +1,3 @@
import { usePathname, useRouter, useSearchParams } from "next/navigation"
import { BookingCodeChip } from "@scandic-hotels/design-system/BookingCodeChip" import { BookingCodeChip } from "@scandic-hotels/design-system/BookingCodeChip"
import { useSelectRateContext } from "@/contexts/SelectRate/SelectRateContext" import { useSelectRateContext } from "@/contexts/SelectRate/SelectRateContext"
@@ -7,10 +5,8 @@ import { useSelectRateContext } from "@/contexts/SelectRate/SelectRateContext"
export function RemoveBookingCodeButton() { export function RemoveBookingCodeButton() {
const { const {
input: { bookingCode }, input: { bookingCode },
actions: { removeBookingCode },
} = useSelectRateContext() } = useSelectRateContext()
const router = useRouter()
const searchParams = useSearchParams()
const pathname = usePathname()
if (!bookingCode) { if (!bookingCode) {
return null return null
@@ -23,12 +19,7 @@ export function RemoveBookingCodeButton() {
withCloseButton={true} withCloseButton={true}
withText={false} withText={false}
onClose={() => { onClose={() => {
const newSearchParams = new URLSearchParams(searchParams) removeBookingCode()
newSearchParams.delete("bookingCode")
const url = `${pathname}?${newSearchParams.toString()}`
router.replace(url)
}} }}
/> />
) )

View File

@@ -66,7 +66,7 @@ function InnerCode({
} = useSelectRateContext() } = useSelectRateContext()
function handleSelectRate(rateCode: string) { function handleSelectRate(rateCode: string) {
selectRate({ roomIndex, rateCode, roomTypeCode }) selectRate({ roomIndex, rateCode, roomTypeCode, bookingCode })
} }
const bannerText = useBannerText({ const bannerText = useBannerText({

View File

@@ -29,6 +29,7 @@ export default function Redemptions({
const intl = useIntl() const intl = useIntl()
const rateTitles = useRateTitles() const rateTitles = useRateTitles()
const { const {
input: { bookingCode },
actions: { selectRate }, actions: { selectRate },
selectedRates, selectedRates,
} = useSelectRateContext() } = useSelectRateContext()
@@ -114,6 +115,7 @@ export default function Redemptions({
roomIndex: roomIndex, roomIndex: roomIndex,
rateCode: rateCode, rateCode: rateCode,
roomTypeCode: roomTypeCode, roomTypeCode: roomTypeCode,
bookingCode: bookingCode,
}) })
}} }}
paymentTerm={rateTitles[firstRedemption.rate].paymentTerm} paymentTerm={rateTitles[firstRedemption.rate].paymentTerm}

View File

@@ -243,6 +243,7 @@ function Inner({
rateCode: rateCode, rateCode: rateCode,
roomTypeCode: roomTypeCode, roomTypeCode: roomTypeCode,
counterRateCode: counterRateCode, counterRateCode: counterRateCode,
bookingCode: product.bookingCode,
}) })
}} }}
isMemberRateActive={isMemberRateActive} isMemberRateActive={isMemberRateActive}

View File

@@ -454,6 +454,24 @@ export function SelectRateProvider({
updateBooking(selectRateBooking) updateBooking(selectRateBooking)
setActiveRoomIndex("next") setActiveRoomIndex("next")
}, },
removeBookingCode: () => {
if (!selectRateInput.data) {
return
}
const clearedBooking: SelectRateBooking = {
hotelId: selectRateInput.data.booking.hotelId,
fromDate: selectRateInput.data.booking.fromDate,
toDate: selectRateInput.data.booking.toDate,
rooms: selectRateInput.data.booking.rooms.map((room) => ({
...room,
bookingCode: null,
})),
}
updateBooking(clearedBooking)
setActiveRoomIndex(0)
},
}, },
}} }}
> >

View File

@@ -73,6 +73,7 @@ export type SelectRateContext = {
roomTypeCode: string roomTypeCode: string
bookingCode?: string bookingCode?: string
}) => void }) => void
removeBookingCode: () => void
} }
} }