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

@@ -22,6 +22,7 @@ import { FacilityToIcon } from '../../../FacilityToIcon'
import { HotelPin } from '../../../Map/types'
import { HotelPointsRow } from '../../HotelPointsRow'
import styles from './standaloneHotelCardDialog.module.css'
import { CurrencyEnum } from '@scandic-hotels/common/constants/currency'
interface StandaloneHotelCardProps {
data: HotelPin
@@ -29,6 +30,7 @@ interface StandaloneHotelCardProps {
isUserLoggedIn: boolean
handleClose: () => void
onClick?: () => void
pointsCurrency?: CurrencyEnum
}
export function StandaloneHotelCardDialog({
@@ -37,6 +39,7 @@ export function StandaloneHotelCardDialog({
handleClose,
isUserLoggedIn,
onClick,
pointsCurrency,
}: StandaloneHotelCardProps) {
const intl = useIntl()
const [imageError, setImageError] = useState(false)
@@ -224,7 +227,10 @@ export function StandaloneHotelCardDialog({
</Subtitle>
)}
{redemptionPrice && (
<HotelPointsRow pointsPerStay={redemptionPrice} />
<HotelPointsRow
pointsPerStay={redemptionPrice}
pointsCurrency={pointsCurrency}
/>
)}
</div>
{shouldShowNotEnoughPoints ? (

View File

@@ -4,16 +4,19 @@ import Caption from '../../Caption'
import Subtitle from '../../Subtitle'
import styles from './hotelPointsRow.module.css'
import { CurrencyEnum } from '@scandic-hotels/common/constants/currency'
export type PointsRowProps = {
pointsPerStay: number
additionalPricePerStay?: number
additionalPriceCurrency?: string
pointsCurrency?: CurrencyEnum
}
export function HotelPointsRow({
pointsPerStay,
additionalPricePerStay,
additionalPriceCurrency,
pointsCurrency,
}: PointsRowProps) {
const intl = useIntl()
@@ -23,9 +26,10 @@ export function HotelPointsRow({
{pointsPerStay}
</Subtitle>
<Caption color="uiTextHighContrast">
{intl.formatMessage({
defaultMessage: 'Points',
})}
{pointsCurrency ??
intl.formatMessage({
defaultMessage: 'Points',
})}
</Caption>
{additionalPricePerStay ? (
<>

View File

@@ -106,6 +106,7 @@ export type HotelCardProps = {
state?: 'default' | 'active'
bookingCode?: string | null
isAlternative?: boolean
pointsCurrency?: CurrencyEnum
fullPrice: boolean
lang: Lang
@@ -127,6 +128,7 @@ export const HotelCard = memo(
type = 'pageListing',
bookingCode = '',
isAlternative,
pointsCurrency,
images,
lang,
belowInfoSlot,
@@ -307,6 +309,7 @@ export const HotelCard = memo(
additionalPriceCurrency={
redemption.localPrice.currency ?? undefined
}
pointsCurrency={pointsCurrency}
/>
))}
</div>