@roomstay/frontend 2.7.0 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/177.bundle.js +1 -1
- package/dist/370.bundle.js +1 -1
- package/dist/449.bundle.js +1 -1
- package/dist/836.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/api/AvailabilityAPI.d.ts +19 -0
- package/dist/src/api/AvailabilityAPI.js +84 -0
- package/dist/src/api/AvailabilityAPI.js.map +1 -1
- package/dist/src/api/BaseAPI.d.ts +1 -0
- package/dist/src/api/BaseAPI.js +1 -0
- package/dist/src/api/BaseAPI.js.map +1 -1
- package/dist/src/components/generic/Alert.d.ts +6 -4
- package/dist/src/components/generic/Alert.js +1 -1
- package/dist/src/components/generic/Alert.js.map +1 -1
- package/dist/src/components/generic/Currency.js +5 -30
- package/dist/src/components/generic/Currency.js.map +1 -1
- package/dist/src/components/generic/map/BEHotelLocationMapBlock.d.ts +4 -0
- package/dist/src/components/generic/map/{HotelLocationMap.js → BEHotelLocationMapBlock.js} +10 -3
- package/dist/src/components/generic/map/BEHotelLocationMapBlock.js.map +1 -0
- package/dist/src/components/steps/confirmation/RoomContactDetails.js +20 -14
- package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
- package/dist/src/components/steps/confirmation/StepConfirmationForm.js +16 -0
- package/dist/src/components/steps/confirmation/StepConfirmationForm.js.map +1 -1
- package/dist/src/components/steps/date/BEPeoplePickerBlock.d.ts +4 -0
- package/dist/src/components/steps/date/{PeoplePicker.js → BEPeoplePickerBlock.js} +10 -3
- package/dist/src/components/steps/date/BEPeoplePickerBlock.js.map +1 -0
- package/dist/src/components/steps/hotel/HotelCard.js +1 -7
- package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
- package/dist/src/components/steps/hotel/HotelCardModal.js +1 -1
- package/dist/src/components/steps/hotel/HotelCardModal.js.map +1 -1
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js +10 -1
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js.map +1 -1
- package/dist/src/components/summary/BEMobileSummaryModal.js +9 -3
- package/dist/src/components/summary/BEMobileSummaryModal.js.map +1 -1
- package/dist/src/components/summary/BESummary.js +17 -4
- package/dist/src/components/summary/BESummary.js.map +1 -1
- package/dist/src/contexts/CompanyContext/CompanyContextType.type.d.ts +1 -1
- package/dist/src/contexts/CompanyContext/CompanyContextType.type.js.map +1 -1
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +39 -25
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
- package/dist/src/hooks/Currency.d.ts +25 -1
- package/dist/src/hooks/Currency.js +50 -5
- package/dist/src/hooks/Currency.js.map +1 -1
- package/dist/src/index.d.ts +8 -8
- package/dist/src/index.js +16 -10
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/Api/HotelDTO.d.ts +1 -0
- package/dist/src/models/Api/HotelDTO.js.map +1 -1
- package/dist/src/pages/hotel/HotelInfo.js +3 -3
- package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
- package/dist/src/pages/steps/StepDate/StepDateComponent.js +2 -2
- package/dist/src/pages/steps/StepDate/StepDateComponent.js.map +1 -1
- package/dist/src/pages/steps/StepHotel/StepHotelComponent.js +1 -3
- package/dist/src/pages/steps/StepHotel/StepHotelComponent.js.map +1 -1
- package/dist/src/pages/steps/StepThanks/StepThanksComponent.d.ts +2 -0
- package/dist/src/pages/steps/StepThanks/StepThanksComponent.js +8 -1
- package/dist/src/pages/steps/StepThanks/StepThanksComponent.js.map +1 -1
- package/dist/src/providers/CurrencyProvider.js +1 -1
- package/dist/src/providers/CurrencyProvider.js.map +1 -1
- package/dist/src/providers/FilterProvider.d.ts +4 -0
- package/dist/src/providers/FilterProvider.js +12 -0
- package/dist/src/providers/FilterProvider.js.map +1 -1
- package/dist/src/translations/Translation.d.ts +1 -0
- package/dist/src/translations/Translation.js +1 -0
- package/dist/src/translations/Translation.js.map +1 -1
- package/dist/src/translations/languages/en-gb.js +1 -0
- package/dist/src/translations/languages/en-gb.js.map +1 -1
- package/dist/src/util/CurrencyHelper.js +1 -1
- package/dist/src/util/CurrencyHelper.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/dist/tests/offline/entry/config/hotelSpecDefault.js +2 -2
- package/dist/tests/offline/entry/config/hotelSpecDefault.js.map +1 -1
- package/dist/vendors.bundle.js +1 -1
- package/package.json +2 -2
- package/dist/src/components/generic/map/HotelLocationMap.d.ts +0 -2
- package/dist/src/components/generic/map/HotelLocationMap.js.map +0 -1
- package/dist/src/components/steps/date/PeoplePicker.d.ts +0 -2
- package/dist/src/components/steps/date/PeoplePicker.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BESummary.js","sourceRoot":"/","sources":["src/components/summary/BESummary.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, CompanyContext, FullPageEngineContext, HotelOverridesContext } from '@frontend/contexts';\nimport { OrderableReactList, useCurrentHotel, useElementSort } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport React, { FC, useContext, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport HotelLocationMap from '@/components/generic/map/HotelLocationMap';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { ItemisedFeesListing } from '@/components/steps/common/ItemisedFeesListing/ItemisedFeesListing';\nimport BESummaryAddonRow from '@/components/summary/BESummaryAddonRow';\nimport { BESummaryPerkBlock } from '@/components/summary/BESummaryPerkBlock';\nimport BESummaryRoomRow from '@/components/summary/BESummaryRoomRow';\nimport TransportDistanceFromHotelBlock from '@/components/summary/TransportDistanceFromHotelBlock';\nimport BasketRow from '@/models/BasketRow';\nimport StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\nimport { Color } from '@/util/Color';\nimport { TextAlign } from '@/util/TextAlignment';\nimport { AddonDiscountCalculator } from '@/utils/AddonDiscountCalculator';\n\nimport { OverlayLoader } from '../generic/loader/OverlayLoader';\nimport { TaxInclusionNotice } from '../generic/TaxInclusionNotice/TaxInclusionNotice';\n\nexport interface BESummaryProps {\n showImages?: boolean;\n}\n\nconst TransportDistanceFromHotelBlockContainer: FC = () => {\n const overridesContext = useContext(HotelOverridesContext);\n\n return (\n <div\n className={classNames('u-flex u-flex-column u-marg-top u-w-100', {\n 'u-flex-justify-around': Object.entries(overridesContext?.transportDistances ?? {}).filter(([key, value]) => !!value).length <= 2,\n })}\n >\n <TransportDistanceFromHotelBlock vertical />\n </div>\n );\n};\n\nexport const BESummaryLayoutOrder: OrderableReactList = {\n TransportDistanceBlock: {\n component: <TransportDistanceFromHotelBlockContainer />,\n priority: 5,\n },\n PerksBlock: {\n component: (\n <div className=\"u-marg-bottom--light u-marg-top--heavy\" style={{ marginTop: '16px' }}>\n <BESummaryPerkBlock size=\"desktop\" />\n </div>\n ),\n priority: 10,\n },\n};\n\nexport function BESummary(props: BESummaryProps) {\n const basketContext = useContext(BasketContext);\n const ccx = useContext(CompanyContext);\n const overridesContext = useContext(HotelOverridesContext);\n const engineContext = useContext(FullPageEngineContext);\n\n const { hotel } = useCurrentHotel();\n\n const selectedBasketRows = basketContext.getAllValidRows();\n\n const addons = basketContext.basketAddonRows;\n\n const { t } = useTranslation();\n\n const addressLine1 = [hotel?.address?.line1, hotel?.address?.city];\n const addressLine2 = [hotel?.address?.postalCode, hotel?.address?.state];\n\n const { sortedComponents } = useElementSort(BESummaryLayoutOrder);\n\n const toString = (val: string[]) => val.filter((it) => !!it && it !== '0').join(', ');\n\n const renderLine = (line?: string, key?: string) => {\n if (line) {\n return (\n <Text key={key} type={TextType.Small}>\n {line}\n </Text>\n );\n }\n return null;\n };\n\n const combineAddress = (rawLine1: string[], rawLine2: string[]) => {\n const line1 = toString(rawLine1);\n const line2 = toString(rawLine2);\n if (line1 && line1.length > 40) return renderLine([line1, line2].filter(Boolean).join(', '));\n return [renderLine(line1, 'addressLine1'), renderLine(line2, 'addressLine2')];\n };\n\n const showBasketItems = !!selectedBasketRows.length;\n\n const depositFees = basketContext.getDepositQuoteFees();\n const totalFees = basketContext.getTotalFees();\n const itemisedFees = basketContext.getItemisedFees();\n\n const totalSection = useMemo(() => {\n const totalPayNow = basketContext.getTotalPayNow();\n\n if (hotel && totalPayNow && engineContext.currentStep?.getStepUrl() === StepConfirmation.getStepUrl()) {\n const isLoading = basketContext.isLoadingPriceQuote;\n\n return (\n <div className=\"u-marg-top--light\" style={{ position: 'relative' }}>\n {isLoading && <OverlayLoader />}\n {totalFees > 0 && !itemisedFees?.length && (\n // We only show the total fees here if we don't have itemised fees available.\n <div className=\"u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalFees}</Currency>\n </Text>\n </div>\n </div>\n )}\n {!!itemisedFees?.length && depositFees > 0 && hotel.addDepositFeeToBookingTotal && (\n // Because we're already showing itemised fees above the totals section, we only need to show the deposit fee here.\n // And only if the hotel is configured to add the deposit fee to the booking total.\n <div className=\"u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{depositFees}</Currency>\n </Text>\n </div>\n </div>\n )}\n <div className=\"u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}>{t(Translation.Misc.Total)}</Text>\n <Headline bold size=\"large\">\n <Currency>{basketContext.getTotalPrice()}</Currency>\n </Headline>\n </div>\n\n <Text color={Color.DarkGrey} type={TextType.Small} align={TextAlign.Right}>\n <TaxInclusionNotice />\n </Text>\n </div>\n <div className=\"u-marg-top--light u-flex\">\n <Text type={TextType.Small}>{t(Translation.Misc.PayNow)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalPayNow}</Currency>\n </Text>\n </div>\n </div>\n );\n } else {\n return (\n <div className=\"u-marg-top--light\">\n <Text type={TextType.Small} align={TextAlign.Right}>\n {t(Translation.Misc.Total)}\n </Text>\n <Headline bold size=\"large\" align={TextAlign.Right}>\n <Currency>{basketContext.getTotalPrice()}</Currency>\n </Headline>\n <Text color={Color.DarkGrey} type={TextType.Small} align={TextAlign.Right}>\n <TaxInclusionNotice />\n </Text>\n </div>\n );\n }\n }, [basketContext.currentBasketRows, basketContext.isLoadingPriceQuote, basketContext.getTotalPrice, hotel?.rmsUseDepositQuote, engineContext.currentStep?.getStepUrl()]);\n\n return (\n <div className=\"booking-engine-summary\">\n <div className=\"u-marg-bottom\">\n <Headline bold>{t(Translation.Misc.Summary)}</Headline>\n </div>\n\n {showBasketItems ? (\n <>\n {selectedBasketRows.map((row: BasketRow, index: number) => {\n if (!row.isValid()) return;\n return <BESummaryRoomRow key={row.getID()} row={row} index={index} showImages={!!props.showImages} />;\n })}\n {addons.length > 0 && (\n <>\n <LineBreak noMargins darker />\n\n <div className=\"u-marg-top\">\n <Text type={TextType.Label} color={Color.DarkGrey}>\n <strong>{t(Translation.Step.Thanks.AddOnItems)}</strong>\n </Text>\n </div>\n\n {/* Calculate individual addon discounts using AddonDiscountCalculator. */}\n {AddonDiscountCalculator.calculateIndividualDiscounts(addons, selectedBasketRows, basketContext.promoCodeDetails).map(\n ({ addon, remainingDiscount }) => {\n const onRemoveClickHandler = () => {\n return basketContext.removeBasketAddonRow(addon);\n };\n\n return (\n <BESummaryAddonRow\n row={addon}\n key={addon.getID()}\n onRemoveClick={onRemoveClickHandler}\n promoCodeDetails={basketContext.promoCodeDetails}\n remainingDiscount={remainingDiscount}\n />\n );\n }\n )}\n </>\n )}\n {/* Fees */}\n {totalFees > 0 && !itemisedFees?.length && (\n <>\n <div className=\"line-break\" style={{ marginTop: 0, marginBottom: '24px' }} />\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalFees}</Currency>\n </Text>\n </div>\n </>\n )}\n {!!itemisedFees?.length && <ItemisedFeesListing fees={itemisedFees} />}\n </>\n ) : (\n <div className=\"u-marg-bottom rs-summary-hotel-info\">\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Small}>{t(Translation.Step.General.YourCartIsEmpty)}</Text>\n </div>\n <div style={{ height: '150px', position: 'relative' }}>\n <HotelLocationMap />\n </div>\n <div className=\"u-marg-top\">\n <div className=\"u-marg-bottom rs-summary-hotel-name\">\n <Text bold>{hotel?.name}</Text>\n </div>\n {combineAddress(addressLine1 as string[], addressLine2 as string[])}\n {overridesContext?.phoneNumberInSummary && hotel?.phone && <Text type={TextType.Small}>{hotel?.phone}</Text>}\n </div>\n </div>\n )}\n {sortedComponents}\n {ccx.currentCurrency !== hotel?.defaultCurrency && (\n <Alert iconAlignCenter icon={IconType.Money} type={AlertType.LightGray}>\n <Text type={TextType.Small}>{t(Translation.Step.General.AlternateCurrencyInformation)}</Text>\n </Alert>\n )}\n\n <LineBreak darker />\n\n {totalSection}\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BESummary.js","sourceRoot":"/","sources":["src/components/summary/BESummary.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, CompanyContext, FullPageEngineContext, HotelOverridesContext } from '@frontend/contexts';\nimport { OrderableReactList, useCurrentHotel, useElementSort } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport React, { FC, useContext, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport BEHotelLocationMapBlock from '@/components/generic/map/BEHotelLocationMapBlock';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { ItemisedFeesListing } from '@/components/steps/common/ItemisedFeesListing/ItemisedFeesListing';\nimport BESummaryAddonRow from '@/components/summary/BESummaryAddonRow';\nimport { BESummaryPerkBlock } from '@/components/summary/BESummaryPerkBlock';\nimport BESummaryRoomRow from '@/components/summary/BESummaryRoomRow';\nimport TransportDistanceFromHotelBlock from '@/components/summary/TransportDistanceFromHotelBlock';\nimport BasketRow from '@/models/BasketRow';\nimport StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\nimport { Color } from '@/util/Color';\nimport { TextAlign } from '@/util/TextAlignment';\nimport { AddonDiscountCalculator } from '@/utils/AddonDiscountCalculator';\n\nimport { OverlayLoader } from '../generic/loader/OverlayLoader';\nimport Pill, { PillType } from '../generic/Pill';\nimport { TaxInclusionNotice } from '../generic/TaxInclusionNotice/TaxInclusionNotice';\n\nexport interface BESummaryProps {\n showImages?: boolean;\n}\n\nconst TransportDistanceFromHotelBlockContainer: FC = () => {\n const overridesContext = useContext(HotelOverridesContext);\n\n return (\n <div\n className={classNames('u-flex u-flex-column u-marg-top u-w-100', {\n 'u-flex-justify-around': Object.entries(overridesContext?.transportDistances ?? {}).filter(([key, value]) => !!value).length <= 2,\n })}\n >\n <TransportDistanceFromHotelBlock vertical />\n </div>\n );\n};\n\nexport const BESummaryLayoutOrder: OrderableReactList = {\n TransportDistanceBlock: {\n component: <TransportDistanceFromHotelBlockContainer />,\n priority: 5,\n },\n PerksBlock: {\n component: (\n <div className=\"u-marg-bottom--light u-marg-top--heavy\" style={{ marginTop: '16px' }}>\n <BESummaryPerkBlock size=\"desktop\" />\n </div>\n ),\n priority: 10,\n },\n};\n\nexport function BESummary(props: BESummaryProps) {\n const basketContext = useContext(BasketContext);\n const ccx = useContext(CompanyContext);\n const overridesContext = useContext(HotelOverridesContext);\n const engineContext = useContext(FullPageEngineContext);\n\n const { hotel } = useCurrentHotel();\n\n const selectedBasketRows = basketContext.getAllValidRows();\n\n const addons = basketContext.basketAddonRows;\n\n const { t } = useTranslation();\n\n const addressLine1 = [hotel?.address?.line1, hotel?.address?.city];\n const addressLine2 = [hotel?.address?.postalCode, hotel?.address?.state];\n\n const { sortedComponents } = useElementSort(BESummaryLayoutOrder);\n\n const toString = (val: string[]) => val.filter((it) => !!it && it !== '0').join(', ');\n\n const renderLine = (line?: string, key?: string) => {\n if (line) {\n return (\n <Text key={key} type={TextType.Small}>\n {line}\n </Text>\n );\n }\n return null;\n };\n\n const combineAddress = (rawLine1: string[], rawLine2: string[]) => {\n const line1 = toString(rawLine1);\n const line2 = toString(rawLine2);\n if (line1 && line1.length > 40) return renderLine([line1, line2].filter(Boolean).join(', '));\n return [renderLine(line1, 'addressLine1'), renderLine(line2, 'addressLine2')];\n };\n\n const showBasketItems = !!selectedBasketRows.length;\n\n const depositFees = basketContext.getDepositQuoteFees();\n const totalFees = basketContext.getTotalFees();\n const itemisedFees = basketContext.getItemisedFees();\n\n const totalSection = useMemo(() => {\n const totalPayNow = basketContext.getTotalPayNow();\n\n if (hotel && totalPayNow && engineContext.currentStep?.getStepUrl() === StepConfirmation.getStepUrl()) {\n const isLoading = basketContext.isLoadingPriceQuote;\n\n return (\n <div className=\"u-marg-top--light\" style={{ position: 'relative' }}>\n {isLoading && <OverlayLoader />}\n {totalFees > 0 && !itemisedFees?.length && (\n // We only show the total fees here if we don't have itemised fees available.\n <div className=\"u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalFees}</Currency>\n </Text>\n </div>\n </div>\n )}\n {!!itemisedFees?.length && depositFees > 0 && hotel.addDepositFeeToBookingTotal && (\n // Because we're already showing itemised fees above the totals section, we only need to show the deposit fee here.\n // And only if the hotel is configured to add the deposit fee to the booking total.\n <div className=\"u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{depositFees}</Currency>\n </Text>\n </div>\n </div>\n )}\n <div className=\"u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}>{t(Translation.Misc.Total)}</Text>\n <Headline bold size=\"large\">\n <Currency>{basketContext.getTotalPrice()}</Currency>\n </Headline>\n </div>\n\n {hotel.defaultCurrency && ccx.currentCurrency !== hotel?.defaultCurrency && (\n <div className=\"u-align-right rs-summary-currency-display-enhancements\">\n <Pill type={PillType.Grey}>\n <Text type={TextType.Small} color={Color.Navy} align={TextAlign.Right} inline>\n <Currency toCurrencyCode={hotel.defaultCurrency}>{basketContext.getTotalPrice()}</Currency>\n </Text>\n </Pill>\n </div>\n )}\n\n <Text color={Color.DarkGrey} type={TextType.Small} align={TextAlign.Right}>\n <TaxInclusionNotice />\n </Text>\n </div>\n <div className=\"u-marg-top--light u-flex\">\n <Text type={TextType.Small}>{t(Translation.Misc.PayNow)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalPayNow}</Currency>\n </Text>\n </div>\n </div>\n );\n } else {\n return (\n <div className=\"u-marg-top--light\">\n <Text type={TextType.Small} align={TextAlign.Right}>\n {t(Translation.Misc.Total)}\n </Text>\n <Headline bold size=\"large\" align={TextAlign.Right}>\n <Currency>{basketContext.getTotalPrice()}</Currency>\n </Headline>\n <Text color={Color.DarkGrey} type={TextType.Small} align={TextAlign.Right}>\n <TaxInclusionNotice />\n </Text>\n </div>\n );\n }\n }, [\n basketContext.currentBasketRows,\n basketContext.isLoadingPriceQuote,\n basketContext.getTotalPrice,\n hotel?.rmsUseDepositQuote,\n engineContext.currentStep?.getStepUrl(),\n ccx.currentCurrency,\n hotel?.defaultCurrency,\n ]);\n\n return (\n <div className=\"booking-engine-summary\">\n <div className=\"u-marg-bottom\">\n <Headline bold>{t(Translation.Misc.Summary)}</Headline>\n </div>\n\n {showBasketItems ? (\n <>\n {selectedBasketRows.map((row: BasketRow, index: number) => {\n if (!row.isValid()) return;\n return <BESummaryRoomRow key={row.getID()} row={row} index={index} showImages={!!props.showImages} />;\n })}\n {addons.length > 0 && (\n <>\n <LineBreak noMargins darker />\n\n <div className=\"u-marg-top\">\n <Text type={TextType.Label} color={Color.DarkGrey}>\n <strong>{t(Translation.Step.Thanks.AddOnItems)}</strong>\n </Text>\n </div>\n\n {/* Calculate individual addon discounts using AddonDiscountCalculator. */}\n {AddonDiscountCalculator.calculateIndividualDiscounts(addons, selectedBasketRows, basketContext.promoCodeDetails).map(\n ({ addon, remainingDiscount }) => {\n const onRemoveClickHandler = () => {\n return basketContext.removeBasketAddonRow(addon);\n };\n\n return (\n <BESummaryAddonRow\n row={addon}\n key={addon.getID()}\n onRemoveClick={onRemoveClickHandler}\n promoCodeDetails={basketContext.promoCodeDetails}\n remainingDiscount={remainingDiscount}\n />\n );\n }\n )}\n </>\n )}\n {/* Fees */}\n {totalFees > 0 && !itemisedFees?.length && (\n <>\n <div className=\"line-break\" style={{ marginTop: 0, marginBottom: '24px' }} />\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalFees}</Currency>\n </Text>\n </div>\n </>\n )}\n {!!itemisedFees?.length && <ItemisedFeesListing fees={itemisedFees} />}\n </>\n ) : (\n <div className=\"u-marg-bottom rs-summary-hotel-info\">\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Small}>{t(Translation.Step.General.YourCartIsEmpty)}</Text>\n </div>\n <div className=\"rs-summary-hotel-location-map\" style={{ height: '150px', position: 'relative' }}>\n <BEHotelLocationMapBlock />\n </div>\n <div className=\"u-marg-top\">\n <div className=\"u-marg-bottom rs-summary-hotel-name\">\n <Text bold>{hotel?.name}</Text>\n </div>\n {combineAddress(addressLine1 as string[], addressLine2 as string[])}\n {overridesContext?.phoneNumberInSummary && hotel?.phone && <Text type={TextType.Small}>{hotel?.phone}</Text>}\n </div>\n </div>\n )}\n {sortedComponents}\n {ccx.currentCurrency !== hotel?.defaultCurrency && (\n <Alert iconAlignCenter icon={IconType.Money} type={AlertType.LightGray}>\n <Text type={TextType.Small}>{t(Translation.Step.General.AlternateCurrencyInformation)}</Text>\n </Alert>\n )}\n\n <LineBreak darker />\n\n {totalSection}\n </div>\n );\n}\n"]}
|
|
@@ -20,7 +20,7 @@ export type CompanyContextType = Company & {
|
|
|
20
20
|
currentLanguage: Language;
|
|
21
21
|
signedInUser: SignInUser | null;
|
|
22
22
|
memberProviderSigningIn: EMembershipProvider | null;
|
|
23
|
-
|
|
23
|
+
updateLowestPricePerNightByHotelIds: (hotelId: string[], row: BasketRow) => void;
|
|
24
24
|
changeHotel: (hotel: string | Hotel | null) => boolean;
|
|
25
25
|
setCurrentCurrency: (currency: string) => void;
|
|
26
26
|
setCurrentLanguage: (lang: Language) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompanyContextType.type.js","sourceRoot":"/","sources":["src/contexts/CompanyContext/CompanyContextType.type.ts"],"names":[],"mappings":"","sourcesContent":["import { EMembershipProvider } from '@roomstay/core';\n\nimport { MembershipHandler } from '@/handlers/membership/MembershipHandler';\nimport type BasketRow from '@/models/BasketRow';\nimport type { Company } from '@/models/Client/Hotel/Company';\nimport type { Hotel } from '@/models/Client/Hotel/Hotel';\nimport { IPromotion } from '@/models/Promotion/IPromotion.type';\nimport type { Language } from '@/providers/LanguageProvider';\n\nexport type SignInUser = {\n saveState?: boolean;\n memberNumber?: string;\n memberProvider?: EMembershipProvider;\n firstName?: string;\n lastName?: string;\n email?: string;\n};\n\nexport type CompanyContextType = Company & {\n selectedHotelID: string;\n\n memberOnlyModalPromotion: IPromotion | null;\n\n currentCurrency: string;\n currentLanguage: Language;\n\n signedInUser: SignInUser | null;\n memberProviderSigningIn: EMembershipProvider | null;\n\n
|
|
1
|
+
{"version":3,"file":"CompanyContextType.type.js","sourceRoot":"/","sources":["src/contexts/CompanyContext/CompanyContextType.type.ts"],"names":[],"mappings":"","sourcesContent":["import { EMembershipProvider } from '@roomstay/core';\n\nimport { MembershipHandler } from '@/handlers/membership/MembershipHandler';\nimport type BasketRow from '@/models/BasketRow';\nimport type { Company } from '@/models/Client/Hotel/Company';\nimport type { Hotel } from '@/models/Client/Hotel/Hotel';\nimport { IPromotion } from '@/models/Promotion/IPromotion.type';\nimport type { Language } from '@/providers/LanguageProvider';\n\nexport type SignInUser = {\n saveState?: boolean;\n memberNumber?: string;\n memberProvider?: EMembershipProvider;\n firstName?: string;\n lastName?: string;\n email?: string;\n};\n\nexport type CompanyContextType = Company & {\n selectedHotelID: string;\n\n memberOnlyModalPromotion: IPromotion | null;\n\n currentCurrency: string;\n currentLanguage: Language;\n\n signedInUser: SignInUser | null;\n memberProviderSigningIn: EMembershipProvider | null;\n\n updateLowestPricePerNightByHotelIds: (hotelId: string[], row: BasketRow) => void;\n\n changeHotel: (hotel: string | Hotel | null) => boolean;\n\n setCurrentCurrency: (currency: string) => void;\n setCurrentLanguage: (lang: Language) => void;\n\n closeMemberSignupModal: () => void;\n openMemberSignupModal: (provider?: EMembershipProvider) => void;\n signUserIn: (user: SignInUser) => Promise<void>;\n signUserOut: () => Promise<void>;\n\n /**\n * Returns information stored on the Hotel, also calls the API to fetch updated information from the Hotel if it's not been updated already\n *\n * @param hotelId\n * @returns\n */\n getHotel: (hotelId: string) => Promise<Hotel>;\n isExternalMemberHotel: boolean;\n externalMembershipHandlers: MembershipHandler[];\n};\n"]}
|
|
@@ -180,7 +180,7 @@ const CompanyContextWrapper = ({ configCompany: company, children }) => {
|
|
|
180
180
|
yield beContext.storageProvider.setUser(undefined);
|
|
181
181
|
setSignedInUser(null);
|
|
182
182
|
});
|
|
183
|
-
const getHotel = (0, react_1.useCallback)((hotelId) => new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () {
|
|
183
|
+
const getHotel = (0, react_1.useCallback)((hotelId, preloadedHotelDTO) => new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () {
|
|
184
184
|
const currentHotelVersion = getHotelFromID(hotelId);
|
|
185
185
|
const newHotel = Object.assign(Object.assign({}, currentHotelVersion), {
|
|
186
186
|
// Fixed: Specified Hotel not found
|
|
@@ -188,7 +188,7 @@ const CompanyContextWrapper = ({ configCompany: company, children }) => {
|
|
|
188
188
|
hotelID: hotelId });
|
|
189
189
|
let details;
|
|
190
190
|
try {
|
|
191
|
-
details = yield BookingAPI_1.default.Hotel.fetchData(currentLanguage, newHotel);
|
|
191
|
+
details = preloadedHotelDTO ? preloadedHotelDTO : yield BookingAPI_1.default.Hotel.fetchData(currentLanguage, newHotel);
|
|
192
192
|
}
|
|
193
193
|
catch (ex) {
|
|
194
194
|
if (ex instanceof APIError_1.APIError) {
|
|
@@ -400,6 +400,19 @@ const CompanyContextWrapper = ({ configCompany: company, children }) => {
|
|
|
400
400
|
}, [company, selectedHotel]);
|
|
401
401
|
// TODO: Add Hotel Details fetch
|
|
402
402
|
// TODO: re-do fetch on language change
|
|
403
|
+
const updateLowestPriceByTargetHotel = (targetHotel, value, isLoading) => {
|
|
404
|
+
updateHotel(targetHotel, (hotel) => (Object.assign(Object.assign({}, hotel), { lowestPrice: { value, isLoading } })));
|
|
405
|
+
};
|
|
406
|
+
const getLowestPrice = (rooms) => {
|
|
407
|
+
if (!(rooms === null || rooms === void 0 ? void 0 : rooms.length))
|
|
408
|
+
return 0;
|
|
409
|
+
const lowestDisplayPrice = rooms.reduce((min, room) => {
|
|
410
|
+
// Get the lowest raw price for each room (see RoomDetails.tsx for reference)
|
|
411
|
+
const lowestRawPrice = room.getLowestPrice(false, true);
|
|
412
|
+
return lowestRawPrice != null && lowestRawPrice > 0 ? Math.min(min, lowestRawPrice) : min;
|
|
413
|
+
}, Infinity);
|
|
414
|
+
return isFinite(lowestDisplayPrice) ? lowestDisplayPrice : 0;
|
|
415
|
+
};
|
|
403
416
|
const workingContext = {
|
|
404
417
|
currentLanguage,
|
|
405
418
|
currentCurrency,
|
|
@@ -414,31 +427,32 @@ const CompanyContextWrapper = ({ configCompany: company, children }) => {
|
|
|
414
427
|
hotels,
|
|
415
428
|
signedInUser,
|
|
416
429
|
selectedHotelID: selectedHotelID,
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
430
|
+
updateLowestPricePerNightByHotelIds: (hotelIds, row) => __awaiter(void 0, void 0, void 0, function* () {
|
|
431
|
+
hotelIds.forEach((hotelId) => {
|
|
432
|
+
const targetHotel = getHotelFromID(hotelId);
|
|
433
|
+
updateLowestPriceByTargetHotel(targetHotel, 0, true);
|
|
434
|
+
});
|
|
435
|
+
try {
|
|
423
436
|
const filters = Object.values(beContext.currentFilters).filter(Boolean);
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
const
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
updatePrice(0, false);
|
|
439
|
-
});
|
|
437
|
+
const data = yield FilterProvider_1.default.getRoomListByHotelIds(row, filters, hotelIds, signedInUser === null || signedInUser === void 0 ? void 0 : signedInUser.memberNumber);
|
|
438
|
+
for (const [hotelId, hotelData] of Object.entries(data)) {
|
|
439
|
+
const { hotel: latestHotelDTO, rooms } = hotelData;
|
|
440
|
+
try {
|
|
441
|
+
yield getHotel(hotelId, latestHotelDTO);
|
|
442
|
+
const targetHotel = getHotelFromID(hotelId);
|
|
443
|
+
const finalLowest = getLowestPrice(rooms);
|
|
444
|
+
updateLowestPriceByTargetHotel(targetHotel, finalLowest, false);
|
|
445
|
+
}
|
|
446
|
+
catch (_a) {
|
|
447
|
+
const targetHotel = getHotelFromID(hotelId);
|
|
448
|
+
updateLowestPriceByTargetHotel(targetHotel, 0, false);
|
|
449
|
+
}
|
|
450
|
+
}
|
|
440
451
|
}
|
|
441
|
-
|
|
452
|
+
catch (error) {
|
|
453
|
+
console.error(error);
|
|
454
|
+
}
|
|
455
|
+
}),
|
|
442
456
|
changeHotel: (hotel) => {
|
|
443
457
|
if (hotel === null) {
|
|
444
458
|
setSelectedHotelID(undefined);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompanyContextWrapper.js","sourceRoot":"/","sources":["src/contexts/CompanyContext/CompanyContextWrapper.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BookingEngineContext, CompanyContext, CompanyContextType, SignInUser } from '@frontend/contexts';\nimport { InitialHotelDetailsEvent, SelectedHotelChangeEvent } from '@frontend/events';\nimport { useEvent } from '@frontend/hooks';\nimport { EMembershipProvider, IHotelColorScheme } from '@roomstay/core';\nimport React, { ReactChild, useCallback, useContext, useEffect, useMemo, useState } from 'react';\n\nimport API from '@/api/BookingAPI';\nimport { MemberPortalWidget } from '@/engines/MemberPortalWidget/MemberPortalWidget';\nimport { APIError } from '@/errors/APIError';\nimport { MemberOnlyFenceSignUp } from '@/events/actions/MemberOnlyFence/MemberOnlyFenceSignUp';\nimport { big4MemberHandler } from '@/handlers/membership/Big4MemberHandler';\nimport { gdayMemberHandler } from '@/handlers/membership/GdayMemberHandler';\nimport { memberJungleMemberHandler } from '@/handlers/membership/MemberJungleMemberHandler';\nimport { racMemberHandler } from '@/handlers/membership/RACMemberHandler';\nimport { salesforceMemberHandler } from '@/handlers/membership/SalesforceMemberHandler';\nimport { top10MemberHandler } from '@/handlers/membership/Top10MemberHandler';\nimport { HotelDTO } from '@/models/Api/HotelDTO';\nimport BasketRow from '@/models/BasketRow';\nimport type { ConfigCompany } from '@/models/Client/Hotel/Company';\nimport type { ConfigHotel, Hotel, InitialHotelDetailsEventPayload } from '@/models/Client/Hotel/Hotel';\nimport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport { IPromotion } from '@/models/Promotion/IPromotion.type';\nimport Filter from '@/models/Room/Filters/Filter';\nimport StepHotel from '@/pages/steps/StepHotel/StepHotel';\nimport CurrencyProvider from '@/providers/CurrencyProvider';\nimport FilterProvider from '@/providers/FilterProvider';\nimport { Language } from '@/providers/LanguageProvider';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport StaticContextProvider from '@/providers/StaticContextProvider';\nimport AnalyticsEvents from '@/util/AnalyticsEvents/AnalyticsEvents';\nimport * as currencyHelper from '@/util/CurrencyHelper';\nimport DataLayer from '@/util/DataLayer';\nimport StepManager from '@/util/StepManager';\nimport TimeHelper from '@/util/TimeHelper';\n\ninterface CompanyContextWrapperProps {\n children: ReactChild;\n configCompany: ConfigCompany;\n}\n\nexport const CompanyContextWrapper = ({ configCompany: company, children }: CompanyContextWrapperProps) => {\n const beContext = useContext(BookingEngineContext);\n\n const getSelectedHotel = () => {\n for (const hotel of hotels) {\n if (selectedHotelID + '' === hotel.hotelID + '') {\n return hotel;\n }\n }\n };\n\n const [companyId, setCompanyId] = useState(company.companyId);\n const [name, setName] = useState(company.name);\n const [companyShort, setCompanyShort] = useState(company.companyShort);\n const [logo, setLogo] = useState(company.logo);\n const [colors, setColors] = useState(company.colors);\n const [hotels, setHotels] = useState<Hotel[]>(company.hotels as Hotel[]);\n const [logoLink, setLogoLink] = useState(company.logoLink);\n const [privacyPolicyUrl, setPrivacyPolicyUrl] = useState(company.privacyPolicyUrl);\n\n const [selectedHotelID, setSelectedHotelID] = useState<string>();\n\n const selectedHotel = useMemo(() => {\n for (const companyHotel of hotels) {\n if (selectedHotelID + '' === companyHotel.hotelID + '') {\n return companyHotel;\n }\n }\n }, [hotels, selectedHotelID]);\n\n const searchParams = new URLSearchParams(window.location.search);\n const currencyParam = searchParams.get('currency');\n\n const [currentCurrency, setCurrentCurrency] = useState<string>(currencyParam ?? getSelectedHotel()?.defaultCurrency ?? 'AUD');\n const [currentLanguage, setCurrentLanguage] = useState<Language>(getSelectedHotel()?.defaultLanguage ?? Language.en_us);\n\n const [memberOnlyModalPromotion, setMemberOnlyModalPromotion] = useState<IPromotion | null>(null);\n\n const [signedInUser, setSignedInUser] = useState<SignInUser | null>(null);\n\n const [memberProviderSigningIn, setMemberProviderSigningIn] = useState<EMembershipProvider | null>(null);\n\n const allExternalMembershipHandlers = [\n big4MemberHandler(selectedHotel),\n top10MemberHandler(selectedHotel),\n memberJungleMemberHandler(selectedHotel),\n gdayMemberHandler(selectedHotel),\n salesforceMemberHandler(selectedHotel),\n racMemberHandler(selectedHotel),\n ];\n\n useEffect(() => {\n raise(new SelectedHotelChangeEvent(selectedHotel));\n }, [selectedHotel]);\n\n const { raise } = useEvent();\n\n const getHotelFromArrayWithId = (id: string, arrayOfHotels: Hotel[] | ConfigHotel[]) => {\n for (const nextHotel of arrayOfHotels) {\n if (nextHotel.hotelID + '' === id + '') {\n return nextHotel;\n }\n }\n };\n const getHotelFromID = (id: string): Hotel => {\n return getHotelFromArrayWithId(id, hotels) as Hotel;\n };\n\n const updateHotel = (newHotel: Hotel, callback?: (hotel: Hotel) => Hotel) => {\n setHotels((oldHotels) => {\n let modified = false;\n const newHotelArray = oldHotels.map((mappingHotel) => {\n if (mappingHotel.hotelID + '' === newHotel.hotelID + '') {\n modified = true;\n\n const hotelDetails: InitialHotelDetailsEventPayload = {\n name: newHotel.name,\n hotelID: newHotel.hotelID,\n hotelUrl: newHotel.hotelUrl,\n currency: newHotel.defaultCurrency,\n language: newHotel.defaultLanguage,\n address: newHotel.address,\n };\n\n const event = new InitialHotelDetailsEvent(hotelDetails);\n raise(event);\n\n if (callback) {\n return { ...callback(mappingHotel) };\n }\n\n return { ...newHotel };\n }\n\n return { ...mappingHotel };\n });\n\n if (!modified) {\n newHotelArray.push(newHotel);\n if (callback) {\n // Fixed: Ensure the callback returns the hotel; otherwise, the UI may receive undefined.\n callback(newHotel);\n }\n }\n\n return newHotelArray;\n });\n };\n\n const signUserIn = async (user: SignInUser) => {\n raise(new MemberOnlyFenceSignUp(memberOnlyModalPromotion as IPromotion, user));\n\n DataLayer.instance.sendMemberSignUp();\n\n workingContext.closeMemberSignupModal();\n\n await beContext.sessionProvider.updateSession({ user: user, memberId: user.memberNumber });\n\n setSignedInUser(user);\n\n // Set external ID for analytics tracking\n if (user.memberNumber) {\n AnalyticsEvents.setExternalId(user.memberNumber);\n }\n\n if (user.saveState) {\n await beContext.storageProvider.setUser(user);\n }\n };\n\n const signUserOut = async () => {\n await beContext.sessionProvider.updateSession({ user: undefined, memberId: undefined });\n await beContext.storageProvider.setUser(undefined);\n setSignedInUser(null);\n };\n\n const getHotel = useCallback(\n (hotelId: string) =>\n new Promise<Hotel>(async (resolve, reject) => {\n const currentHotelVersion: Hotel | undefined = getHotelFromID(hotelId) as Hotel;\n const newHotel: Hotel = {\n ...currentHotelVersion,\n // Fixed: Specified Hotel not found\n // Ensure hotelID is set explicitly in case currentHotelVersion is undefined or missing it.\n hotelID: hotelId,\n };\n let details: HotelDTO | undefined;\n\n try {\n details = await API.Hotel.fetchData(currentLanguage, newHotel);\n } catch (ex) {\n if (ex instanceof APIError) {\n console.error(ex);\n return;\n } else {\n return reject(ex);\n }\n }\n\n if (!details) {\n return;\n }\n\n updateHotel(newHotel, (updatedHotel) => {\n updatedHotel.name = details.name;\n updatedHotel.address = details.address;\n\n updatedHotel.latitude = Number(details.latitude);\n updatedHotel.longitude = Number(details.longitude);\n updatedHotel.phone = details.phone;\n\n updatedHotel.checkInTime = TimeHelper.convert24To12hr(details.checkInTime);\n updatedHotel.checkOutTime = TimeHelper.convert24To12hr(details.checkOutTime);\n\n updatedHotel.paymentCardTypes = details.paymentCardTypes;\n updatedHotel.description = details.description;\n updatedHotel.locationDescription = details.locationDescription;\n updatedHotel.policies = details.policies;\n\n updatedHotel.hotelServices = details.hotelServices;\n updatedHotel.businessServices = details.businessServices;\n updatedHotel.rooms = details.rooms;\n\n updatedHotel.hasLoadedDetails = true;\n updatedHotel.dataSource = details.dataSource;\n\n updatedHotel.defaultCurrency = details.currencyCode;\n updatedHotel.cardProcessor = details.cardProcessor;\n updatedHotel.paymentMethods = details.paymentMethods;\n updatedHotel.planpay = details.planpay;\n updatedHotel.windcave = details.windcave;\n updatedHotel.hotelUrl = details.hotelUrl || updatedHotel.hotelUrl || '';\n updatedHotel.heroImage = details.heroImage || updatedHotel.heroImage || '';\n updatedHotel.images = details.images || [];\n\n updatedHotel.email = details.email;\n updatedHotel.roomGroups = details.roomGroups;\n updatedHotel.rmsUseDepositQuote = details.rmsUseDepositQuote;\n updatedHotel.checkAreaAvailabilityOnRoomStep = details.checkAreaAvailabilityOnRoomStep;\n updatedHotel.enableCreditCardSurcharge = details.enableCreditCardSurcharge;\n updatedHotel.integrations = details.integrations;\n updatedHotel.availableCountries = details.availableCountries;\n updatedHotel.preventCancellation = details.preventCancellation;\n updatedHotel.enableRoomUpsells = details.enableRoomUpsells;\n updatedHotel.enableRateUpsells = details.enableRateUpsells;\n\n if (updatedHotel.dataSource === HotelDataSource.Roomstay) {\n if (details.logo) {\n updatedHotel.logo = details.logo;\n }\n\n if (details.colors) {\n updatedHotel.colors = details.colors as IHotelColorScheme;\n }\n\n if (details.distanceUnitType) {\n updatedHotel.distanceUnitType = details.distanceUnitType;\n }\n\n if (details.weekdayStartsOn) {\n updatedHotel.startsWeekOnDay = details.weekdayStartsOn;\n }\n\n if (details.crossSellHotelIds) {\n updatedHotel.crossSellHotelIds = details.crossSellHotelIds;\n }\n\n if (details.stateFieldConfiguration) {\n updatedHotel.stateFieldConfiguration = details.stateFieldConfiguration;\n }\n }\n\n if (currentHotelVersion?.maxAdults) {\n //using HotelSpec maxAdults from frontend\n updatedHotel.maxAdults = currentHotelVersion.maxAdults;\n }\n\n if (details.maxAdults !== undefined) {\n updatedHotel.maxAdults = details.maxAdults;\n }\n\n if (details.maxChildren !== undefined) {\n updatedHotel.maxChildren = details.maxChildren;\n }\n\n if (details.maxInfants !== undefined) {\n updatedHotel.maxInfants = details.maxInfants;\n }\n\n if (details.rooms) {\n //dymanic maxOccupancy from rooms database\n const roomArray = Object.values(details.rooms);\n\n if (roomArray.length) {\n updatedHotel.maxOccupancy = roomArray.reduce((previousMax, current) => {\n return Math.max(previousMax, current.maxOccupancy);\n }, 0);\n }\n }\n\n updatedHotel.childConfiguration = details.childConfiguration;\n\n /**\n * Prioritized perks from roomstay-clients than roomstay-admin\n */\n updatedHotel.perks = updatedHotel.perks?.length ? updatedHotel.perks : details.perks;\n updatedHotel.perkTitle = updatedHotel.perkTitle ?? details.perkTitle;\n\n updatedHotel.countryPrefix = details.countryPrefix ?? updatedHotel.countryPrefix ?? '';\n updatedHotel.quoteImageDesktop = details.quoteImageDesktop ?? updatedHotel.quoteImageDesktop ?? '';\n updatedHotel.quoteImageMobile = details.quoteImageMobile ?? updatedHotel.quoteImageMobile ?? '';\n updatedHotel.memberOnlyImage = details.memberOnlyImage ?? updatedHotel.memberOnlyImage ?? '';\n if (details.memberOnlyRenderRateLast !== undefined) {\n updatedHotel.memberOnlyRenderRateLast = details.memberOnlyRenderRateLast;\n }\n updatedHotel.captureChildAge = details.captureChildAge;\n\n updatedHotel.fees = details.fees;\n updatedHotel.addDepositFeeToBookingTotal = details.addDepositFeeToBookingTotal;\n\n updatedHotel.company = details.company;\n\n updatedHotel.itineraryNote = details.itineraryNote;\n\n updatedHotel.minAdultAge = details.minAdultAge;\n updatedHotel.maxAdultAge = details.maxAdultAge;\n updatedHotel.countInfantsInOccupancy = details.countInfantsInOccupancy;\n updatedHotel.occupancyLimits = details.occupancyLimits;\n updatedHotel.preferProviderBookingId = details.preferProviderBookingId;\n updatedHotel.disableSavedPayments = details.disableSavedPayments;\n updatedHotel.showUnavailableRooms = details.showUnavailableRooms;\n updatedHotel.isRACMemberNoRequired = details.isRACMemberNoRequired;\n updatedHotel.countryCode = details.countryCode;\n updatedHotel.calendarHighlights = details.calendarHighlights;\n updatedHotel.addressRequirement = details.addressRequirement;\n updatedHotel.maxRoomsPerBooking = details.maxRoomsPerBooking;\n updatedHotel.bookingFlow = details.bookingFlow;\n updatedHotel.metaPixelId = details.metaPixelId;\n updatedHotel.enableAnalyticsDebug = details.enableAnalyticsDebug;\n\n resolve(updatedHotel);\n\n return updatedHotel;\n });\n }),\n []\n );\n\n useEffect(() => {\n setCompanyId(company.companyId);\n setName(company.name);\n setCompanyShort(company.companyShort);\n setLogo(company.logo);\n setColors(company.colors);\n setLogoLink(company.logoLink);\n setPrivacyPolicyUrl(company.privacyPolicyUrl);\n\n const configHotels = company.hotels.map((hotel: ConfigHotel) => {\n return { ...hotel, hasLoadedDetails: false, hotelID: `${hotel.hotelID}` } as Hotel;\n });\n setHotels(configHotels);\n\n if (company.selectedHotel) {\n const hotelId = typeof company.selectedHotel === 'string' ? company.selectedHotel : company.selectedHotel.hotelID + '';\n const targetHotel: ConfigHotel | undefined = getHotelFromArrayWithId(hotelId, configHotels);\n if (targetHotel) {\n setSelectedHotelID(hotelId);\n } else {\n // TODO: add centralized error logging\n console.log(`Unable to set selected hotel automatically. No Hotel found with ID: ${company.selectedHotel}`);\n }\n } else {\n /*\n We need to check if for some reason HotelStep isn't set as the first step,\n to automatically select a hotel, so engine doesn't fall over\n\n Possible TODO: We might need to do this on a new Step level, instead of here, as dynamically checking if StepHotel\n is first is probably not a great idea...\n */\n\n // Don't select hotel for MemberPortalWidget with groupWidgetConfig\n const isMemberPortalWithGroup = beContext.engine instanceof MemberPortalWidget && beContext.engine.getConfig().groupWidgetConfig;\n\n if (StepManager.getFirstStep() !== StepHotel && !isMemberPortalWithGroup) {\n setSelectedHotelID(configHotels[0].hotelID);\n console.log(`No selected hotel found - defaulting to ${configHotels[0].name}`);\n } else {\n RoomstayThemeEngine.registerStyles(company.colors);\n }\n }\n }, [company]);\n\n const onSelectedHotelIDChanged = React.useCallback(async () => {\n if (selectedHotelID) {\n const selectedHotel = await getHotel(selectedHotelID);\n\n if (selectedHotel) {\n currencyHelper.loadExchangeRates(selectedHotel.defaultCurrency ?? 'AUD');\n\n StaticContextProvider.MemberOnlyRateCodes = selectedHotel.memberOnlyRates ?? [];\n\n // Prep session based storage\n const sessionProvider = beContext.engine.getSessionProvider();\n await sessionProvider.setHotelID(selectedHotelID);\n\n // Prep local storage (non-session based)\n beContext.storageProvider.setHotelId(selectedHotelID);\n\n // Reload current user?\n const user = await beContext.storageProvider.getUser();\n\n if (user) {\n await signUserIn(user);\n }\n\n if (currencyParam && CurrencyProvider.getSymbol(currencyParam)) {\n setCurrentCurrency(currencyParam);\n } else {\n setCurrentCurrency(selectedHotel.defaultCurrency);\n }\n\n selectedHotel?.onLoad?.();\n }\n }\n }, [selectedHotelID]);\n\n useEffect(() => {\n onSelectedHotelIDChanged();\n }, [onSelectedHotelIDChanged]);\n\n useEffect(() => {\n const selectedHotel = getSelectedHotel();\n\n DataLayer.instance.setCurrencyCodes(currentCurrency, selectedHotel?.defaultCurrency ?? currentCurrency);\n }, [currentCurrency, selectedHotelID]);\n\n useEffect(() => {\n // Single-source GTM initialisation\n DataLayer.instance.initialiseGTM(company, selectedHotel);\n }, [company, selectedHotel]);\n\n // TODO: Add Hotel Details fetch\n // TODO: re-do fetch on language change\n\n const workingContext: CompanyContextType = {\n currentLanguage,\n currentCurrency,\n\n memberOnlyModalPromotion,\n\n companyId,\n name,\n companyShort,\n logo,\n logoLink,\n privacyPolicyUrl,\n\n colors,\n hotels,\n\n signedInUser,\n\n selectedHotelID: selectedHotelID as string,\n\n updateLowestPricePerNight: (hotel: string | Hotel, row: BasketRow) => {\n const targetHotel = getHotelFromID(typeof hotel === 'string' ? hotel : hotel.hotelID + '');\n\n if (targetHotel && row) {\n const updatePrice = (value: number, isLoading: boolean) => {\n updateHotel(targetHotel, (hotel) => ({\n ...hotel,\n lowestPrice: { value, isLoading },\n }));\n };\n\n const filters: Filter[] = Object.values(beContext.currentFilters).filter(Boolean) as Filter[];\n\n // Start loading with price = 0\n updatePrice(0, true);\n\n FilterProvider.getRoomList(row, filters, targetHotel.hotelID as string, signedInUser?.memberNumber)\n .then((availableRooms) => {\n const lowest =\n availableRooms?.reduce((min, room) => {\n const price = room.getLowestPrice();\n // Skip null, undefined, and 0 prices. Return the lowest positive price.\n return price != null && price > 0 ? Math.min(min, price) : min;\n }, Infinity) ?? Infinity;\n\n const finalLowest = isFinite(lowest) ? lowest : 0;\n updatePrice(finalLowest, false);\n })\n .catch(() => {\n updatePrice(0, false);\n });\n }\n },\n\n changeHotel: (hotel: string | Hotel | null) => {\n if (hotel === null) {\n setSelectedHotelID(undefined);\n return true;\n }\n\n const targetHotel = getHotelFromID(typeof hotel === 'string' ? hotel : hotel.hotelID + '');\n\n if (targetHotel) {\n setSelectedHotelID(targetHotel.hotelID);\n return true;\n } else {\n // TODO: add centralized error logging\n console.log(`Unable to set selected hotel automatically. No Hotel found with ID: ${company.selectedHotel}`);\n return false;\n }\n },\n\n closeMemberSignupModal: () => {\n setMemberProviderSigningIn(null);\n setMemberOnlyModalPromotion(null);\n },\n openMemberSignupModal: (provider?: EMembershipProvider) => {\n if (provider) {\n setMemberProviderSigningIn(provider);\n } else {\n const firstConfiguredHandler = allExternalMembershipHandlers.find((handler) => handler.isAvailable);\n\n if (firstConfiguredHandler) {\n // If any external handler is available, default to that\n setMemberProviderSigningIn(firstConfiguredHandler.provider);\n } else {\n setMemberProviderSigningIn(EMembershipProvider.Internal);\n }\n }\n },\n\n signUserIn,\n signUserOut,\n\n setCurrentCurrency,\n setCurrentLanguage,\n\n getHotel,\n selectedHotel,\n\n memberProviderSigningIn,\n\n isExternalMemberHotel: allExternalMembershipHandlers.some((handler) => handler.isAvailable),\n externalMembershipHandlers: allExternalMembershipHandlers.filter((handler) => handler.isAvailable),\n };\n\n return <CompanyContext.Provider value={workingContext}>{children}</CompanyContext.Provider>;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"CompanyContextWrapper.js","sourceRoot":"/","sources":["src/contexts/CompanyContext/CompanyContextWrapper.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BookingEngineContext, CompanyContext, CompanyContextType, SignInUser } from '@frontend/contexts';\nimport { InitialHotelDetailsEvent, SelectedHotelChangeEvent } from '@frontend/events';\nimport { useEvent } from '@frontend/hooks';\nimport { EMembershipProvider, IHotelColorScheme } from '@roomstay/core';\nimport React, { ReactChild, useCallback, useContext, useEffect, useMemo, useState } from 'react';\n\nimport API from '@/api/BookingAPI';\nimport { MemberPortalWidget } from '@/engines/MemberPortalWidget/MemberPortalWidget';\nimport { APIError } from '@/errors/APIError';\nimport { MemberOnlyFenceSignUp } from '@/events/actions/MemberOnlyFence/MemberOnlyFenceSignUp';\nimport { big4MemberHandler } from '@/handlers/membership/Big4MemberHandler';\nimport { gdayMemberHandler } from '@/handlers/membership/GdayMemberHandler';\nimport { memberJungleMemberHandler } from '@/handlers/membership/MemberJungleMemberHandler';\nimport { racMemberHandler } from '@/handlers/membership/RACMemberHandler';\nimport { salesforceMemberHandler } from '@/handlers/membership/SalesforceMemberHandler';\nimport { top10MemberHandler } from '@/handlers/membership/Top10MemberHandler';\nimport { HotelDTO } from '@/models/Api/HotelDTO';\nimport BasketRow from '@/models/BasketRow';\nimport type { ConfigCompany } from '@/models/Client/Hotel/Company';\nimport type { ConfigHotel, Hotel, InitialHotelDetailsEventPayload } from '@/models/Client/Hotel/Hotel';\nimport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport { IPromotion } from '@/models/Promotion/IPromotion.type';\nimport Filter from '@/models/Room/Filters/Filter';\nimport { Room } from '@/models/Room/Room';\nimport StepHotel from '@/pages/steps/StepHotel/StepHotel';\nimport CurrencyProvider from '@/providers/CurrencyProvider';\nimport FilterProvider from '@/providers/FilterProvider';\nimport { Language } from '@/providers/LanguageProvider';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport StaticContextProvider from '@/providers/StaticContextProvider';\nimport AnalyticsEvents from '@/util/AnalyticsEvents/AnalyticsEvents';\nimport * as currencyHelper from '@/util/CurrencyHelper';\nimport DataLayer from '@/util/DataLayer';\nimport StepManager from '@/util/StepManager';\nimport TimeHelper from '@/util/TimeHelper';\n\ninterface CompanyContextWrapperProps {\n children: ReactChild;\n configCompany: ConfigCompany;\n}\n\nexport const CompanyContextWrapper = ({ configCompany: company, children }: CompanyContextWrapperProps) => {\n const beContext = useContext(BookingEngineContext);\n\n const getSelectedHotel = () => {\n for (const hotel of hotels) {\n if (selectedHotelID + '' === hotel.hotelID + '') {\n return hotel;\n }\n }\n };\n\n const [companyId, setCompanyId] = useState(company.companyId);\n const [name, setName] = useState(company.name);\n const [companyShort, setCompanyShort] = useState(company.companyShort);\n const [logo, setLogo] = useState(company.logo);\n const [colors, setColors] = useState(company.colors);\n const [hotels, setHotels] = useState<Hotel[]>(company.hotels as Hotel[]);\n const [logoLink, setLogoLink] = useState(company.logoLink);\n const [privacyPolicyUrl, setPrivacyPolicyUrl] = useState(company.privacyPolicyUrl);\n\n const [selectedHotelID, setSelectedHotelID] = useState<string>();\n\n const selectedHotel = useMemo(() => {\n for (const companyHotel of hotels) {\n if (selectedHotelID + '' === companyHotel.hotelID + '') {\n return companyHotel;\n }\n }\n }, [hotels, selectedHotelID]);\n\n const searchParams = new URLSearchParams(window.location.search);\n const currencyParam = searchParams.get('currency');\n\n const [currentCurrency, setCurrentCurrency] = useState<string>(currencyParam ?? getSelectedHotel()?.defaultCurrency ?? 'AUD');\n const [currentLanguage, setCurrentLanguage] = useState<Language>(getSelectedHotel()?.defaultLanguage ?? Language.en_us);\n\n const [memberOnlyModalPromotion, setMemberOnlyModalPromotion] = useState<IPromotion | null>(null);\n\n const [signedInUser, setSignedInUser] = useState<SignInUser | null>(null);\n\n const [memberProviderSigningIn, setMemberProviderSigningIn] = useState<EMembershipProvider | null>(null);\n\n const allExternalMembershipHandlers = [\n big4MemberHandler(selectedHotel),\n top10MemberHandler(selectedHotel),\n memberJungleMemberHandler(selectedHotel),\n gdayMemberHandler(selectedHotel),\n salesforceMemberHandler(selectedHotel),\n racMemberHandler(selectedHotel),\n ];\n\n useEffect(() => {\n raise(new SelectedHotelChangeEvent(selectedHotel));\n }, [selectedHotel]);\n\n const { raise } = useEvent();\n\n const getHotelFromArrayWithId = (id: string, arrayOfHotels: Hotel[] | ConfigHotel[]) => {\n for (const nextHotel of arrayOfHotels) {\n if (nextHotel.hotelID + '' === id + '') {\n return nextHotel;\n }\n }\n };\n const getHotelFromID = (id: string): Hotel => {\n return getHotelFromArrayWithId(id, hotels) as Hotel;\n };\n\n const updateHotel = (newHotel: Hotel, callback?: (hotel: Hotel) => Hotel) => {\n setHotels((oldHotels) => {\n let modified = false;\n const newHotelArray = oldHotels.map((mappingHotel) => {\n if (mappingHotel.hotelID + '' === newHotel.hotelID + '') {\n modified = true;\n\n const hotelDetails: InitialHotelDetailsEventPayload = {\n name: newHotel.name,\n hotelID: newHotel.hotelID,\n hotelUrl: newHotel.hotelUrl,\n currency: newHotel.defaultCurrency,\n language: newHotel.defaultLanguage,\n address: newHotel.address,\n };\n\n const event = new InitialHotelDetailsEvent(hotelDetails);\n raise(event);\n\n if (callback) {\n return { ...callback(mappingHotel) };\n }\n\n return { ...newHotel };\n }\n\n return { ...mappingHotel };\n });\n\n if (!modified) {\n newHotelArray.push(newHotel);\n if (callback) {\n // Fixed: Ensure the callback returns the hotel; otherwise, the UI may receive undefined.\n callback(newHotel);\n }\n }\n\n return newHotelArray;\n });\n };\n\n const signUserIn = async (user: SignInUser) => {\n raise(new MemberOnlyFenceSignUp(memberOnlyModalPromotion as IPromotion, user));\n\n DataLayer.instance.sendMemberSignUp();\n\n workingContext.closeMemberSignupModal();\n\n await beContext.sessionProvider.updateSession({ user: user, memberId: user.memberNumber });\n\n setSignedInUser(user);\n\n // Set external ID for analytics tracking\n if (user.memberNumber) {\n AnalyticsEvents.setExternalId(user.memberNumber);\n }\n\n if (user.saveState) {\n await beContext.storageProvider.setUser(user);\n }\n };\n\n const signUserOut = async () => {\n await beContext.sessionProvider.updateSession({ user: undefined, memberId: undefined });\n await beContext.storageProvider.setUser(undefined);\n setSignedInUser(null);\n };\n\n const getHotel = useCallback(\n (hotelId: string, preloadedHotelDTO?: HotelDTO) =>\n new Promise<Hotel>(async (resolve, reject) => {\n const currentHotelVersion: Hotel | undefined = getHotelFromID(hotelId) as Hotel;\n const newHotel: Hotel = {\n ...currentHotelVersion,\n // Fixed: Specified Hotel not found\n // Ensure hotelID is set explicitly in case currentHotelVersion is undefined or missing it.\n hotelID: hotelId,\n };\n let details: HotelDTO | undefined;\n\n try {\n details = preloadedHotelDTO ? preloadedHotelDTO : await API.Hotel.fetchData(currentLanguage, newHotel);\n } catch (ex) {\n if (ex instanceof APIError) {\n console.error(ex);\n return;\n } else {\n return reject(ex);\n }\n }\n\n if (!details) {\n return;\n }\n\n updateHotel(newHotel, (updatedHotel) => {\n updatedHotel.name = details.name;\n updatedHotel.address = details.address;\n\n updatedHotel.latitude = Number(details.latitude);\n updatedHotel.longitude = Number(details.longitude);\n updatedHotel.phone = details.phone;\n\n updatedHotel.checkInTime = TimeHelper.convert24To12hr(details.checkInTime);\n updatedHotel.checkOutTime = TimeHelper.convert24To12hr(details.checkOutTime);\n\n updatedHotel.paymentCardTypes = details.paymentCardTypes;\n updatedHotel.description = details.description;\n updatedHotel.locationDescription = details.locationDescription;\n updatedHotel.policies = details.policies;\n\n updatedHotel.hotelServices = details.hotelServices;\n updatedHotel.businessServices = details.businessServices;\n updatedHotel.rooms = details.rooms;\n\n updatedHotel.hasLoadedDetails = true;\n updatedHotel.dataSource = details.dataSource;\n\n updatedHotel.defaultCurrency = details.currencyCode;\n updatedHotel.cardProcessor = details.cardProcessor;\n updatedHotel.paymentMethods = details.paymentMethods;\n updatedHotel.planpay = details.planpay;\n updatedHotel.windcave = details.windcave;\n updatedHotel.hotelUrl = details.hotelUrl || updatedHotel.hotelUrl || '';\n updatedHotel.heroImage = details.heroImage || updatedHotel.heroImage || '';\n updatedHotel.images = details.images || [];\n\n updatedHotel.email = details.email;\n updatedHotel.roomGroups = details.roomGroups;\n updatedHotel.rmsUseDepositQuote = details.rmsUseDepositQuote;\n updatedHotel.checkAreaAvailabilityOnRoomStep = details.checkAreaAvailabilityOnRoomStep;\n updatedHotel.enableCreditCardSurcharge = details.enableCreditCardSurcharge;\n updatedHotel.integrations = details.integrations;\n updatedHotel.availableCountries = details.availableCountries;\n updatedHotel.preventCancellation = details.preventCancellation;\n updatedHotel.enableRoomUpsells = details.enableRoomUpsells;\n updatedHotel.enableRateUpsells = details.enableRateUpsells;\n\n if (updatedHotel.dataSource === HotelDataSource.Roomstay) {\n if (details.logo) {\n updatedHotel.logo = details.logo;\n }\n\n if (details.colors) {\n updatedHotel.colors = details.colors as IHotelColorScheme;\n }\n\n if (details.distanceUnitType) {\n updatedHotel.distanceUnitType = details.distanceUnitType;\n }\n\n if (details.weekdayStartsOn) {\n updatedHotel.startsWeekOnDay = details.weekdayStartsOn;\n }\n\n if (details.crossSellHotelIds) {\n updatedHotel.crossSellHotelIds = details.crossSellHotelIds;\n }\n\n if (details.stateFieldConfiguration) {\n updatedHotel.stateFieldConfiguration = details.stateFieldConfiguration;\n }\n }\n\n if (currentHotelVersion?.maxAdults) {\n //using HotelSpec maxAdults from frontend\n updatedHotel.maxAdults = currentHotelVersion.maxAdults;\n }\n\n if (details.maxAdults !== undefined) {\n updatedHotel.maxAdults = details.maxAdults;\n }\n\n if (details.maxChildren !== undefined) {\n updatedHotel.maxChildren = details.maxChildren;\n }\n\n if (details.maxInfants !== undefined) {\n updatedHotel.maxInfants = details.maxInfants;\n }\n\n if (details.rooms) {\n //dymanic maxOccupancy from rooms database\n const roomArray = Object.values(details.rooms);\n\n if (roomArray.length) {\n updatedHotel.maxOccupancy = roomArray.reduce((previousMax, current) => {\n return Math.max(previousMax, current.maxOccupancy);\n }, 0);\n }\n }\n\n updatedHotel.childConfiguration = details.childConfiguration;\n\n /**\n * Prioritized perks from roomstay-clients than roomstay-admin\n */\n updatedHotel.perks = updatedHotel.perks?.length ? updatedHotel.perks : details.perks;\n updatedHotel.perkTitle = updatedHotel.perkTitle ?? details.perkTitle;\n\n updatedHotel.countryPrefix = details.countryPrefix ?? updatedHotel.countryPrefix ?? '';\n updatedHotel.quoteImageDesktop = details.quoteImageDesktop ?? updatedHotel.quoteImageDesktop ?? '';\n updatedHotel.quoteImageMobile = details.quoteImageMobile ?? updatedHotel.quoteImageMobile ?? '';\n updatedHotel.memberOnlyImage = details.memberOnlyImage ?? updatedHotel.memberOnlyImage ?? '';\n if (details.memberOnlyRenderRateLast !== undefined) {\n updatedHotel.memberOnlyRenderRateLast = details.memberOnlyRenderRateLast;\n }\n updatedHotel.captureChildAge = details.captureChildAge;\n\n updatedHotel.fees = details.fees;\n updatedHotel.addDepositFeeToBookingTotal = details.addDepositFeeToBookingTotal;\n\n updatedHotel.company = details.company;\n\n updatedHotel.itineraryNote = details.itineraryNote;\n\n updatedHotel.minAdultAge = details.minAdultAge;\n updatedHotel.maxAdultAge = details.maxAdultAge;\n updatedHotel.countInfantsInOccupancy = details.countInfantsInOccupancy;\n updatedHotel.occupancyLimits = details.occupancyLimits;\n updatedHotel.preferProviderBookingId = details.preferProviderBookingId;\n updatedHotel.disableSavedPayments = details.disableSavedPayments;\n updatedHotel.showUnavailableRooms = details.showUnavailableRooms;\n updatedHotel.isRACMemberNoRequired = details.isRACMemberNoRequired;\n updatedHotel.countryCode = details.countryCode;\n updatedHotel.calendarHighlights = details.calendarHighlights;\n updatedHotel.addressRequirement = details.addressRequirement;\n updatedHotel.maxRoomsPerBooking = details.maxRoomsPerBooking;\n updatedHotel.bookingFlow = details.bookingFlow;\n updatedHotel.metaPixelId = details.metaPixelId;\n updatedHotel.enableAnalyticsDebug = details.enableAnalyticsDebug;\n\n resolve(updatedHotel);\n\n return updatedHotel;\n });\n }),\n []\n );\n\n useEffect(() => {\n setCompanyId(company.companyId);\n setName(company.name);\n setCompanyShort(company.companyShort);\n setLogo(company.logo);\n setColors(company.colors);\n setLogoLink(company.logoLink);\n setPrivacyPolicyUrl(company.privacyPolicyUrl);\n\n const configHotels = company.hotels.map((hotel: ConfigHotel) => {\n return { ...hotel, hasLoadedDetails: false, hotelID: `${hotel.hotelID}` } as Hotel;\n });\n setHotels(configHotels);\n\n if (company.selectedHotel) {\n const hotelId = typeof company.selectedHotel === 'string' ? company.selectedHotel : company.selectedHotel.hotelID + '';\n const targetHotel: ConfigHotel | undefined = getHotelFromArrayWithId(hotelId, configHotels);\n if (targetHotel) {\n setSelectedHotelID(hotelId);\n } else {\n // TODO: add centralized error logging\n console.log(`Unable to set selected hotel automatically. No Hotel found with ID: ${company.selectedHotel}`);\n }\n } else {\n /*\n We need to check if for some reason HotelStep isn't set as the first step,\n to automatically select a hotel, so engine doesn't fall over\n\n Possible TODO: We might need to do this on a new Step level, instead of here, as dynamically checking if StepHotel\n is first is probably not a great idea...\n */\n\n // Don't select hotel for MemberPortalWidget with groupWidgetConfig\n const isMemberPortalWithGroup = beContext.engine instanceof MemberPortalWidget && beContext.engine.getConfig().groupWidgetConfig;\n\n if (StepManager.getFirstStep() !== StepHotel && !isMemberPortalWithGroup) {\n setSelectedHotelID(configHotels[0].hotelID);\n console.log(`No selected hotel found - defaulting to ${configHotels[0].name}`);\n } else {\n RoomstayThemeEngine.registerStyles(company.colors);\n }\n }\n }, [company]);\n\n const onSelectedHotelIDChanged = React.useCallback(async () => {\n if (selectedHotelID) {\n const selectedHotel = await getHotel(selectedHotelID);\n\n if (selectedHotel) {\n currencyHelper.loadExchangeRates(selectedHotel.defaultCurrency ?? 'AUD');\n\n StaticContextProvider.MemberOnlyRateCodes = selectedHotel.memberOnlyRates ?? [];\n\n // Prep session based storage\n const sessionProvider = beContext.engine.getSessionProvider();\n await sessionProvider.setHotelID(selectedHotelID);\n\n // Prep local storage (non-session based)\n beContext.storageProvider.setHotelId(selectedHotelID);\n\n // Reload current user?\n const user = await beContext.storageProvider.getUser();\n\n if (user) {\n await signUserIn(user);\n }\n\n if (currencyParam && CurrencyProvider.getSymbol(currencyParam)) {\n setCurrentCurrency(currencyParam);\n } else {\n setCurrentCurrency(selectedHotel.defaultCurrency);\n }\n\n selectedHotel?.onLoad?.();\n }\n }\n }, [selectedHotelID]);\n\n useEffect(() => {\n onSelectedHotelIDChanged();\n }, [onSelectedHotelIDChanged]);\n\n useEffect(() => {\n const selectedHotel = getSelectedHotel();\n\n DataLayer.instance.setCurrencyCodes(currentCurrency, selectedHotel?.defaultCurrency ?? currentCurrency);\n }, [currentCurrency, selectedHotelID]);\n\n useEffect(() => {\n // Single-source GTM initialisation\n DataLayer.instance.initialiseGTM(company, selectedHotel);\n }, [company, selectedHotel]);\n\n // TODO: Add Hotel Details fetch\n // TODO: re-do fetch on language change\n\n const updateLowestPriceByTargetHotel = (targetHotel: Hotel, value: number, isLoading: boolean) => {\n updateHotel(targetHotel, (hotel) => ({\n ...hotel,\n lowestPrice: { value, isLoading },\n }));\n };\n\n const getLowestPrice = (rooms?: Room[]) => {\n if (!rooms?.length) return 0;\n\n const lowestDisplayPrice = rooms.reduce((min, room) => {\n // Get the lowest raw price for each room (see RoomDetails.tsx for reference)\n const lowestRawPrice = room.getLowestPrice(false, true);\n return lowestRawPrice != null && lowestRawPrice > 0 ? Math.min(min, lowestRawPrice) : min;\n }, Infinity);\n\n return isFinite(lowestDisplayPrice) ? lowestDisplayPrice : 0;\n };\n\n const workingContext: CompanyContextType = {\n currentLanguage,\n currentCurrency,\n\n memberOnlyModalPromotion,\n\n companyId,\n name,\n companyShort,\n logo,\n logoLink,\n privacyPolicyUrl,\n\n colors,\n hotels,\n\n signedInUser,\n\n selectedHotelID: selectedHotelID as string,\n\n updateLowestPricePerNightByHotelIds: async (hotelIds: string[], row: BasketRow) => {\n hotelIds.forEach((hotelId) => {\n const targetHotel = getHotelFromID(hotelId);\n updateLowestPriceByTargetHotel(targetHotel, 0, true);\n });\n\n try {\n const filters: Filter[] = Object.values(beContext.currentFilters).filter(Boolean) as Filter[];\n const data = await FilterProvider.getRoomListByHotelIds(row, filters, hotelIds, signedInUser?.memberNumber);\n for (const [hotelId, hotelData] of Object.entries(data)) {\n const { hotel: latestHotelDTO, rooms } = hotelData;\n try {\n await getHotel(hotelId, latestHotelDTO);\n const targetHotel = getHotelFromID(hotelId);\n const finalLowest = getLowestPrice(rooms);\n updateLowestPriceByTargetHotel(targetHotel, finalLowest, false);\n } catch {\n const targetHotel = getHotelFromID(hotelId);\n updateLowestPriceByTargetHotel(targetHotel, 0, false);\n }\n }\n } catch (error) {\n console.error(error);\n }\n },\n\n changeHotel: (hotel: string | Hotel | null) => {\n if (hotel === null) {\n setSelectedHotelID(undefined);\n return true;\n }\n\n const targetHotel = getHotelFromID(typeof hotel === 'string' ? hotel : hotel.hotelID + '');\n\n if (targetHotel) {\n setSelectedHotelID(targetHotel.hotelID);\n return true;\n } else {\n // TODO: add centralized error logging\n console.log(`Unable to set selected hotel automatically. No Hotel found with ID: ${company.selectedHotel}`);\n return false;\n }\n },\n\n closeMemberSignupModal: () => {\n setMemberProviderSigningIn(null);\n setMemberOnlyModalPromotion(null);\n },\n openMemberSignupModal: (provider?: EMembershipProvider) => {\n if (provider) {\n setMemberProviderSigningIn(provider);\n } else {\n const firstConfiguredHandler = allExternalMembershipHandlers.find((handler) => handler.isAvailable);\n\n if (firstConfiguredHandler) {\n // If any external handler is available, default to that\n setMemberProviderSigningIn(firstConfiguredHandler.provider);\n } else {\n setMemberProviderSigningIn(EMembershipProvider.Internal);\n }\n }\n },\n\n signUserIn,\n signUserOut,\n\n setCurrentCurrency,\n setCurrentLanguage,\n\n getHotel,\n selectedHotel,\n\n memberProviderSigningIn,\n\n isExternalMemberHotel: allExternalMembershipHandlers.some((handler) => handler.isAvailable),\n externalMembershipHandlers: allExternalMembershipHandlers.filter((handler) => handler.isAvailable),\n };\n\n return <CompanyContext.Provider value={workingContext}>{children}</CompanyContext.Provider>;\n};\n"]}
|
|
@@ -5,8 +5,32 @@ export interface UseCurrencyProps {
|
|
|
5
5
|
hideDecimals?: boolean;
|
|
6
6
|
disableLocalization?: boolean;
|
|
7
7
|
disableLoading?: boolean;
|
|
8
|
-
|
|
8
|
+
fromCurrencyCode?: string;
|
|
9
|
+
toCurrencyCode?: string;
|
|
9
10
|
}
|
|
11
|
+
export type UseCurrencyDisplayProps = UseCurrencyProps & {
|
|
12
|
+
forceHideDecimals?: boolean;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Public hook for displaying a converted, formatted currency value.
|
|
16
|
+
*
|
|
17
|
+
* Resolves decimal visibility by reconciling the caller's `hideDecimals`
|
|
18
|
+
* prop with the hotel-level `alwaysShowDecimals` override from
|
|
19
|
+
* `HotelOverridesContext`, then delegates to the internal `useCurrency` hook.
|
|
20
|
+
*
|
|
21
|
+
* @param props - See {@link UseCurrencyDisplayProps}
|
|
22
|
+
* @returns `{ isLoading, symbol, prettyValue, value }` — see `useCurrency`
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* const { symbol, prettyValue } = useCurrencyDisplay({ children: 1200, hideDecimals: true });
|
|
26
|
+
* // → { symbol: '$', prettyValue: '1,200' }
|
|
27
|
+
*/
|
|
28
|
+
export declare const useCurrencyDisplay: (props: UseCurrencyDisplayProps) => {
|
|
29
|
+
isLoading: boolean;
|
|
30
|
+
symbol: string;
|
|
31
|
+
prettyValue: string | number;
|
|
32
|
+
value: number;
|
|
33
|
+
};
|
|
10
34
|
declare const useCurrency: (props: UseCurrencyProps) => {
|
|
11
35
|
isLoading: boolean;
|
|
12
36
|
symbol: string;
|
|
@@ -1,16 +1,62 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
2
13
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
14
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
15
|
};
|
|
5
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.useCurrencyDisplay = void 0;
|
|
6
18
|
const react_1 = require("react");
|
|
7
19
|
const contexts_1 = require("../contexts");
|
|
8
20
|
const CurrentHotelHook_1 = require("./CurrentHotelHook");
|
|
9
21
|
const CurrencyProvider_1 = __importDefault(require("../providers/CurrencyProvider"));
|
|
22
|
+
/**
|
|
23
|
+
* Public hook for displaying a converted, formatted currency value.
|
|
24
|
+
*
|
|
25
|
+
* Resolves decimal visibility by reconciling the caller's `hideDecimals`
|
|
26
|
+
* prop with the hotel-level `alwaysShowDecimals` override from
|
|
27
|
+
* `HotelOverridesContext`, then delegates to the internal `useCurrency` hook.
|
|
28
|
+
*
|
|
29
|
+
* @param props - See {@link UseCurrencyDisplayProps}
|
|
30
|
+
* @returns `{ isLoading, symbol, prettyValue, value }` — see `useCurrency`
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* const { symbol, prettyValue } = useCurrencyDisplay({ children: 1200, hideDecimals: true });
|
|
34
|
+
* // → { symbol: '$', prettyValue: '1,200' }
|
|
35
|
+
*/
|
|
36
|
+
const useCurrencyDisplay = (props) => {
|
|
37
|
+
const { hideDecimals, forceHideDecimals } = props, rest = __rest(props, ["hideDecimals", "forceHideDecimals"]);
|
|
38
|
+
const hotelOverridesContext = (0, react_1.useContext)(contexts_1.HotelOverridesContext);
|
|
39
|
+
const hideEntryDecimals = (0, react_1.useMemo)(() => {
|
|
40
|
+
// First we check if decimals must absolutely not be displayed
|
|
41
|
+
if (forceHideDecimals === true) {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
// Then we check if the API overrides the default currency display state
|
|
45
|
+
if (hotelOverridesContext.alwaysShowDecimals === true) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
// Then we rely on how developers origally intened the UI to funciton.
|
|
49
|
+
return hideDecimals;
|
|
50
|
+
}, [forceHideDecimals, hideDecimals, hotelOverridesContext.alwaysShowDecimals]);
|
|
51
|
+
return useCurrency(Object.assign(Object.assign({}, rest), { hideDecimals: hideEntryDecimals }));
|
|
52
|
+
};
|
|
53
|
+
exports.useCurrencyDisplay = useCurrencyDisplay;
|
|
10
54
|
const useCurrency = (props) => {
|
|
11
55
|
var _a;
|
|
12
56
|
const { currentCurrency } = (0, react_1.useContext)(contexts_1.CompanyContext);
|
|
13
57
|
const { hotel } = (0, CurrentHotelHook_1.useCurrentHotel)();
|
|
58
|
+
const toCurrencyCode = props.toCurrencyCode ? props.toCurrencyCode : currentCurrency;
|
|
59
|
+
const fromCurrencyCode = (_a = props.fromCurrencyCode) !== null && _a !== void 0 ? _a : hotel === null || hotel === void 0 ? void 0 : hotel.defaultCurrency;
|
|
14
60
|
const [value, setValue] = (0, react_1.useState)(0);
|
|
15
61
|
const [isLoading, setIsLoading] = (0, react_1.useState)(false);
|
|
16
62
|
const toLocalString = (original, toFixed) => {
|
|
@@ -26,14 +72,13 @@ const useCurrency = (props) => {
|
|
|
26
72
|
let isCancelled = false;
|
|
27
73
|
setIsLoading(true);
|
|
28
74
|
setTimeout(() => {
|
|
29
|
-
var _a;
|
|
30
75
|
if (!isCancelled) {
|
|
31
76
|
setIsLoading(false);
|
|
32
77
|
if (isNaN(props.children)) {
|
|
33
78
|
setValue(props.children);
|
|
34
79
|
}
|
|
35
80
|
else {
|
|
36
|
-
const totalValue = CurrencyProvider_1.default.convertPrice(props.children, !props.hideDecimals,
|
|
81
|
+
const totalValue = CurrencyProvider_1.default.convertPrice(props.children, !props.hideDecimals, toCurrencyCode, fromCurrencyCode);
|
|
37
82
|
if (!isCancelled) {
|
|
38
83
|
setValue(totalValue);
|
|
39
84
|
}
|
|
@@ -44,14 +89,14 @@ const useCurrency = (props) => {
|
|
|
44
89
|
setIsLoading(false);
|
|
45
90
|
isCancelled = true;
|
|
46
91
|
};
|
|
47
|
-
}, [props.children,
|
|
92
|
+
}, [props.children, props.hideDecimals, toCurrencyCode, fromCurrencyCode, CurrencyProvider_1.default.getRatesForCurrencyCode(fromCurrencyCode)]);
|
|
48
93
|
return (0, react_1.useMemo)(() => {
|
|
49
94
|
const stringVal = props.disableLocalization ? value.toString() : value === null || value === void 0 ? void 0 : value.toLocaleString();
|
|
50
|
-
let symbol = CurrencyProvider_1.default.getSymbol(
|
|
95
|
+
let symbol = CurrencyProvider_1.default.getSymbol(toCurrencyCode);
|
|
51
96
|
if (props.removeCurrencyAfterChar) {
|
|
52
97
|
const priceLength = String(value).length;
|
|
53
98
|
if (priceLength + symbol.length > props.removeCurrencyAfterChar) {
|
|
54
|
-
symbol = CurrencyProvider_1.default.getShortSymbol(
|
|
99
|
+
symbol = CurrencyProvider_1.default.getShortSymbol(toCurrencyCode);
|
|
55
100
|
if (priceLength + symbol.length > props.removeCurrencyAfterChar) {
|
|
56
101
|
symbol = '';
|
|
57
102
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Currency.js","sourceRoot":"/","sources":["src/hooks/Currency.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Currency.js","sourceRoot":"/","sources":["src/hooks/Currency.ts"],"names":[],"mappings":"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","sourcesContent":["import { useContext, useEffect, useMemo, useState } from 'react';\n\nimport { CompanyContext, HotelOverridesContext } from '@/contexts';\nimport { useCurrentHotel } from '@/hooks/CurrentHotelHook';\nimport CurrencyProvider from '@/providers/CurrencyProvider';\n\nexport interface UseCurrencyProps {\n removeCurrencyAfterChar?: number;\n shortenThousandsAfter?: number;\n\n children: any;\n\n hideDecimals?: boolean;\n\n disableLocalization?: boolean;\n disableLoading?: boolean;\n\n fromCurrencyCode?: string;\n toCurrencyCode?: string;\n}\n\nexport type UseCurrencyDisplayProps = UseCurrencyProps & {\n forceHideDecimals?: boolean;\n};\n\n/**\n * Public hook for displaying a converted, formatted currency value.\n *\n * Resolves decimal visibility by reconciling the caller's `hideDecimals`\n * prop with the hotel-level `alwaysShowDecimals` override from\n * `HotelOverridesContext`, then delegates to the internal `useCurrency` hook.\n *\n * @param props - See {@link UseCurrencyDisplayProps}\n * @returns `{ isLoading, symbol, prettyValue, value }` — see `useCurrency`\n *\n * @example\n * const { symbol, prettyValue } = useCurrencyDisplay({ children: 1200, hideDecimals: true });\n * // → { symbol: '$', prettyValue: '1,200' }\n */\nexport const useCurrencyDisplay = (props: UseCurrencyDisplayProps) => {\n const { hideDecimals, forceHideDecimals, ...rest } = props;\n const hotelOverridesContext = useContext(HotelOverridesContext);\n\n const hideEntryDecimals = useMemo(() => {\n // First we check if decimals must absolutely not be displayed\n if (forceHideDecimals === true) {\n return true;\n }\n\n // Then we check if the API overrides the default currency display state\n if (hotelOverridesContext.alwaysShowDecimals === true) {\n return false;\n }\n\n // Then we rely on how developers origally intened the UI to funciton.\n return hideDecimals;\n }, [forceHideDecimals, hideDecimals, hotelOverridesContext.alwaysShowDecimals]);\n return useCurrency({ ...rest, hideDecimals: hideEntryDecimals });\n};\n\nconst useCurrency = (props: UseCurrencyProps) => {\n const { currentCurrency } = useContext(CompanyContext);\n const { hotel } = useCurrentHotel();\n const toCurrencyCode = props.toCurrencyCode ? props.toCurrencyCode : currentCurrency;\n const fromCurrencyCode = props.fromCurrencyCode ?? (hotel?.defaultCurrency as string);\n const [value, setValue] = useState(0);\n const [isLoading, setIsLoading] = useState(false);\n\n const toLocalString = (original: number, toFixed?: boolean) => {\n if (props.disableLocalization) {\n return original;\n }\n\n if (original) {\n return original.toLocaleString(undefined, { minimumFractionDigits: toFixed ? 2 : 0 });\n }\n\n return original;\n };\n\n useEffect(() => {\n let isCancelled = false;\n\n setIsLoading(true);\n setTimeout(\n () => {\n if (!isCancelled) {\n setIsLoading(false);\n\n if (isNaN(props.children)) {\n setValue(props.children);\n } else {\n const totalValue = CurrencyProvider.convertPrice(props.children, !props.hideDecimals, toCurrencyCode, fromCurrencyCode);\n\n if (!isCancelled) {\n setValue(totalValue);\n }\n }\n }\n },\n props.disableLoading ? 0 : 200\n );\n\n return () => {\n setIsLoading(false);\n isCancelled = true;\n };\n }, [props.children, props.hideDecimals, toCurrencyCode, fromCurrencyCode, CurrencyProvider.getRatesForCurrencyCode(fromCurrencyCode)]);\n\n return useMemo(() => {\n const stringVal = props.disableLocalization ? value.toString() : value?.toLocaleString();\n\n let symbol = CurrencyProvider.getSymbol(toCurrencyCode);\n if (props.removeCurrencyAfterChar) {\n const priceLength = String(value).length;\n if (priceLength + symbol.length > props.removeCurrencyAfterChar) {\n symbol = CurrencyProvider.getShortSymbol(toCurrencyCode);\n if (priceLength + symbol.length > props.removeCurrencyAfterChar) {\n symbol = '';\n }\n }\n }\n\n let prettyValue = toLocalString(value, !(props.hideDecimals || typeof value !== 'number'));\n\n if (props.shortenThousandsAfter && props.shortenThousandsAfter <= String(value).length && props.hideDecimals) {\n prettyValue = stringVal.substring(0, stringVal.length - 3) + '…';\n }\n\n return {\n isLoading,\n symbol,\n prettyValue,\n value,\n };\n }, [value, isLoading]);\n};\n\nexport default useCurrency;\n"]}
|