Merged in fix/SW-3442-tracking-event-lowestroomprice- (pull request #2797)

fix(SW-3442): Fixed lowest price tracking and other lint issues

* fix(SW-3442): Fixed lowest price tracking and other lint issues


Approved-by: Joakim Jäderberg
This commit is contained in:
Hrishikesh Vaipurkar
2025-10-02 07:31:46 +00:00
parent ea130ffaf8
commit f3dc818c06
6 changed files with 70 additions and 3 deletions
@@ -36,6 +36,7 @@ import { includeRoomInfo } from "./includeRoomInfo"
import { isRateSelected as isRateSelected_Inner } from "./isRateSelected"
import type { BreakfastPackageEnum } from "@scandic-hotels/trpc/enums/breakfast"
import type { PriceProduct } from "@scandic-hotels/trpc/types/roomAvailability"
import type { SelectRateBooking } from "../../types/components/selectRate/selectRate"
import type { Price } from "../../types/price"
@@ -380,6 +381,8 @@ export function SelectRateProvider({
roomIndex,
roomAvailabilityWithAdjustedRoomCount
),
getLowestRoomPrice: () =>
getLowestRoomPrice(roomAvailabilityWithAdjustedRoomCount),
isRateSelected,
getPackagesForRoom,
bookingCodeFilter,
@@ -520,6 +523,28 @@ function calculateNumberOfNights(
return dt(toDate).diff(dt(fromDate), "day")
}
function getLowestRoomPrice(
roomAvailability: (AvailabilityWithRoomInfo | null)[][]
) {
// First room is always cheapest room because sort by price is default
const firstRoomAvailability = roomAvailability[0]
return firstRoomAvailability
.filter((room) => !!room)[0]
.products.filter(
(product): product is PriceProduct =>
!!(
("public" in product && product.public) ||
("member" in product && product.member)
)
)
.map((product) => ({
currency: (product.member?.localPrice.currency ||
product.public?.localPrice.currency)!,
price: (product.member?.localPrice.pricePerNight ||
product.public?.localPrice.pricePerNight)!,
}))[0]
}
function getAvailabilityForRoom(
roomIndex: number,
roomAvailability: (AvailabilityWithRoomInfo | null)[][] | undefined