Merged in feat/SW-3526-show-sas-eb-points-rate-in- (pull request #2933)

feat(SW-3526): Show EB points rate and label in booking flow

* feat(SW-3526): Show EB points rate and label in booking flow

* feat(SW-3526) Optimized points currency code

* feat(SW-3526) Removed extra multiplication for token expiry after rebase

* feat(SW-3526): Updated to exhaustive check and thow if type error

Approved-by: Anton Gunnarsson
This commit is contained in:
Hrishikesh Vaipurkar
2025-10-15 06:54:44 +00:00
parent 73af1eed9b
commit 78ede453a2
27 changed files with 281 additions and 176 deletions

View File

@@ -18,6 +18,7 @@ import { RoomPackageCodeEnum } from "@scandic-hotels/trpc/enums/roomFilter"
import { AvailabilityEnum } from "@scandic-hotels/trpc/enums/selectHotel"
import { selectRateRoomsAvailabilityInputSchema } from "@scandic-hotels/trpc/routers/hotels/availability/selectRate/rooms/schema"
import { useGetPointsCurrency } from "../../../bookingFlowConfig/bookingFlowConfigContext"
import { useIsLoggedIn } from "../../../hooks/useIsLoggedIn"
import useLang from "../../../hooks/useLang"
import { BookingCodeFilterEnum } from "../../../stores/bookingCode-filter"
@@ -68,6 +69,7 @@ export function SelectRateProvider({
const updateBooking = useUpdateBooking()
const isUserLoggedIn = useIsLoggedIn()
const intl = useIntl()
const pointsCurrency = useGetPointsCurrency()
const [activeRoomIndex, setInternalActiveRoomIndex] = useQueryState<number>(
"activeRoomIndex",
@@ -233,6 +235,7 @@ export function SelectRateProvider({
roomConfiguration: roomAvailability[ix]?.[0],
})),
isMember: isUserLoggedIn,
pointsCurrency,
})
const getPriceForRoom = useCallback(
@@ -253,9 +256,10 @@ export function SelectRateProvider({
],
isMember: isUserLoggedIn && roomIndex === 0,
addAdditionalCost: false,
pointsCurrency,
})
},
[selectedRates, roomAvailability, isUserLoggedIn]
[selectedRates, roomAvailability, isUserLoggedIn, pointsCurrency]
)
const setActiveRoomIndex = useCallback(

View File

@@ -17,10 +17,12 @@ export function getTotalPrice({
selectedRates,
isMember,
addAdditionalCost = true,
pointsCurrency,
}: {
selectedRates: Array<SelectedRate | null>
isMember: boolean
addAdditionalCost?: boolean
pointsCurrency?: CurrencyEnum
}): Price | null {
const mainRoom = selectedRates[0]
const mainRoomRate = mainRoom?.rate
@@ -45,7 +47,8 @@ export function getTotalPrice({
mainRoom.roomConfiguration?.selectedPackages.filter(
(pkg) => "localPrice" in pkg
) ?? null,
addAdditionalCost
addAdditionalCost,
pointsCurrency
)
}
if ("voucher" in mainRoomRate) {
@@ -156,7 +159,8 @@ function calculateTotalPrice(
function calculateRedemptionTotalPrice(
redemption: RedemptionProduct["redemption"],
packages: RoomPackage[] | null,
addAdditonalCost: boolean
addAdditonalCost: boolean,
pointsCurrency?: CurrencyEnum
) {
const pkgsSum = addAdditonalCost
? sumPackages(packages)
@@ -179,7 +183,7 @@ function calculateRedemptionTotalPrice(
local: {
additionalPrice,
additionalPriceCurrency,
currency: CurrencyEnum.POINTS,
currency: pointsCurrency ?? CurrencyEnum.POINTS,
price: redemption.localPrice.pointsPerStay,
},
}