@roomstay/frontend 2.6.54 → 2.6.55
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/978.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/components/steps/addons/AddonCard.js +12 -6
- package/dist/src/components/steps/addons/AddonCard.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js +8 -0
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
- package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js +1 -0
- package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js.map +1 -1
- package/dist/src/models/Addon/Addon.d.ts +2 -0
- package/dist/src/models/Addon/Addon.js +3 -0
- package/dist/src/models/Addon/Addon.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/test.bundle.js +1 -1
- package/package.json +1 -1
|
@@ -129,12 +129,12 @@ const AddonCard = ({ addon, className }) => {
|
|
|
129
129
|
},
|
|
130
130
|
{
|
|
131
131
|
name: Translation_1.Translation.Step.Date.Adult_plural,
|
|
132
|
-
enabled: priceInfo === null || priceInfo === void 0 ? void 0 : priceInfo.adultPrice,
|
|
132
|
+
enabled: (priceInfo === null || priceInfo === void 0 ? void 0 : priceInfo.adultPrice) && addon.pricingType !== Addon_1.AddonPricingType.PER_ALL_PERSONS && addon.pricingType !== Addon_1.AddonPricingType.PER_ALL_PERSONS_PER_NIGHT,
|
|
133
133
|
element: react_1.default.createElement(NumberIncrement_1.default, { number: adultQuantity, min: 0, max: priceInfo.quantity - childQuantity, onChange: setAdultsQuantityOnChange }),
|
|
134
134
|
},
|
|
135
135
|
{
|
|
136
136
|
name: Translation_1.Translation.Step.Date.Child_plural,
|
|
137
|
-
enabled: priceInfo === null || priceInfo === void 0 ? void 0 : priceInfo.childPrice,
|
|
137
|
+
enabled: (priceInfo === null || priceInfo === void 0 ? void 0 : priceInfo.childPrice) && addon.pricingType !== Addon_1.AddonPricingType.PER_ALL_PERSONS && addon.pricingType !== Addon_1.AddonPricingType.PER_ALL_PERSONS_PER_NIGHT,
|
|
138
138
|
element: react_1.default.createElement(NumberIncrement_1.default, { number: childQuantity, min: 0, max: priceInfo.quantity - adultQuantity, onChange: setChildQuantityOnChange }),
|
|
139
139
|
},
|
|
140
140
|
];
|
|
@@ -198,15 +198,21 @@ const AddonCard = ({ addon, className }) => {
|
|
|
198
198
|
react_1.default.createElement(Headline_1.default, { size: "large", bold: true, lineHeight: "1em" },
|
|
199
199
|
react_1.default.createElement(Currency_1.default, null, priceInfo.adultPrice)),
|
|
200
200
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.DarkGrey, inline: true, className: "u-marg-left--light u-clear-font-weight" },
|
|
201
|
-
"/
|
|
202
|
-
|
|
201
|
+
"/",
|
|
202
|
+
' ',
|
|
203
|
+
addon.pricingType === Addon_1.AddonPricingType.PER_ALL_PERSONS_PER_NIGHT
|
|
204
|
+
? t(Translation_1.Translation.Misc.AdultPerNight)
|
|
205
|
+
: t(Translation_1.Translation.Step.Date.Adult)))),
|
|
203
206
|
!!priceInfo.adultPrice && !!priceInfo.childPrice && react_1.default.createElement("br", null),
|
|
204
207
|
!!priceInfo.childPrice && (react_1.default.createElement("div", { className: "d-flex align-items-end flex-row" },
|
|
205
208
|
react_1.default.createElement(Headline_1.default, { size: "large", bold: true, lineHeight: "1em" },
|
|
206
209
|
react_1.default.createElement(Currency_1.default, null, priceInfo.childPrice)),
|
|
207
210
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.DarkGrey, inline: true, className: "u-marg-left--light u-clear-font-weight" },
|
|
208
|
-
"/
|
|
209
|
-
|
|
211
|
+
"/",
|
|
212
|
+
' ',
|
|
213
|
+
addon.pricingType === Addon_1.AddonPricingType.PER_ALL_PERSONS_PER_NIGHT
|
|
214
|
+
? t(Translation_1.Translation.Misc.ChildPerNight)
|
|
215
|
+
: t(Translation_1.Translation.Step.Date.Child))))))),
|
|
210
216
|
react_1.default.createElement("div", { className: "u-marg-bottom--light" },
|
|
211
217
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.Grey, inline: true, className: "u-nowrap" }, (hotel === null || hotel === void 0 ? void 0 : hotel.enableCreditCardSurcharge) ? t(Translation_1.Translation.Step.Addon.ExcludingFees) : t(Translation_1.Translation.Step.Addon.IncludingFeesAndTaxes)))),
|
|
212
218
|
react_1.default.createElement("div", { className: "u-marg-top--light u-flex justify-content-end u-w-100@l- flex-column flex-lg-row" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddonCard.js","sourceRoot":"/","sources":["src/components/steps/addons/AddonCard.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport Check from 'icons/Check';\nimport React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport BEButton from '@/components/generic/BEButton';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport NumberIncrement from '@/components/generic/NumberIncrement';\nimport { IDefaultSelectOption, Select } from '@/components/generic/Select/Select';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Addon, AddonPricingType, PriceInfo } from '@/models/Addon/Addon';\nimport ImageProvider, { ImageSize } from '@/providers/ImageProvider';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\n\ninterface Props {\n addon: Addon;\n className?: string;\n}\n\nconst AddonCard = ({ addon, className }: Props) => {\n const { t } = useTranslation();\n\n const { hotel } = useCurrentHotel();\n const basketContext = React.useContext(BasketContext);\n\n const addonBasketRow = basketContext.getRowForAddon(addon);\n\n const [quantity, setQuantity] = useState(1);\n const [adultQuantity, setAdultQuantity] = useState(addonBasketRow ? addonBasketRow.getAdultQuantity() : 1);\n const [childQuantity, setChildQuantity] = useState(addonBasketRow ? addonBasketRow.getChildQuantity() : 0);\n\n const [priceInfo, setPriceInfo] = useState<PriceInfo>({ quantity: 1 });\n\n const [selectedDate, setSelectedDate] = useState(addonBasketRow ? addonBasketRow.getSelectedDate() : '');\n const [selectedTime, setSelectedTime] = useState(addonBasketRow ? addonBasketRow.getSelectedTime() : '');\n\n useEffect(() => {\n if (addonBasketRow) {\n setPriceInfo(addon.availability[addonBasketRow.getSelectedDate()] ?? addon.availability[addon.firstDate as string]);\n setSelectedDate(addonBasketRow.getSelectedDate() ?? addon.firstDate);\n setSelectedTime(addonBasketRow.getSelectedTime() ?? '');\n setQuantity(addonBasketRow.getQuantity());\n setAdultQuantity(addonBasketRow.getAdultQuantity());\n setChildQuantity(addonBasketRow.getChildQuantity());\n } else {\n setPriceInfo(addon.availability[addon.firstDate as string] ?? ([] as any));\n setSelectedDate(addon.firstDate as string);\n setSelectedTime(addon.availability[addon.firstDate as string]?.selectorTimes?.[0]?.value || '');\n }\n }, []);\n\n const setDate = (date: any) => {\n setPriceInfo(addon.availability[date]);\n setSelectedDate(date);\n setSelectedTime(addon.availability[date]?.selectorTimes?.[0]?.value || '');\n if (addon.availability[date].quantity < quantity) {\n setQuantity(addon.availability[date].quantity);\n }\n };\n\n const onClickAddToCartHandler = () => {\n basketContext.setAddonQuantities(\n addon,\n {\n quantity,\n adult: adultQuantity,\n child: childQuantity,\n },\n selectedDate,\n selectedTime\n );\n };\n\n const classes = classNames({\n '--active': !!basketContext.getRowForAddon(addon),\n });\n\n const onClickRemove = () => {\n const selectedAddon = basketContext.basketAddonRows.find((row) => {\n return row.getAddon().code === addon.code;\n });\n if (selectedAddon) basketContext.removeBasketAddonRow(selectedAddon);\n };\n\n const setQuantityOnChange = (val: any) => {\n setQuantity(val);\n };\n const setAdultsQuantityOnChange = (val: any) => {\n setAdultQuantity(val);\n };\n const setChildQuantityOnChange = (val: any) => {\n setChildQuantity(val);\n };\n const setDateOnChange = (selected: string) => {\n setDate(selected);\n };\n const setSelectedTimeOnChange = (selected: any) => {\n setSelectedTime(selected);\n };\n\n const addonConfigurations = [\n {\n name: 'Date',\n enabled: (addonBasketRow?.getNumberOfAvailableNights?.() as number) > 1 && !addonBasketRow?.getAddon().hideDatePicker,\n element: (\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={addon.selectorDates}\n value={selectedDate}\n onChange={setDateOnChange}\n keyName=\"value\"\n labelName=\"text\"\n className=\"u-flex align-items-center\"\n />\n ),\n },\n {\n name: 'Time',\n enabled: priceInfo?.selectorTimes?.length !== 0,\n element: (\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={priceInfo?.selectorTimes || []}\n value={selectedTime}\n onChange={setSelectedTimeOnChange}\n keyName=\"value\"\n labelName=\"text\"\n className=\"u-flex align-items-center\"\n />\n ),\n },\n {\n name: Translation.Step.Addon.Quantity,\n enabled: priceInfo?.price && priceInfo?.quantity > 1,\n element: <NumberIncrement number={quantity} min={1} max={priceInfo.quantity} onChange={setQuantityOnChange} />,\n },\n {\n name: Translation.Step.Date.Adult_plural,\n enabled: priceInfo?.adultPrice,\n element: <NumberIncrement number={adultQuantity} min={0} max={priceInfo.quantity - childQuantity} onChange={setAdultsQuantityOnChange} />,\n },\n {\n name: Translation.Step.Date.Child_plural,\n enabled: priceInfo?.childPrice,\n element: <NumberIncrement number={childQuantity} min={0} max={priceInfo.quantity - adultQuantity} onChange={setChildQuantityOnChange} />,\n },\n ];\n\n const pricingTypeSuffix = (() => {\n switch (addon.pricingType) {\n case AddonPricingType.PER_STAY:\n return t(Translation.Misc.QTY);\n case AddonPricingType.PER_PERSON:\n return t(Translation.Misc.Person);\n case AddonPricingType.PER_PERSON_OCCUPANCY_PER_NIGHT:\n case AddonPricingType.PER_PERSON_PER_NIGHT:\n return t(Translation.Misc.PersonPerNight);\n case AddonPricingType.PER_ADULT_OCCUPANCY_PER_NIGHT:\n case AddonPricingType.PER_CHILD_OCCUPANCY_PER_NIGHT:\n return t(Translation.Misc.AdultPerNight);\n case AddonPricingType.PER_NIGHT:\n case AddonPricingType.PER_QUANTITY_NAME_PER_NIGHT:\n return t(Translation.Misc.Night);\n case AddonPricingType.PER_ROOM_QUANTITY_PER_NIGHT:\n return t(Translation.Misc.PerRoomDay);\n }\n })();\n\n const addonCardImageStyle: any = {};\n if (addon.image) {\n addonCardImageStyle.backgroundImage = `url('${ImageProvider.resizeImage(addon.image, ImageSize.Original)}')`;\n } else {\n addonCardImageStyle.backgroundImage = `url('${hotel?.logo && ImageProvider.resizeImage(hotel?.logo as string, ImageSize.Original)}')`;\n addonCardImageStyle.backgroundSize = '50%';\n addonCardImageStyle.backgroundRepeat = 'no-repeat';\n }\n\n return (\n <div className={classNames('u-flex u-flex-flex-start u-rounded addon-card-wrapper', className, classes)} style={{ backgroundColor: Color.White }}>\n <div className=\"addon-card-image\" style={addonCardImageStyle} />\n <div className=\"u-marg-heavy u-marg@m- u-w-100@xl\">\n <div className=\"u-flex\">\n <Headline bold>{addon.name}</Headline>\n {addonBasketRow ? <Check /> : <></>}\n </div>\n <Text color={Color.DarkGrey} type={TextType.Small}>\n {addon.description}\n </Text>\n <div className=\"addon-card-wrapper--price u-flex u-flex-align-flex-end\">\n <div className=\"u-w-100\">\n {addonConfigurations.map((input) => {\n if (!input.enabled) {\n return;\n }\n\n return (\n <div key={input.name} className=\"u-flex justify-content-start u-marg-bot u-marg-top\">\n <Text className=\"u-mw-100\" bold>\n {t(input.name)}\n </Text>\n {input.element}\n </div>\n );\n })}\n\n {/* {addon.guaranteeDescription && (\n <>\n <h4 className=\"u-marg-bottom--light u-marg-top\">Guarantee</h4>\n <div className=\"u-marg-bot--heavy\">\n <Text type={TextType.Small}>{addon.guaranteeDescription}</Text>\n </div>\n </>\n )}\n {addon.cancelPenalty && (\n <>\n <h4 className=\"u-marg-bottom--light u-marg-top\">Cancellation Policy</h4>\n <div className=\"u-marg-bot--heavy\">\n <Text type={TextType.Small}>{addon.cancelPenalty}</Text>\n </div>\n </>\n )} */}\n </div>\n <div className=\"addon-card-wrapper--price-action\">\n <div className=\"u-flex u-flex-direction-column u-flex-align-flex-end\" style={{ alignSelf: 'flex-end' }}>\n <Text type={TextType.Small} color={Color.Navy} inline>\n {t(Translation.Misc.From)}\n </Text>\n <div className=\"room-details--content-price flex-align-items-baseline flex-row\">\n {priceInfo?.price && (\n <>\n <div className=\"u-flex align-items-end\">\n <Headline size=\"large\" bold lineHeight=\"1em\">\n <Currency hideDecimals>{priceInfo.price}</Currency>\n </Headline>\n <Text type={TextType.Small} color={Color.DarkGrey} inline className=\"u-marg-left--light u-clear-font-weight\">\n / {pricingTypeSuffix}\n </Text>\n </div>\n </>\n )}\n {(!!priceInfo?.adultPrice || !!priceInfo?.childPrice) && (\n <h2 className=\"u-marg-none d-flex flex-wrap justify-content-end\">\n {!!priceInfo.adultPrice && (\n <div className=\"d-flex align-items-end flex-row\">\n <Headline size=\"large\" bold lineHeight=\"1em\">\n <Currency>{priceInfo.adultPrice}</Currency>\n </Headline>\n <Text type={TextType.Small} color={Color.DarkGrey} inline className=\"u-marg-left--light u-clear-font-weight\">\n / {t(Translation.Step.Date.Adult)}\n </Text>\n </div>\n )}\n {!!priceInfo.adultPrice && !!priceInfo.childPrice && <br />}\n {!!priceInfo.childPrice && (\n <div className=\"d-flex align-items-end flex-row\">\n <Headline size=\"large\" bold lineHeight=\"1em\">\n <Currency>{priceInfo.childPrice}</Currency>\n </Headline>\n <Text type={TextType.Small} color={Color.DarkGrey} inline className=\"u-marg-left--light u-clear-font-weight\">\n / {t(Translation.Step.Date.Child)}\n </Text>\n </div>\n )}\n </h2>\n )}\n </div>\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small} color={Color.Grey} inline className=\"u-nowrap\">\n {hotel?.enableCreditCardSurcharge ? t(Translation.Step.Addon.ExcludingFees) : t(Translation.Step.Addon.IncludingFeesAndTaxes)}\n </Text>\n </div>\n </div>\n <div className=\"u-marg-top--light u-flex justify-content-end u-w-100@l- flex-column flex-lg-row\">\n {addonBasketRow ? (\n <div className=\"u-marg-right--light@l u-marg-bottom--light@l-\">\n <BEButton onClick={onClickRemove} textColor={Color.White} backgroundColor={Color.Navy} wide>\n {t(Translation.Step.Addon.Remove)}\n </BEButton>\n </div>\n ) : (\n <></>\n )}\n <BEButton onClick={onClickAddToCartHandler} primary filled wide>\n {addonBasketRow ? t(Translation.Step.Addon.UpdateCart) : t(Translation.Step.Addon.AddToCart)}\n </BEButton>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default AddonCard;\n"]}
|
|
1
|
+
{"version":3,"file":"AddonCard.js","sourceRoot":"/","sources":["src/components/steps/addons/AddonCard.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport Check from 'icons/Check';\nimport React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport BEButton from '@/components/generic/BEButton';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport NumberIncrement from '@/components/generic/NumberIncrement';\nimport { IDefaultSelectOption, Select } from '@/components/generic/Select/Select';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Addon, AddonPricingType, PriceInfo } from '@/models/Addon/Addon';\nimport ImageProvider, { ImageSize } from '@/providers/ImageProvider';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\n\ninterface Props {\n addon: Addon;\n className?: string;\n}\n\nconst AddonCard = ({ addon, className }: Props) => {\n const { t } = useTranslation();\n\n const { hotel } = useCurrentHotel();\n const basketContext = React.useContext(BasketContext);\n\n const addonBasketRow = basketContext.getRowForAddon(addon);\n\n const [quantity, setQuantity] = useState(1);\n const [adultQuantity, setAdultQuantity] = useState(addonBasketRow ? addonBasketRow.getAdultQuantity() : 1);\n const [childQuantity, setChildQuantity] = useState(addonBasketRow ? addonBasketRow.getChildQuantity() : 0);\n\n const [priceInfo, setPriceInfo] = useState<PriceInfo>({ quantity: 1 });\n\n const [selectedDate, setSelectedDate] = useState(addonBasketRow ? addonBasketRow.getSelectedDate() : '');\n const [selectedTime, setSelectedTime] = useState(addonBasketRow ? addonBasketRow.getSelectedTime() : '');\n\n useEffect(() => {\n if (addonBasketRow) {\n setPriceInfo(addon.availability[addonBasketRow.getSelectedDate()] ?? addon.availability[addon.firstDate as string]);\n setSelectedDate(addonBasketRow.getSelectedDate() ?? addon.firstDate);\n setSelectedTime(addonBasketRow.getSelectedTime() ?? '');\n setQuantity(addonBasketRow.getQuantity());\n setAdultQuantity(addonBasketRow.getAdultQuantity());\n setChildQuantity(addonBasketRow.getChildQuantity());\n } else {\n setPriceInfo(addon.availability[addon.firstDate as string] ?? ([] as any));\n setSelectedDate(addon.firstDate as string);\n setSelectedTime(addon.availability[addon.firstDate as string]?.selectorTimes?.[0]?.value || '');\n }\n }, []);\n\n const setDate = (date: any) => {\n setPriceInfo(addon.availability[date]);\n setSelectedDate(date);\n setSelectedTime(addon.availability[date]?.selectorTimes?.[0]?.value || '');\n if (addon.availability[date].quantity < quantity) {\n setQuantity(addon.availability[date].quantity);\n }\n };\n\n const onClickAddToCartHandler = () => {\n basketContext.setAddonQuantities(\n addon,\n {\n quantity,\n adult: adultQuantity,\n child: childQuantity,\n },\n selectedDate,\n selectedTime\n );\n };\n\n const classes = classNames({\n '--active': !!basketContext.getRowForAddon(addon),\n });\n\n const onClickRemove = () => {\n const selectedAddon = basketContext.basketAddonRows.find((row) => {\n return row.getAddon().code === addon.code;\n });\n if (selectedAddon) basketContext.removeBasketAddonRow(selectedAddon);\n };\n\n const setQuantityOnChange = (val: any) => {\n setQuantity(val);\n };\n const setAdultsQuantityOnChange = (val: any) => {\n setAdultQuantity(val);\n };\n const setChildQuantityOnChange = (val: any) => {\n setChildQuantity(val);\n };\n const setDateOnChange = (selected: string) => {\n setDate(selected);\n };\n const setSelectedTimeOnChange = (selected: any) => {\n setSelectedTime(selected);\n };\n\n const addonConfigurations = [\n {\n name: 'Date',\n enabled: (addonBasketRow?.getNumberOfAvailableNights?.() as number) > 1 && !addonBasketRow?.getAddon().hideDatePicker,\n element: (\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={addon.selectorDates}\n value={selectedDate}\n onChange={setDateOnChange}\n keyName=\"value\"\n labelName=\"text\"\n className=\"u-flex align-items-center\"\n />\n ),\n },\n {\n name: 'Time',\n enabled: priceInfo?.selectorTimes?.length !== 0,\n element: (\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={priceInfo?.selectorTimes || []}\n value={selectedTime}\n onChange={setSelectedTimeOnChange}\n keyName=\"value\"\n labelName=\"text\"\n className=\"u-flex align-items-center\"\n />\n ),\n },\n {\n name: Translation.Step.Addon.Quantity,\n enabled: priceInfo?.price && priceInfo?.quantity > 1,\n element: <NumberIncrement number={quantity} min={1} max={priceInfo.quantity} onChange={setQuantityOnChange} />,\n },\n {\n name: Translation.Step.Date.Adult_plural,\n enabled: priceInfo?.adultPrice && addon.pricingType !== AddonPricingType.PER_ALL_PERSONS && addon.pricingType !== AddonPricingType.PER_ALL_PERSONS_PER_NIGHT,\n element: <NumberIncrement number={adultQuantity} min={0} max={priceInfo.quantity - childQuantity} onChange={setAdultsQuantityOnChange} />,\n },\n {\n name: Translation.Step.Date.Child_plural,\n enabled: priceInfo?.childPrice && addon.pricingType !== AddonPricingType.PER_ALL_PERSONS && addon.pricingType !== AddonPricingType.PER_ALL_PERSONS_PER_NIGHT,\n element: <NumberIncrement number={childQuantity} min={0} max={priceInfo.quantity - adultQuantity} onChange={setChildQuantityOnChange} />,\n },\n ];\n\n const pricingTypeSuffix = (() => {\n switch (addon.pricingType) {\n case AddonPricingType.PER_STAY:\n return t(Translation.Misc.QTY);\n case AddonPricingType.PER_PERSON:\n return t(Translation.Misc.Person);\n case AddonPricingType.PER_PERSON_OCCUPANCY_PER_NIGHT:\n case AddonPricingType.PER_PERSON_PER_NIGHT:\n return t(Translation.Misc.PersonPerNight);\n case AddonPricingType.PER_ADULT_OCCUPANCY_PER_NIGHT:\n case AddonPricingType.PER_CHILD_OCCUPANCY_PER_NIGHT:\n return t(Translation.Misc.AdultPerNight);\n case AddonPricingType.PER_NIGHT:\n case AddonPricingType.PER_QUANTITY_NAME_PER_NIGHT:\n return t(Translation.Misc.Night);\n case AddonPricingType.PER_ROOM_QUANTITY_PER_NIGHT:\n return t(Translation.Misc.PerRoomDay);\n }\n })();\n\n const addonCardImageStyle: any = {};\n if (addon.image) {\n addonCardImageStyle.backgroundImage = `url('${ImageProvider.resizeImage(addon.image, ImageSize.Original)}')`;\n } else {\n addonCardImageStyle.backgroundImage = `url('${hotel?.logo && ImageProvider.resizeImage(hotel?.logo as string, ImageSize.Original)}')`;\n addonCardImageStyle.backgroundSize = '50%';\n addonCardImageStyle.backgroundRepeat = 'no-repeat';\n }\n\n return (\n <div className={classNames('u-flex u-flex-flex-start u-rounded addon-card-wrapper', className, classes)} style={{ backgroundColor: Color.White }}>\n <div className=\"addon-card-image\" style={addonCardImageStyle} />\n <div className=\"u-marg-heavy u-marg@m- u-w-100@xl\">\n <div className=\"u-flex\">\n <Headline bold>{addon.name}</Headline>\n {addonBasketRow ? <Check /> : <></>}\n </div>\n <Text color={Color.DarkGrey} type={TextType.Small}>\n {addon.description}\n </Text>\n <div className=\"addon-card-wrapper--price u-flex u-flex-align-flex-end\">\n <div className=\"u-w-100\">\n {addonConfigurations.map((input) => {\n if (!input.enabled) {\n return;\n }\n\n return (\n <div key={input.name} className=\"u-flex justify-content-start u-marg-bot u-marg-top\">\n <Text className=\"u-mw-100\" bold>\n {t(input.name)}\n </Text>\n {input.element}\n </div>\n );\n })}\n\n {/* {addon.guaranteeDescription && (\n <>\n <h4 className=\"u-marg-bottom--light u-marg-top\">Guarantee</h4>\n <div className=\"u-marg-bot--heavy\">\n <Text type={TextType.Small}>{addon.guaranteeDescription}</Text>\n </div>\n </>\n )}\n {addon.cancelPenalty && (\n <>\n <h4 className=\"u-marg-bottom--light u-marg-top\">Cancellation Policy</h4>\n <div className=\"u-marg-bot--heavy\">\n <Text type={TextType.Small}>{addon.cancelPenalty}</Text>\n </div>\n </>\n )} */}\n </div>\n <div className=\"addon-card-wrapper--price-action\">\n <div className=\"u-flex u-flex-direction-column u-flex-align-flex-end\" style={{ alignSelf: 'flex-end' }}>\n <Text type={TextType.Small} color={Color.Navy} inline>\n {t(Translation.Misc.From)}\n </Text>\n <div className=\"room-details--content-price flex-align-items-baseline flex-row\">\n {priceInfo?.price && (\n <>\n <div className=\"u-flex align-items-end\">\n <Headline size=\"large\" bold lineHeight=\"1em\">\n <Currency hideDecimals>{priceInfo.price}</Currency>\n </Headline>\n <Text type={TextType.Small} color={Color.DarkGrey} inline className=\"u-marg-left--light u-clear-font-weight\">\n / {pricingTypeSuffix}\n </Text>\n </div>\n </>\n )}\n {(!!priceInfo?.adultPrice || !!priceInfo?.childPrice) && (\n <h2 className=\"u-marg-none d-flex flex-wrap justify-content-end\">\n {!!priceInfo.adultPrice && (\n <div className=\"d-flex align-items-end flex-row\">\n <Headline size=\"large\" bold lineHeight=\"1em\">\n <Currency>{priceInfo.adultPrice}</Currency>\n </Headline>\n <Text type={TextType.Small} color={Color.DarkGrey} inline className=\"u-marg-left--light u-clear-font-weight\">\n /{' '}\n {addon.pricingType === AddonPricingType.PER_ALL_PERSONS_PER_NIGHT\n ? t(Translation.Misc.AdultPerNight)\n : t(Translation.Step.Date.Adult)}\n </Text>\n </div>\n )}\n {!!priceInfo.adultPrice && !!priceInfo.childPrice && <br />}\n {!!priceInfo.childPrice && (\n <div className=\"d-flex align-items-end flex-row\">\n <Headline size=\"large\" bold lineHeight=\"1em\">\n <Currency>{priceInfo.childPrice}</Currency>\n </Headline>\n <Text type={TextType.Small} color={Color.DarkGrey} inline className=\"u-marg-left--light u-clear-font-weight\">\n /{' '}\n {addon.pricingType === AddonPricingType.PER_ALL_PERSONS_PER_NIGHT\n ? t(Translation.Misc.ChildPerNight)\n : t(Translation.Step.Date.Child)}\n </Text>\n </div>\n )}\n </h2>\n )}\n </div>\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small} color={Color.Grey} inline className=\"u-nowrap\">\n {hotel?.enableCreditCardSurcharge ? t(Translation.Step.Addon.ExcludingFees) : t(Translation.Step.Addon.IncludingFeesAndTaxes)}\n </Text>\n </div>\n </div>\n <div className=\"u-marg-top--light u-flex justify-content-end u-w-100@l- flex-column flex-lg-row\">\n {addonBasketRow ? (\n <div className=\"u-marg-right--light@l u-marg-bottom--light@l-\">\n <BEButton onClick={onClickRemove} textColor={Color.White} backgroundColor={Color.Navy} wide>\n {t(Translation.Step.Addon.Remove)}\n </BEButton>\n </div>\n ) : (\n <></>\n )}\n <BEButton onClick={onClickAddToCartHandler} primary filled wide>\n {addonBasketRow ? t(Translation.Step.Addon.UpdateCart) : t(Translation.Step.Addon.AddToCart)}\n </BEButton>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default AddonCard;\n"]}
|
|
@@ -632,6 +632,14 @@ function BasketContextWrapper(props) {
|
|
|
632
632
|
addonRow.setChildQuantity(basketRow.getChildren());
|
|
633
633
|
}
|
|
634
634
|
}
|
|
635
|
+
// TODO: More hackyness to handle RMS Per Person Fee requirements
|
|
636
|
+
if (addon.pricingType === Addon_1.AddonPricingType.PER_ALL_PERSONS || addon.pricingType === Addon_1.AddonPricingType.PER_ALL_PERSONS_PER_NIGHT) {
|
|
637
|
+
const basketRow = currentBasketRows === null || currentBasketRows === void 0 ? void 0 : currentBasketRows[0];
|
|
638
|
+
if (basketRow) {
|
|
639
|
+
addonRow.setAdultQuantity(basketRow.getAdults());
|
|
640
|
+
addonRow.setChildQuantity(basketRow.getChildren());
|
|
641
|
+
}
|
|
642
|
+
}
|
|
635
643
|
setBasketAddonRows([...basketAddonRows]);
|
|
636
644
|
},
|
|
637
645
|
removeBasketAddonRow: (row) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BasketContextWrapper.js","sourceRoot":"/","sources":["src/contexts/BasketContext/BasketContextWrapper.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n AuthenticationContextProvider,\n BasketContext,\n BasketContextType,\n BookingEngineContext,\n ErrorHandler,\n HotelOverridesContext,\n NotificationContext,\n} from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { API_DATE_FORMAT } from 'api/BaseAPI';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { BasketContextErrorHandler } from 'handlers/BasketContextErrorHandler';\nimport { useHistoryConsistentPush } from 'hooks/HistoryConsistentPush';\nimport { useUpdateQueryParameters } from 'hooks/UpdateQueryParameters';\nimport { EAppQueryParameters } from 'models/AppQueryParameters';\nimport React, { useCallback, useContext, useEffect, useReducer, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate } from 'react-router-dom';\nimport { BasketReducer } from 'reducers/BasketReducer';\nimport { defer, Observable, throwError, timer } from 'rxjs';\nimport { finalize, mergeMap, retryWhen } from 'rxjs/operators';\nimport { Translation } from 'translations/Translation';\n\nimport API from '@/api/BookingAPI';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport Text from '@/components/generic/Text';\nimport { MemberSignInModal } from '@/components/members/SignInModal/MemberSignInModal';\nimport { PromoCodeVerificationAlert } from '@/components/steps/room/UserSearchSummary/PromoCodeVerificationAlert';\nimport { useSignedInMember } from '@/hooks/useSignedInMember';\nimport { Addon, AddonPricingType } from '@/models/Addon/Addon';\nimport ReservationsDTO from '@/models/Api/ReservationsDTO';\nimport BasketAddonRow from '@/models/BasketAddonRow';\nimport BasketRow from '@/models/BasketRow';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport { RoomstaySession } from '@/models/RoomstaySession';\nimport StepAddon from '@/pages/steps/StepAddon/StepAddon';\nimport StepThanks from '@/pages/steps/StepThanks/StepThanks';\nimport InlineAddonStepFeature from '@/providers/feature/InlineAddonStepFeature';\nimport { usePromotionContainer } from '@/providers/PromotionProvider';\nimport DataLayer from '@/util/DataLayer';\nimport { debounce } from '@/util/Debounce';\nimport getStepRoom from '@/util/GetStepRoom';\nimport StepManager from '@/util/StepManager';\nimport StringHelper from '@/util/StringHelper';\nexport interface BasketContextWrapperProps {\n children: React.ReactNode;\n}\n\nexport function BasketContextWrapper(props: BasketContextWrapperProps) {\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n const updateQueryParams = useUpdateQueryParameters();\n const navigate = useNavigate();\n const historyConsistentPush = useHistoryConsistentPush();\n const { signedInUser, isExternalMemberHotel, memberNumber, memberOnlyModalPromotion } = useSignedInMember();\n\n const notifications = useContext(NotificationContext);\n const beContext = useContext(BookingEngineContext);\n\n const { showPromoCodeAlert } = useContext(HotelOverridesContext);\n\n const initialSession = beContext?.engine?.getInitialSession();\n\n const [currentBasketRows, basketRowReducer] = useReducer(BasketReducer, initialSession?.basketRows ?? []);\n\n const [selectedBasketRow, setSelectedBasketRow] = useState<BasketRow | null>(null);\n const [basketAddonRows, setBasketAddonRows] = useState<BasketAddonRow[]>([]);\n const [isLoadingPriceQuote, setIsLoadingPriceQuote] = useState(false);\n\n let loadedStartDate: dayjs.Dayjs | null = null;\n let loadedEndDate: dayjs.Dayjs | null = null;\n\n if (initialSession?.basketRows?.length) {\n loadedStartDate = initialSession.basketRows[0].getStartDate();\n loadedEndDate = initialSession.basketRows[0].getEndDate();\n } else {\n if (initialSession?.startDate) {\n loadedStartDate = initialSession.startDate;\n }\n\n if (initialSession?.endDate) {\n loadedEndDate = initialSession.endDate;\n }\n }\n\n const [isDatePickerOpen, setIsDatePickerOpen] = useState<boolean>(false);\n const [startDate, setStartDate] = useState<dayjs.Dayjs | null>(loadedStartDate ?? null);\n const [endDate, setEndDate] = useState<dayjs.Dayjs | null>(loadedEndDate ?? null);\n\n const [hasCheckedOut, setHasCheckedOut] = useState(false);\n const [reservationData, setReservationData] = useState<ReservationsDTO | null>(initialSession?.reservation || null);\n\n const [knownErrorPromoCodes, setKnownErrorPromoCodes] = useState<string[]>([]);\n\n BasketContextErrorHandler.handleAvailabilityWarnings = (warnings: string[]) => {\n warnings.map((warning) => {\n if (warning.toLowerCase().startsWith('invalid promo code')) {\n const promoCode = warning.substr(20);\n\n currentBasketRows.forEach((row) => {\n if (promoCode.toLowerCase() === row.getPromoCode().toLowerCase()) {\n row.setPromoCodeStatus('invalid');\n workingContext.updateBasketRow(row, false);\n }\n });\n\n if (!knownErrorPromoCodes.includes(promoCode.toUpperCase())) {\n setKnownErrorPromoCodes((oldCodes) => {\n return [...oldCodes, promoCode.toUpperCase()];\n });\n }\n } else {\n ErrorHandler.add({\n message: warning,\n });\n }\n });\n };\n\n BasketContextErrorHandler.handlePromoSuccess = (promo: string) => {\n currentBasketRows.forEach((row) => {\n if (row.getPromoCode() === promo && row.getPromoCode() && row.getPromoCodeStatus() !== 'valid') {\n row.setPromoCodeStatus('valid');\n workingContext.updateBasketRow(row, false);\n }\n });\n };\n\n const debounceUseEffect = useCallback(\n debounce(() => {\n if (!startDate || !endDate) {\n return;\n }\n\n DataLayer.instance.sendDateSelection({\n startDate,\n endDate,\n adult: selectedBasketRow?.getAdults(),\n children: selectedBasketRow?.getChildren(),\n infant: selectedBasketRow?.getInfants(),\n });\n\n beContext.sessionProvider?.updateSession({\n startDate,\n endDate,\n });\n\n // TODO re-visit this as we don't want to set dates for everything constantly\n workingContext.getAllDatelessRows().forEach((row: BasketRow) => {\n row.setStartDate(startDate);\n row.setEndDate(endDate);\n\n workingContext.updateBasketRow(row);\n });\n\n //When trying to call row.discardGuestsState() in somewhere, we got conflicted here with BasketRow.setStartDate& BasketRow.setEndDate, it set back to previous startDate/endDate\n //Use debounceUseEffect to fix it\n if (selectedBasketRow) {\n selectedBasketRow.setStartDate(startDate);\n selectedBasketRow.setEndDate(endDate);\n\n workingContext.updateBasketRow(selectedBasketRow, false);\n } else if (currentBasketRows.length === 1) {\n const onlyBasketRow = currentBasketRows[0];\n onlyBasketRow.setStartDate(startDate);\n onlyBasketRow.setEndDate(endDate);\n\n workingContext.updateBasketRow(onlyBasketRow, false);\n }\n }, 500),\n [startDate, endDate]\n );\n\n useEffect(() => {\n debounceUseEffect();\n }, [debounceUseEffect]);\n\n useEffect(() => {\n if (signedInUser) {\n const promoCode = signedInUser.promoCode || (hotel?.memberOnlyPromoCode as string);\n\n // Apply promo code\n if (promoCode && !memberOnlyModalPromotion?.memberOnlyDisableDefaultPromo) {\n currentBasketRows?.forEach((row) => {\n row.setPromoCode(promoCode);\n updateBasketRow(row);\n });\n }\n }\n }, [signedInUser]);\n\n useEffect(() => {\n beContext.sessionProvider?.updateSession({ basketRows: currentBasketRows });\n }, [currentBasketRows, selectedBasketRow]);\n\n const checkAndApplyMemberOnlyPromo = (row: BasketRow, skipUpdate = false) => {\n if (row && hotel?.memberOnlyPromoCode && signedInUser && !row.getPromoCode()) {\n row.setPromoCode(hotel.memberOnlyPromoCode);\n\n if (!skipUpdate) {\n workingContext.updateBasketRow(row);\n }\n }\n };\n\n const returnAggregationAndTranslation = (reduction: ((row: BasketRow) => number) | number, translation?: string) => {\n const count = typeof reduction === 'number' ? reduction : currentBasketRows.reduce((total, row) => total + reduction(row), 0);\n\n if (translation) {\n return StringHelper.pluralWithDictAndCount(count, translation, t);\n } else {\n return count;\n }\n };\n\n const getNextAvailableBasketRow = (deletedBasketRow?: BasketRow): BasketRow | null => {\n if (!currentBasketRows.length) return null;\n // Filter out the excluded basket row if provided\n const filteredRows = deletedBasketRow ? currentBasketRows.filter((row) => row.getID() !== deletedBasketRow.getID()) : currentBasketRows;\n\n // Find the first row that does not have a rate assigned\n const availableRow = filteredRows.find((row) => !row.getRate());\n\n // Return a row without a rate if found\n // If no such row exists , return the last row in the list\n return availableRow ?? filteredRows[filteredRows.length - 1];\n };\n\n const updateQueryParameters = (row: BasketRow | null) => {\n if (!row) return;\n const queryParameters: Record<string, string> = {};\n if (row.getEndDate()) {\n let startDate = selectedBasketRow?.getStartDate();\n if (!startDate) {\n startDate = row.getStartDate();\n }\n queryParameters[EAppQueryParameters.Arrive] = startDate.format(API_DATE_FORMAT);\n queryParameters[EAppQueryParameters.Depart] = row.getEndDate().format(API_DATE_FORMAT);\n }\n if (row.getPromoCode()) queryParameters[EAppQueryParameters.PromoCode] = row.getPromoCode();\n if (row.getChildren() !== undefined) queryParameters[EAppQueryParameters.Children] = row.getChildren().toString();\n if (row.getAdults() !== undefined) queryParameters[EAppQueryParameters.Adults] = row.getAdults().toString();\n\n updateQueryParams(queryParameters);\n };\n\n const updateBasketRow = (row: BasketRow, updateGlobalDates = true) => {\n updateQueryParameters(row);\n\n if (updateGlobalDates && row.getID() === selectedBasketRow?.getID()) {\n setStartDate(row.getStartDate());\n setEndDate(row.getEndDate());\n }\n\n // Here we check if there is no promocode on the row. If there isn't this function will check for existing member details\n // and automatically apply a member only promocode\n checkAndApplyMemberOnlyPromo(row, true);\n\n basketRowReducer({ method: 'Update', row });\n };\n\n const syncSelectedDateRange = (row?: BasketRow) => {\n if (!row) return;\n if ((!row.getStartDate() || !row.getEndDate()) && startDate && endDate) {\n row.setStartDate(startDate);\n row.setEndDate(endDate);\n } else if (!startDate && !endDate && row.getStartDate() && row.getEndDate()) {\n setStartDate(row.getStartDate());\n setEndDate(row.getEndDate());\n }\n };\n\n const { loadedPromotion } = usePromotionContainer({ selectedBasketRow: selectedBasketRow as BasketRow, updateBasketRow });\n\n const genericRetryStrategy =\n ({\n maxRetryAttempts = 3,\n scalingDuration = 0,\n }: {\n maxRetryAttempts?: number;\n scalingDuration?: number;\n } = {}) =>\n (attempts: Observable<any>) => {\n return attempts.pipe(\n mergeMap((error, i) => {\n const retryAttempt = i + 1;\n if (retryAttempt > maxRetryAttempts) {\n return throwError(error);\n }\n console.log(`Attempt ${retryAttempt}: retrying in ${scalingDuration}ms`);\n return timer(scalingDuration);\n }),\n finalize(() => console.log('We are done!'))\n );\n };\n\n const workingContext: BasketContextType = {\n startDate: startDate as Dayjs,\n endDate: endDate as Dayjs,\n\n selectedBasketRow: selectedBasketRow as BasketRow,\n currentBasketRows,\n basketAddonRows,\n\n hasCheckedOut,\n reservationData: reservationData as ReservationsDTO,\n isLoadingPriceQuote,\n\n loadedPromotion,\n\n /**\n * Adds a new basket row and applies relevant updates:\n * - Synchronizes the selected date range.\n * - Applies any applicable member-only promotions.\n * - Ensures proper selection logic for the basket row.\n *\n * Selection logic:\n * - If the basket is empty, the newly added row is automatically selected.\n * - If a row is already selected:\n * - If the selected row has an assigned rate, update the selection to the new row.\n * - Otherwise, keep the current selection (allowing continued editing of the existing row).\n * - If no row is selected, set the new row as the selected row.\n *\n * @param {BasketRow} row - The basket row to add.\n */\n addBasketRow: (row: BasketRow) => {\n syncSelectedDateRange(row);\n checkAndApplyMemberOnlyPromo(row);\n\n // Determine if the basket is currently empty\n const isEmptyRows = !currentBasketRows.length;\n if (isEmptyRows) {\n // If empty, set the newly added row as the selected basket row\n setSelectedBasketRow(row);\n } else {\n if (selectedBasketRow) {\n // Determine if the currently selected row has an assigned rate\n const isSelectedRowAssignedRate = selectedBasketRow && selectedBasketRow.getRate();\n if (isSelectedRowAssignedRate) {\n // If the selected row has a rate, update the selection to the new row\n setSelectedBasketRow(row);\n }\n } else {\n // If no row is currently selected, set the new row as the selected basket row\n setSelectedBasketRow(row);\n }\n }\n basketRowReducer({ method: 'Add', row });\n },\n\n initBasketRows: (rows: BasketRow[]) => {\n const firstRow = rows[0];\n syncSelectedDateRange(firstRow);\n setSelectedBasketRow(firstRow);\n basketRowReducer({\n method: 'Init',\n rows: rows,\n });\n },\n\n //TODO: This function needs to be refactored to simplify a lot of this logic, and move notification raising to use the Event Manager instead\n addRate: async (rate: RoomRate, notify = true) => {\n let basketRow: BasketRow | null = null;\n let translationString: string;\n\n let addons = [];\n\n if (selectedBasketRow) {\n selectedBasketRow.setPreGuestsState();\n basketRow = selectedBasketRow;\n if (selectedBasketRow.getRate()) {\n translationString = Translation.Misc.RoomUpdatedNotification;\n } else {\n if (!selectedBasketRow.getStartDate() && selectedBasketRow.getEndDate()) {\n selectedBasketRow.setStartDate(startDate as Dayjs);\n selectedBasketRow.setEndDate(endDate as Dayjs);\n }\n\n translationString = Translation.Misc.RoomAddedNotification;\n }\n } else {\n if (!startDate || !endDate) {\n console.error('room selected with no date values.');\n return;\n }\n\n basketRow = new BasketRow(rate);\n\n basketRow.setStartDate(startDate);\n basketRow.setEndDate(endDate);\n\n translationString = Translation.Misc.RoomAddedNotification;\n }\n\n if (InlineAddonStepFeature.isActive()) {\n basketRow.setRate(rate); // TODO: Fix quick hack to make the Addons load\n addons = await API.Addons.findAddons([basketRow], hotel?.hotelID as string);\n }\n\n basketRow.setAuxiliaryFilter(beContext.currentGroupedRoomFilters);\n beContext.setCurrentGroupedRoomFilters({});\n\n basketRowReducer({ method: 'AddRate', rate, row: basketRow });\n\n try {\n DataLayer.instance.sendRoomRateAddToCart(rate, basketRow.getNumberOfDays(), startDate ?? basketRow.getStartDate(), endDate ?? basketRow.getEndDate());\n } catch (ex) {\n console.log('Failed recording basket Add event');\n }\n\n if (notify) {\n notifications.addNotification({\n icon: IconType.Bed,\n children: (\n <Text inline>\n {t(translationString)} <strong className=\"u-marg-left--light\">{rate.getRoom().name}</strong>\n </Text>\n ),\n });\n }\n\n const nextAvailable = getNextAvailableBasketRow();\n if (!nextAvailable?.getRate()) {\n // If the next available row does not have a rate assigned,\n // set it as the selected basket row to allow rate assignment.\n setSelectedBasketRow(nextAvailable);\n } else {\n // If all rows already have a rate assigned\n // Set the selected basket row to null, ensuring that no row is selected for editing.\n setSelectedBasketRow(null);\n\n // Determine whether the next step is an add-on selection step.\n const isNextStepAddon = StepManager.getNextStepUrl(getStepRoom()) === StepAddon.getStepUrl();\n\n if (isNextStepAddon) {\n if (addons.length) {\n historyConsistentPush(StepAddon.getStepUrl());\n } else {\n historyConsistentPush(StepManager.getNextStepUrl(StepAddon));\n }\n } else {\n historyConsistentPush(StepManager.getNextStepUrl(getStepRoom()));\n }\n }\n },\n\n getBasketQuoteDetails: (preventApplyingOutcome) => {\n const maxRetryAttempts = 5;\n\n if (!hotel || !hotel?.requireDeposit) {\n return false;\n }\n\n setIsLoadingPriceQuote(true);\n\n // Clear currently assigned quote details\n // If we're fetching basket row information the currently held info should be disregarded.\n currentBasketRows.forEach((row) => {\n if (row.quoteDetails) {\n row.quoteDetails = undefined;\n updateBasketRow(row);\n }\n });\n\n const getData = () =>\n defer(() => API.Reservation.getPriceQuote(hotel.hotelID, currentBasketRows, isExternalMemberHotel ? memberNumber : undefined)).pipe(\n retryWhen(\n genericRetryStrategy({\n maxRetryAttempts: maxRetryAttempts,\n })\n )\n );\n\n const retryableObservable = getData();\n\n retryableObservable.subscribe(\n (quote) => {\n if (quote === null) return;\n\n if (!preventApplyingOutcome()) {\n // User has left the Confirmation step before the quote was ready, we'll stop here instead of updating the basket.\n // If we don't stop here, the user will be redirected back to the Confirmation step.\n setIsLoadingPriceQuote(false);\n return;\n }\n\n for (const quoteRow of quote.rows) {\n const basketRow = currentBasketRows.find((row) => row.getID() === quoteRow.rowId);\n\n if (!basketRow) {\n console.warn('API Returned unfamiliar row ID', quoteRow.rowId);\n continue;\n }\n\n basketRow.quoteDetails = quoteRow;\n updateBasketRow(basketRow);\n }\n },\n (error: any) => {\n console.log(error);\n console.log(`Error!: Retried ${maxRetryAttempts} times then quit!`);\n },\n () => {\n setIsLoadingPriceQuote(false);\n }\n );\n },\n\n /**\n * Filter global list of rooms based on their validity.\n *\n * Useful for getting a complete summary of all the rooms.\n */\n getAllValidRows: () => {\n return currentBasketRows.filter((item) => item.isValid());\n },\n\n getAllDatelessRows: () => {\n return currentBasketRows.filter((item) => !item.getStartDate() || !item.getEndDate());\n },\n\n getNumberOfAdults: (withTranslation = false) => {\n return returnAggregationAndTranslation((row) => row.getAdults(), withTranslation ? Translation.Step.Date.Adult : undefined);\n },\n\n getNumberOfChildren: (withTranslation = false) => {\n return returnAggregationAndTranslation((row) => row.getChildren(), withTranslation ? Translation.Step.Date.Child : undefined);\n },\n\n getNumberOfInfants: (withTranslation = false) => {\n return returnAggregationAndTranslation((row) => row.getInfants(), withTranslation ? Translation.Step.Date.Infant : undefined);\n },\n\n getNumberOfRooms: (withTranslation = false) => {\n return returnAggregationAndTranslation(currentBasketRows.length, withTranslation ? Translation.Step.Date.Room : undefined);\n },\n\n getTotalPrice: () => {\n let totalPrice = returnAggregationAndTranslation((row) => (row.isValid() ? (row.getRate()?.getTotalPrice() as number) : 0)) as number;\n\n // If the hotel requires a deposit, and enableCreditCardSurchase is false, we need to add the deposit fees to the total price.\n if (hotel?.requireDeposit && !hotel?.enableCreditCardSurcharge) {\n const depositFees = returnAggregationAndTranslation((row) => (row.quoteDetails ? (row.quoteDetails?.totalFees as number) : 0)) as number;\n totalPrice += depositFees;\n }\n\n basketAddonRows.forEach((row) => {\n totalPrice += row.getTotalPrice();\n });\n\n return totalPrice;\n },\n\n getTotalDeposit: () => {\n const totalDeposit = returnAggregationAndTranslation((row) => (row.quoteDetails ? (row.quoteDetails?.totalDeposit as number) : 0)) as number;\n return totalDeposit;\n },\n\n getTotalFees: () => {\n let totalFees = returnAggregationAndTranslation((row) => (row.isValid() ? (row.getRate()?.getTotalFees() as number) : 0)) as number;\n\n if (totalFees == 0 && hotel?.requireDeposit) {\n // Hotel may have credit card surcharges disabled, but they could still be included as a part of the quote.\n totalFees = returnAggregationAndTranslation((row) => (row.quoteDetails ? (row.quoteDetails?.totalFees as number) : 0)) as number;\n }\n\n basketAddonRows.forEach((row) => {\n totalFees += row.getTotalFees();\n });\n\n return totalFees;\n },\n\n getTotalPayNow: () => {\n if (hotel?.requireDeposit) {\n const depositFees = returnAggregationAndTranslation((row) => (row.quoteDetails ? (row.quoteDetails?.totalFees as number) : 0)) as number;\n return workingContext.getTotalDeposit() + depositFees;\n }\n\n return workingContext.getTotalPrice();\n },\n\n /**\n * Pops the provided row from the current basket array\n */\n removeBasketRow: (row: BasketRow) => {\n const rowsBeforeRemoval = currentBasketRows.length;\n\n basketRowReducer({ method: 'Remove', row });\n\n if (selectedBasketRow && row.getID() === selectedBasketRow.getID()) {\n const availableBasketRow = getNextAvailableBasketRow(row);\n if (availableBasketRow) {\n setStartDate(availableBasketRow.getStartDate());\n setEndDate(availableBasketRow.getEndDate());\n }\n setSelectedBasketRow(availableBasketRow);\n }\n\n if (rowsBeforeRemoval === 1) {\n workingContext.addBasketRow(new BasketRow());\n }\n },\n\n clearBasketRows: (confirm: boolean) => {\n if (confirm) {\n basketRowReducer({ method: 'Clear' });\n }\n },\n\n updateBasketRow,\n\n /**\n * Selects the given basket row and updates all relevant inputs (e.g., start date and end date).\n * - If the provided row is valid, it updates the selected row and sets the corresponding dates.\n * - If the row is null or invalid, it attempts to select the next available basket row.\n *\n * @param {BasketRow | null} row - The basket row to be selected.\n * @returns {Promise<void>} A promise that resolves when the selection is complete.\n */\n selectBasketRow: async (row: BasketRow | null) => {\n if (row && row.isValid()) {\n setStartDate(row.getStartDate());\n setEndDate(row.getEndDate());\n // Update the selected basket row\n setSelectedBasketRow(row);\n } else {\n // If the row is invalid or null, select the next available basket row\n setSelectedBasketRow(getNextAvailableBasketRow());\n }\n },\n\n setStartDate,\n setEndDate,\n\n booked: async (data: ReservationsDTO, requestData: RoomstaySession['reservationRequest']) => {\n const updateObject: Partial<RoomstaySession> = { reservation: data };\n\n if (requestData) {\n updateObject.reservationRequest = requestData;\n }\n\n await beContext.sessionProvider?.updateSessionAsync(updateObject);\n setReservationData(data);\n },\n\n rollback: () => {\n beContext.sessionProvider?.updateSession({\n reservation: undefined,\n });\n setReservationData(null);\n },\n\n checkedOut: (data: ReservationsDTO) => {\n setHasCheckedOut(true);\n setReservationData(data);\n setSelectedBasketRow(null);\n basketRowReducer({ method: 'Clear' });\n\n const row = new BasketRow();\n row.setStartDate(dayjs().add(1, 'day'));\n row.setEndDate(dayjs().add(2, 'day'));\n\n basketRowReducer({ method: 'Add', row });\n setBasketAddonRows([]);\n\n const sessionProvider = beContext?.engine?.getSessionProvider();\n sessionProvider.deleteSession();\n sessionProvider?.initialize(undefined, beContext?.engine?.getSource());\n const params = new URLSearchParams(window.location.search);\n params.delete('planpay_checkout_id');\n window.history.replaceState({}, '', `${window.location.pathname}?${params}`);\n navigate(StepThanks.getStepUrl());\n },\n\n finish: () => {\n setReservationData(null);\n setHasCheckedOut(false);\n },\n\n /**\n * Set the selected basket row to null, ensuring that no row is selected for editing.\n */\n clearSelectedRates: () => {\n setSelectedBasketRow(null);\n },\n\n getRowForAddon: (selectedAddon) => {\n if (selectedAddon === undefined) {\n return;\n }\n return basketAddonRows.find((r) => r.getAddon()?.code === selectedAddon?.code);\n },\n\n setAddonQuantities: (addon: Addon, quantities: { quantity: number; adult: number; child: number }, selectedDate: string, selectedTime: string) => {\n let addonRow = basketAddonRows.find((r) => r.getAddon()?.code === addon.code);\n if (addonRow === undefined) {\n addonRow = new BasketAddonRow(addon);\n basketAddonRows.push(addonRow);\n }\n\n addonRow.setQuantity(quantities.quantity ?? 0);\n addonRow.setAdultQuantity(quantities.adult ?? 0);\n addonRow.setChildQuantity(quantities.child ?? 0);\n addonRow.setSelectedDate(selectedDate);\n addonRow.setSelectedTime(addon.availability[selectedDate].selectorTimes ? selectedTime : undefined);\n\n // TODO: Quick hack to fix Synxis Basic Addon quantities.\n if (addon.pricingType === AddonPricingType.PER_ADULT_OCCUPANCY_PER_NIGHT) {\n // TODO: Because all addons only apply to first room, we can select the 0th from the list.\n const basketRow = currentBasketRows?.[0];\n if (basketRow) {\n addonRow.setAdultQuantity(basketRow.getAdults());\n }\n }\n\n if (addon.pricingType === AddonPricingType.PER_CHILD_OCCUPANCY_PER_NIGHT) {\n // TODO: Because all addons only apply to first room, we can select the 0th from the list.\n const basketRow = currentBasketRows?.[0];\n if (basketRow) {\n addonRow.setChildQuantity(basketRow.getChildren());\n }\n }\n\n setBasketAddonRows([...basketAddonRows]);\n },\n\n removeBasketAddonRow: (row: BasketAddonRow) => {\n setBasketAddonRows((oldRows) => oldRows.filter((item) => item.getID() !== row.getID()));\n },\n\n /**\n * Attempts to select the next available basket row that does not have a rate assigned.\n * If such a row is found, it updates the selected basket row and returns it.\n * Otherwise, it does nothing.\n *\n * @returns {BasketRow | undefined} The selected basket row without a rate, or undefined if none is found.\n */\n attemptSelectUnfilledRow: (): BasketRow | undefined => {\n const row = getNextAvailableBasketRow();\n if (row && !row?.getRate()) {\n // Select the first available row without a rate and update the selected basket row\n setSelectedBasketRow(row);\n return row;\n }\n // No available unfilled row found, return undefined\n },\n // Callback triggered when the DatePicker open state changes.\n onDatePickerOpenChange: (isOpen: boolean) => {\n setIsDatePickerOpen(isOpen);\n },\n // Indicates whether the DatePicker is currently open.\n isDatePickerOpen: isDatePickerOpen,\n };\n\n return (\n <BasketContext.Provider value={workingContext}>\n <AuthenticationContextProvider>\n {props.children}\n <MemberSignInModal />\n {showPromoCodeAlert && <PromoCodeVerificationAlert selectedBasketRow={selectedBasketRow} />}\n </AuthenticationContextProvider>\n </BasketContext.Provider>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BasketContextWrapper.js","sourceRoot":"/","sources":["src/contexts/BasketContext/BasketContextWrapper.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n AuthenticationContextProvider,\n BasketContext,\n BasketContextType,\n BookingEngineContext,\n ErrorHandler,\n HotelOverridesContext,\n NotificationContext,\n} from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { API_DATE_FORMAT } from 'api/BaseAPI';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { BasketContextErrorHandler } from 'handlers/BasketContextErrorHandler';\nimport { useHistoryConsistentPush } from 'hooks/HistoryConsistentPush';\nimport { useUpdateQueryParameters } from 'hooks/UpdateQueryParameters';\nimport { EAppQueryParameters } from 'models/AppQueryParameters';\nimport React, { useCallback, useContext, useEffect, useReducer, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate } from 'react-router-dom';\nimport { BasketReducer } from 'reducers/BasketReducer';\nimport { defer, Observable, throwError, timer } from 'rxjs';\nimport { finalize, mergeMap, retryWhen } from 'rxjs/operators';\nimport { Translation } from 'translations/Translation';\n\nimport API from '@/api/BookingAPI';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport Text from '@/components/generic/Text';\nimport { MemberSignInModal } from '@/components/members/SignInModal/MemberSignInModal';\nimport { PromoCodeVerificationAlert } from '@/components/steps/room/UserSearchSummary/PromoCodeVerificationAlert';\nimport { useSignedInMember } from '@/hooks/useSignedInMember';\nimport { Addon, AddonPricingType } from '@/models/Addon/Addon';\nimport ReservationsDTO from '@/models/Api/ReservationsDTO';\nimport BasketAddonRow from '@/models/BasketAddonRow';\nimport BasketRow from '@/models/BasketRow';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport { RoomstaySession } from '@/models/RoomstaySession';\nimport StepAddon from '@/pages/steps/StepAddon/StepAddon';\nimport StepThanks from '@/pages/steps/StepThanks/StepThanks';\nimport InlineAddonStepFeature from '@/providers/feature/InlineAddonStepFeature';\nimport { usePromotionContainer } from '@/providers/PromotionProvider';\nimport DataLayer from '@/util/DataLayer';\nimport { debounce } from '@/util/Debounce';\nimport getStepRoom from '@/util/GetStepRoom';\nimport StepManager from '@/util/StepManager';\nimport StringHelper from '@/util/StringHelper';\nexport interface BasketContextWrapperProps {\n children: React.ReactNode;\n}\n\nexport function BasketContextWrapper(props: BasketContextWrapperProps) {\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n const updateQueryParams = useUpdateQueryParameters();\n const navigate = useNavigate();\n const historyConsistentPush = useHistoryConsistentPush();\n const { signedInUser, isExternalMemberHotel, memberNumber, memberOnlyModalPromotion } = useSignedInMember();\n\n const notifications = useContext(NotificationContext);\n const beContext = useContext(BookingEngineContext);\n\n const { showPromoCodeAlert } = useContext(HotelOverridesContext);\n\n const initialSession = beContext?.engine?.getInitialSession();\n\n const [currentBasketRows, basketRowReducer] = useReducer(BasketReducer, initialSession?.basketRows ?? []);\n\n const [selectedBasketRow, setSelectedBasketRow] = useState<BasketRow | null>(null);\n const [basketAddonRows, setBasketAddonRows] = useState<BasketAddonRow[]>([]);\n const [isLoadingPriceQuote, setIsLoadingPriceQuote] = useState(false);\n\n let loadedStartDate: dayjs.Dayjs | null = null;\n let loadedEndDate: dayjs.Dayjs | null = null;\n\n if (initialSession?.basketRows?.length) {\n loadedStartDate = initialSession.basketRows[0].getStartDate();\n loadedEndDate = initialSession.basketRows[0].getEndDate();\n } else {\n if (initialSession?.startDate) {\n loadedStartDate = initialSession.startDate;\n }\n\n if (initialSession?.endDate) {\n loadedEndDate = initialSession.endDate;\n }\n }\n\n const [isDatePickerOpen, setIsDatePickerOpen] = useState<boolean>(false);\n const [startDate, setStartDate] = useState<dayjs.Dayjs | null>(loadedStartDate ?? null);\n const [endDate, setEndDate] = useState<dayjs.Dayjs | null>(loadedEndDate ?? null);\n\n const [hasCheckedOut, setHasCheckedOut] = useState(false);\n const [reservationData, setReservationData] = useState<ReservationsDTO | null>(initialSession?.reservation || null);\n\n const [knownErrorPromoCodes, setKnownErrorPromoCodes] = useState<string[]>([]);\n\n BasketContextErrorHandler.handleAvailabilityWarnings = (warnings: string[]) => {\n warnings.map((warning) => {\n if (warning.toLowerCase().startsWith('invalid promo code')) {\n const promoCode = warning.substr(20);\n\n currentBasketRows.forEach((row) => {\n if (promoCode.toLowerCase() === row.getPromoCode().toLowerCase()) {\n row.setPromoCodeStatus('invalid');\n workingContext.updateBasketRow(row, false);\n }\n });\n\n if (!knownErrorPromoCodes.includes(promoCode.toUpperCase())) {\n setKnownErrorPromoCodes((oldCodes) => {\n return [...oldCodes, promoCode.toUpperCase()];\n });\n }\n } else {\n ErrorHandler.add({\n message: warning,\n });\n }\n });\n };\n\n BasketContextErrorHandler.handlePromoSuccess = (promo: string) => {\n currentBasketRows.forEach((row) => {\n if (row.getPromoCode() === promo && row.getPromoCode() && row.getPromoCodeStatus() !== 'valid') {\n row.setPromoCodeStatus('valid');\n workingContext.updateBasketRow(row, false);\n }\n });\n };\n\n const debounceUseEffect = useCallback(\n debounce(() => {\n if (!startDate || !endDate) {\n return;\n }\n\n DataLayer.instance.sendDateSelection({\n startDate,\n endDate,\n adult: selectedBasketRow?.getAdults(),\n children: selectedBasketRow?.getChildren(),\n infant: selectedBasketRow?.getInfants(),\n });\n\n beContext.sessionProvider?.updateSession({\n startDate,\n endDate,\n });\n\n // TODO re-visit this as we don't want to set dates for everything constantly\n workingContext.getAllDatelessRows().forEach((row: BasketRow) => {\n row.setStartDate(startDate);\n row.setEndDate(endDate);\n\n workingContext.updateBasketRow(row);\n });\n\n //When trying to call row.discardGuestsState() in somewhere, we got conflicted here with BasketRow.setStartDate& BasketRow.setEndDate, it set back to previous startDate/endDate\n //Use debounceUseEffect to fix it\n if (selectedBasketRow) {\n selectedBasketRow.setStartDate(startDate);\n selectedBasketRow.setEndDate(endDate);\n\n workingContext.updateBasketRow(selectedBasketRow, false);\n } else if (currentBasketRows.length === 1) {\n const onlyBasketRow = currentBasketRows[0];\n onlyBasketRow.setStartDate(startDate);\n onlyBasketRow.setEndDate(endDate);\n\n workingContext.updateBasketRow(onlyBasketRow, false);\n }\n }, 500),\n [startDate, endDate]\n );\n\n useEffect(() => {\n debounceUseEffect();\n }, [debounceUseEffect]);\n\n useEffect(() => {\n if (signedInUser) {\n const promoCode = signedInUser.promoCode || (hotel?.memberOnlyPromoCode as string);\n\n // Apply promo code\n if (promoCode && !memberOnlyModalPromotion?.memberOnlyDisableDefaultPromo) {\n currentBasketRows?.forEach((row) => {\n row.setPromoCode(promoCode);\n updateBasketRow(row);\n });\n }\n }\n }, [signedInUser]);\n\n useEffect(() => {\n beContext.sessionProvider?.updateSession({ basketRows: currentBasketRows });\n }, [currentBasketRows, selectedBasketRow]);\n\n const checkAndApplyMemberOnlyPromo = (row: BasketRow, skipUpdate = false) => {\n if (row && hotel?.memberOnlyPromoCode && signedInUser && !row.getPromoCode()) {\n row.setPromoCode(hotel.memberOnlyPromoCode);\n\n if (!skipUpdate) {\n workingContext.updateBasketRow(row);\n }\n }\n };\n\n const returnAggregationAndTranslation = (reduction: ((row: BasketRow) => number) | number, translation?: string) => {\n const count = typeof reduction === 'number' ? reduction : currentBasketRows.reduce((total, row) => total + reduction(row), 0);\n\n if (translation) {\n return StringHelper.pluralWithDictAndCount(count, translation, t);\n } else {\n return count;\n }\n };\n\n const getNextAvailableBasketRow = (deletedBasketRow?: BasketRow): BasketRow | null => {\n if (!currentBasketRows.length) return null;\n // Filter out the excluded basket row if provided\n const filteredRows = deletedBasketRow ? currentBasketRows.filter((row) => row.getID() !== deletedBasketRow.getID()) : currentBasketRows;\n\n // Find the first row that does not have a rate assigned\n const availableRow = filteredRows.find((row) => !row.getRate());\n\n // Return a row without a rate if found\n // If no such row exists , return the last row in the list\n return availableRow ?? filteredRows[filteredRows.length - 1];\n };\n\n const updateQueryParameters = (row: BasketRow | null) => {\n if (!row) return;\n const queryParameters: Record<string, string> = {};\n if (row.getEndDate()) {\n let startDate = selectedBasketRow?.getStartDate();\n if (!startDate) {\n startDate = row.getStartDate();\n }\n queryParameters[EAppQueryParameters.Arrive] = startDate.format(API_DATE_FORMAT);\n queryParameters[EAppQueryParameters.Depart] = row.getEndDate().format(API_DATE_FORMAT);\n }\n if (row.getPromoCode()) queryParameters[EAppQueryParameters.PromoCode] = row.getPromoCode();\n if (row.getChildren() !== undefined) queryParameters[EAppQueryParameters.Children] = row.getChildren().toString();\n if (row.getAdults() !== undefined) queryParameters[EAppQueryParameters.Adults] = row.getAdults().toString();\n\n updateQueryParams(queryParameters);\n };\n\n const updateBasketRow = (row: BasketRow, updateGlobalDates = true) => {\n updateQueryParameters(row);\n\n if (updateGlobalDates && row.getID() === selectedBasketRow?.getID()) {\n setStartDate(row.getStartDate());\n setEndDate(row.getEndDate());\n }\n\n // Here we check if there is no promocode on the row. If there isn't this function will check for existing member details\n // and automatically apply a member only promocode\n checkAndApplyMemberOnlyPromo(row, true);\n\n basketRowReducer({ method: 'Update', row });\n };\n\n const syncSelectedDateRange = (row?: BasketRow) => {\n if (!row) return;\n if ((!row.getStartDate() || !row.getEndDate()) && startDate && endDate) {\n row.setStartDate(startDate);\n row.setEndDate(endDate);\n } else if (!startDate && !endDate && row.getStartDate() && row.getEndDate()) {\n setStartDate(row.getStartDate());\n setEndDate(row.getEndDate());\n }\n };\n\n const { loadedPromotion } = usePromotionContainer({ selectedBasketRow: selectedBasketRow as BasketRow, updateBasketRow });\n\n const genericRetryStrategy =\n ({\n maxRetryAttempts = 3,\n scalingDuration = 0,\n }: {\n maxRetryAttempts?: number;\n scalingDuration?: number;\n } = {}) =>\n (attempts: Observable<any>) => {\n return attempts.pipe(\n mergeMap((error, i) => {\n const retryAttempt = i + 1;\n if (retryAttempt > maxRetryAttempts) {\n return throwError(error);\n }\n console.log(`Attempt ${retryAttempt}: retrying in ${scalingDuration}ms`);\n return timer(scalingDuration);\n }),\n finalize(() => console.log('We are done!'))\n );\n };\n\n const workingContext: BasketContextType = {\n startDate: startDate as Dayjs,\n endDate: endDate as Dayjs,\n\n selectedBasketRow: selectedBasketRow as BasketRow,\n currentBasketRows,\n basketAddonRows,\n\n hasCheckedOut,\n reservationData: reservationData as ReservationsDTO,\n isLoadingPriceQuote,\n\n loadedPromotion,\n\n /**\n * Adds a new basket row and applies relevant updates:\n * - Synchronizes the selected date range.\n * - Applies any applicable member-only promotions.\n * - Ensures proper selection logic for the basket row.\n *\n * Selection logic:\n * - If the basket is empty, the newly added row is automatically selected.\n * - If a row is already selected:\n * - If the selected row has an assigned rate, update the selection to the new row.\n * - Otherwise, keep the current selection (allowing continued editing of the existing row).\n * - If no row is selected, set the new row as the selected row.\n *\n * @param {BasketRow} row - The basket row to add.\n */\n addBasketRow: (row: BasketRow) => {\n syncSelectedDateRange(row);\n checkAndApplyMemberOnlyPromo(row);\n\n // Determine if the basket is currently empty\n const isEmptyRows = !currentBasketRows.length;\n if (isEmptyRows) {\n // If empty, set the newly added row as the selected basket row\n setSelectedBasketRow(row);\n } else {\n if (selectedBasketRow) {\n // Determine if the currently selected row has an assigned rate\n const isSelectedRowAssignedRate = selectedBasketRow && selectedBasketRow.getRate();\n if (isSelectedRowAssignedRate) {\n // If the selected row has a rate, update the selection to the new row\n setSelectedBasketRow(row);\n }\n } else {\n // If no row is currently selected, set the new row as the selected basket row\n setSelectedBasketRow(row);\n }\n }\n basketRowReducer({ method: 'Add', row });\n },\n\n initBasketRows: (rows: BasketRow[]) => {\n const firstRow = rows[0];\n syncSelectedDateRange(firstRow);\n setSelectedBasketRow(firstRow);\n basketRowReducer({\n method: 'Init',\n rows: rows,\n });\n },\n\n //TODO: This function needs to be refactored to simplify a lot of this logic, and move notification raising to use the Event Manager instead\n addRate: async (rate: RoomRate, notify = true) => {\n let basketRow: BasketRow | null = null;\n let translationString: string;\n\n let addons = [];\n\n if (selectedBasketRow) {\n selectedBasketRow.setPreGuestsState();\n basketRow = selectedBasketRow;\n if (selectedBasketRow.getRate()) {\n translationString = Translation.Misc.RoomUpdatedNotification;\n } else {\n if (!selectedBasketRow.getStartDate() && selectedBasketRow.getEndDate()) {\n selectedBasketRow.setStartDate(startDate as Dayjs);\n selectedBasketRow.setEndDate(endDate as Dayjs);\n }\n\n translationString = Translation.Misc.RoomAddedNotification;\n }\n } else {\n if (!startDate || !endDate) {\n console.error('room selected with no date values.');\n return;\n }\n\n basketRow = new BasketRow(rate);\n\n basketRow.setStartDate(startDate);\n basketRow.setEndDate(endDate);\n\n translationString = Translation.Misc.RoomAddedNotification;\n }\n\n if (InlineAddonStepFeature.isActive()) {\n basketRow.setRate(rate); // TODO: Fix quick hack to make the Addons load\n addons = await API.Addons.findAddons([basketRow], hotel?.hotelID as string);\n }\n\n basketRow.setAuxiliaryFilter(beContext.currentGroupedRoomFilters);\n beContext.setCurrentGroupedRoomFilters({});\n\n basketRowReducer({ method: 'AddRate', rate, row: basketRow });\n\n try {\n DataLayer.instance.sendRoomRateAddToCart(rate, basketRow.getNumberOfDays(), startDate ?? basketRow.getStartDate(), endDate ?? basketRow.getEndDate());\n } catch (ex) {\n console.log('Failed recording basket Add event');\n }\n\n if (notify) {\n notifications.addNotification({\n icon: IconType.Bed,\n children: (\n <Text inline>\n {t(translationString)} <strong className=\"u-marg-left--light\">{rate.getRoom().name}</strong>\n </Text>\n ),\n });\n }\n\n const nextAvailable = getNextAvailableBasketRow();\n if (!nextAvailable?.getRate()) {\n // If the next available row does not have a rate assigned,\n // set it as the selected basket row to allow rate assignment.\n setSelectedBasketRow(nextAvailable);\n } else {\n // If all rows already have a rate assigned\n // Set the selected basket row to null, ensuring that no row is selected for editing.\n setSelectedBasketRow(null);\n\n // Determine whether the next step is an add-on selection step.\n const isNextStepAddon = StepManager.getNextStepUrl(getStepRoom()) === StepAddon.getStepUrl();\n\n if (isNextStepAddon) {\n if (addons.length) {\n historyConsistentPush(StepAddon.getStepUrl());\n } else {\n historyConsistentPush(StepManager.getNextStepUrl(StepAddon));\n }\n } else {\n historyConsistentPush(StepManager.getNextStepUrl(getStepRoom()));\n }\n }\n },\n\n getBasketQuoteDetails: (preventApplyingOutcome) => {\n const maxRetryAttempts = 5;\n\n if (!hotel || !hotel?.requireDeposit) {\n return false;\n }\n\n setIsLoadingPriceQuote(true);\n\n // Clear currently assigned quote details\n // If we're fetching basket row information the currently held info should be disregarded.\n currentBasketRows.forEach((row) => {\n if (row.quoteDetails) {\n row.quoteDetails = undefined;\n updateBasketRow(row);\n }\n });\n\n const getData = () =>\n defer(() => API.Reservation.getPriceQuote(hotel.hotelID, currentBasketRows, isExternalMemberHotel ? memberNumber : undefined)).pipe(\n retryWhen(\n genericRetryStrategy({\n maxRetryAttempts: maxRetryAttempts,\n })\n )\n );\n\n const retryableObservable = getData();\n\n retryableObservable.subscribe(\n (quote) => {\n if (quote === null) return;\n\n if (!preventApplyingOutcome()) {\n // User has left the Confirmation step before the quote was ready, we'll stop here instead of updating the basket.\n // If we don't stop here, the user will be redirected back to the Confirmation step.\n setIsLoadingPriceQuote(false);\n return;\n }\n\n for (const quoteRow of quote.rows) {\n const basketRow = currentBasketRows.find((row) => row.getID() === quoteRow.rowId);\n\n if (!basketRow) {\n console.warn('API Returned unfamiliar row ID', quoteRow.rowId);\n continue;\n }\n\n basketRow.quoteDetails = quoteRow;\n updateBasketRow(basketRow);\n }\n },\n (error: any) => {\n console.log(error);\n console.log(`Error!: Retried ${maxRetryAttempts} times then quit!`);\n },\n () => {\n setIsLoadingPriceQuote(false);\n }\n );\n },\n\n /**\n * Filter global list of rooms based on their validity.\n *\n * Useful for getting a complete summary of all the rooms.\n */\n getAllValidRows: () => {\n return currentBasketRows.filter((item) => item.isValid());\n },\n\n getAllDatelessRows: () => {\n return currentBasketRows.filter((item) => !item.getStartDate() || !item.getEndDate());\n },\n\n getNumberOfAdults: (withTranslation = false) => {\n return returnAggregationAndTranslation((row) => row.getAdults(), withTranslation ? Translation.Step.Date.Adult : undefined);\n },\n\n getNumberOfChildren: (withTranslation = false) => {\n return returnAggregationAndTranslation((row) => row.getChildren(), withTranslation ? Translation.Step.Date.Child : undefined);\n },\n\n getNumberOfInfants: (withTranslation = false) => {\n return returnAggregationAndTranslation((row) => row.getInfants(), withTranslation ? Translation.Step.Date.Infant : undefined);\n },\n\n getNumberOfRooms: (withTranslation = false) => {\n return returnAggregationAndTranslation(currentBasketRows.length, withTranslation ? Translation.Step.Date.Room : undefined);\n },\n\n getTotalPrice: () => {\n let totalPrice = returnAggregationAndTranslation((row) => (row.isValid() ? (row.getRate()?.getTotalPrice() as number) : 0)) as number;\n\n // If the hotel requires a deposit, and enableCreditCardSurchase is false, we need to add the deposit fees to the total price.\n if (hotel?.requireDeposit && !hotel?.enableCreditCardSurcharge) {\n const depositFees = returnAggregationAndTranslation((row) => (row.quoteDetails ? (row.quoteDetails?.totalFees as number) : 0)) as number;\n totalPrice += depositFees;\n }\n\n basketAddonRows.forEach((row) => {\n totalPrice += row.getTotalPrice();\n });\n\n return totalPrice;\n },\n\n getTotalDeposit: () => {\n const totalDeposit = returnAggregationAndTranslation((row) => (row.quoteDetails ? (row.quoteDetails?.totalDeposit as number) : 0)) as number;\n return totalDeposit;\n },\n\n getTotalFees: () => {\n let totalFees = returnAggregationAndTranslation((row) => (row.isValid() ? (row.getRate()?.getTotalFees() as number) : 0)) as number;\n\n if (totalFees == 0 && hotel?.requireDeposit) {\n // Hotel may have credit card surcharges disabled, but they could still be included as a part of the quote.\n totalFees = returnAggregationAndTranslation((row) => (row.quoteDetails ? (row.quoteDetails?.totalFees as number) : 0)) as number;\n }\n\n basketAddonRows.forEach((row) => {\n totalFees += row.getTotalFees();\n });\n\n return totalFees;\n },\n\n getTotalPayNow: () => {\n if (hotel?.requireDeposit) {\n const depositFees = returnAggregationAndTranslation((row) => (row.quoteDetails ? (row.quoteDetails?.totalFees as number) : 0)) as number;\n return workingContext.getTotalDeposit() + depositFees;\n }\n\n return workingContext.getTotalPrice();\n },\n\n /**\n * Pops the provided row from the current basket array\n */\n removeBasketRow: (row: BasketRow) => {\n const rowsBeforeRemoval = currentBasketRows.length;\n\n basketRowReducer({ method: 'Remove', row });\n\n if (selectedBasketRow && row.getID() === selectedBasketRow.getID()) {\n const availableBasketRow = getNextAvailableBasketRow(row);\n if (availableBasketRow) {\n setStartDate(availableBasketRow.getStartDate());\n setEndDate(availableBasketRow.getEndDate());\n }\n setSelectedBasketRow(availableBasketRow);\n }\n\n if (rowsBeforeRemoval === 1) {\n workingContext.addBasketRow(new BasketRow());\n }\n },\n\n clearBasketRows: (confirm: boolean) => {\n if (confirm) {\n basketRowReducer({ method: 'Clear' });\n }\n },\n\n updateBasketRow,\n\n /**\n * Selects the given basket row and updates all relevant inputs (e.g., start date and end date).\n * - If the provided row is valid, it updates the selected row and sets the corresponding dates.\n * - If the row is null or invalid, it attempts to select the next available basket row.\n *\n * @param {BasketRow | null} row - The basket row to be selected.\n * @returns {Promise<void>} A promise that resolves when the selection is complete.\n */\n selectBasketRow: async (row: BasketRow | null) => {\n if (row && row.isValid()) {\n setStartDate(row.getStartDate());\n setEndDate(row.getEndDate());\n // Update the selected basket row\n setSelectedBasketRow(row);\n } else {\n // If the row is invalid or null, select the next available basket row\n setSelectedBasketRow(getNextAvailableBasketRow());\n }\n },\n\n setStartDate,\n setEndDate,\n\n booked: async (data: ReservationsDTO, requestData: RoomstaySession['reservationRequest']) => {\n const updateObject: Partial<RoomstaySession> = { reservation: data };\n\n if (requestData) {\n updateObject.reservationRequest = requestData;\n }\n\n await beContext.sessionProvider?.updateSessionAsync(updateObject);\n setReservationData(data);\n },\n\n rollback: () => {\n beContext.sessionProvider?.updateSession({\n reservation: undefined,\n });\n setReservationData(null);\n },\n\n checkedOut: (data: ReservationsDTO) => {\n setHasCheckedOut(true);\n setReservationData(data);\n setSelectedBasketRow(null);\n basketRowReducer({ method: 'Clear' });\n\n const row = new BasketRow();\n row.setStartDate(dayjs().add(1, 'day'));\n row.setEndDate(dayjs().add(2, 'day'));\n\n basketRowReducer({ method: 'Add', row });\n setBasketAddonRows([]);\n\n const sessionProvider = beContext?.engine?.getSessionProvider();\n sessionProvider.deleteSession();\n sessionProvider?.initialize(undefined, beContext?.engine?.getSource());\n const params = new URLSearchParams(window.location.search);\n params.delete('planpay_checkout_id');\n window.history.replaceState({}, '', `${window.location.pathname}?${params}`);\n navigate(StepThanks.getStepUrl());\n },\n\n finish: () => {\n setReservationData(null);\n setHasCheckedOut(false);\n },\n\n /**\n * Set the selected basket row to null, ensuring that no row is selected for editing.\n */\n clearSelectedRates: () => {\n setSelectedBasketRow(null);\n },\n\n getRowForAddon: (selectedAddon) => {\n if (selectedAddon === undefined) {\n return;\n }\n return basketAddonRows.find((r) => r.getAddon()?.code === selectedAddon?.code);\n },\n\n setAddonQuantities: (addon: Addon, quantities: { quantity: number; adult: number; child: number }, selectedDate: string, selectedTime: string) => {\n let addonRow = basketAddonRows.find((r) => r.getAddon()?.code === addon.code);\n if (addonRow === undefined) {\n addonRow = new BasketAddonRow(addon);\n basketAddonRows.push(addonRow);\n }\n\n addonRow.setQuantity(quantities.quantity ?? 0);\n addonRow.setAdultQuantity(quantities.adult ?? 0);\n addonRow.setChildQuantity(quantities.child ?? 0);\n addonRow.setSelectedDate(selectedDate);\n addonRow.setSelectedTime(addon.availability[selectedDate].selectorTimes ? selectedTime : undefined);\n\n // TODO: Quick hack to fix Synxis Basic Addon quantities.\n if (addon.pricingType === AddonPricingType.PER_ADULT_OCCUPANCY_PER_NIGHT) {\n // TODO: Because all addons only apply to first room, we can select the 0th from the list.\n const basketRow = currentBasketRows?.[0];\n if (basketRow) {\n addonRow.setAdultQuantity(basketRow.getAdults());\n }\n }\n\n if (addon.pricingType === AddonPricingType.PER_CHILD_OCCUPANCY_PER_NIGHT) {\n // TODO: Because all addons only apply to first room, we can select the 0th from the list.\n const basketRow = currentBasketRows?.[0];\n if (basketRow) {\n addonRow.setChildQuantity(basketRow.getChildren());\n }\n }\n\n // TODO: More hackyness to handle RMS Per Person Fee requirements\n if (addon.pricingType === AddonPricingType.PER_ALL_PERSONS || addon.pricingType === AddonPricingType.PER_ALL_PERSONS_PER_NIGHT) {\n const basketRow = currentBasketRows?.[0];\n if (basketRow) {\n addonRow.setAdultQuantity(basketRow.getAdults());\n addonRow.setChildQuantity(basketRow.getChildren());\n }\n }\n\n setBasketAddonRows([...basketAddonRows]);\n },\n\n removeBasketAddonRow: (row: BasketAddonRow) => {\n setBasketAddonRows((oldRows) => oldRows.filter((item) => item.getID() !== row.getID()));\n },\n\n /**\n * Attempts to select the next available basket row that does not have a rate assigned.\n * If such a row is found, it updates the selected basket row and returns it.\n * Otherwise, it does nothing.\n *\n * @returns {BasketRow | undefined} The selected basket row without a rate, or undefined if none is found.\n */\n attemptSelectUnfilledRow: (): BasketRow | undefined => {\n const row = getNextAvailableBasketRow();\n if (row && !row?.getRate()) {\n // Select the first available row without a rate and update the selected basket row\n setSelectedBasketRow(row);\n return row;\n }\n // No available unfilled row found, return undefined\n },\n // Callback triggered when the DatePicker open state changes.\n onDatePickerOpenChange: (isOpen: boolean) => {\n setIsDatePickerOpen(isOpen);\n },\n // Indicates whether the DatePicker is currently open.\n isDatePickerOpen: isDatePickerOpen,\n };\n\n return (\n <BasketContext.Provider value={workingContext}>\n <AuthenticationContextProvider>\n {props.children}\n <MemberSignInModal />\n {showPromoCodeAlert && <PromoCodeVerificationAlert selectedBasketRow={selectedBasketRow} />}\n </AuthenticationContextProvider>\n </BasketContext.Provider>\n );\n}\n"]}
|
|
@@ -274,6 +274,7 @@ const useAuthenticationContext = () => {
|
|
|
274
274
|
hotelLogo: typeof logo === 'string' ? logo : logoLink || '',
|
|
275
275
|
hotelEmail: email || '',
|
|
276
276
|
hotelPhone: (hotel === null || hotel === void 0 ? void 0 : hotel.phone) || '',
|
|
277
|
+
sourceUrlStr: window.location.href,
|
|
277
278
|
};
|
|
278
279
|
};
|
|
279
280
|
return {
|
package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthenticationContextProvider.js","sourceRoot":"/","sources":["src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import { CognitoUser } from '@aws-amplify/auth';\nimport { ClientMetaData } from '@aws-amplify/auth/lib-esm/types';\nimport { AuthenticationContext, CognitoLoginState, CompanyContext, ExtraClientMetadataParams, IAuthenticationContext, RoomstayMemberContextProvider } from '@frontend/contexts';\nimport base64 from 'base-64';\nimport React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';\n\nimport MemberPortalFeature from '@/providers/feature/MemberPortalFeature';\nimport { getAuth } from '@/util/AsyncAuth';\n\nconst useAuthenticationContext = (): IAuthenticationContext => {\n const { companyShort, selectedHotelID, colors, logoLink = '' } = useContext(CompanyContext);\n\n const clientMetadata = useMemo(\n () => ({\n hotelId: selectedHotelID,\n companyShort: companyShort,\n }),\n [selectedHotelID, companyShort]\n );\n\n const [finishedInitializingContext, finishedInitializingContextSet] = useState<boolean>(false);\n const [isFetching, isFetchingSet] = useState<boolean>(true);\n const loading = useMemo(() => {\n return !finishedInitializingContext || isFetching;\n }, [finishedInitializingContext, isFetching]);\n\n const [cognitoUser, cognitoUserSet] = useState<CognitoUser | null>(null);\n const [cognitoLoginState, cognitoLoginStateSet] = useState<CognitoLoginState>(CognitoLoginState.Login);\n\n const [error, errorSet] = useState<Error>();\n\n /**\n * Set up the context, and try and immediately log in the user in the event that they're here\n */\n const initialiseContext = useCallback(async () => {\n const Auth = await getAuth();\n await Auth.currentAuthenticatedUser()\n .then((user) => {\n if (user) {\n cognitoUserSet(user);\n cognitoLoginStateSet(CognitoLoginState.Success);\n }\n })\n .catch((e) => {\n if (e !== 'The user is not authenticated') {\n errorSet(e);\n }\n });\n\n finishedInitializingContextSet(true);\n isFetchingSet(false);\n }, []);\n\n useEffect(() => {\n if (MemberPortalFeature.isActive()) {\n initialiseContext();\n }\n }, [initialiseContext, MemberPortalFeature.isActive()]);\n\n /**\n * Wrapper for our async calls to handle the `isFetching` and `error` state\n */\n const asyncWrapper: (func: (...params: any[]) => Promise<CognitoLoginState | undefined>, ...parameters: any[]) => Promise<CognitoLoginState | undefined> = async (\n func: (...params: any[]) => Promise<CognitoLoginState | undefined>,\n ...parameters: any[]\n ) => {\n isFetchingSet(true);\n errorSet(undefined);\n\n try {\n return await func(...parameters);\n } catch (e: any) {\n errorSet(e);\n } finally {\n isFetchingSet(false);\n }\n };\n\n const transformUsername = useCallback(\n (username: string) => {\n return base64.encode(`${companyShort}-${username.toLowerCase()}`);\n },\n [companyShort]\n );\n\n const login = async (email: string, password: string, extraClientMetadataParams?: ExtraClientMetadataParams) => {\n const Auth = await getAuth();\n let cState;\n\n const username = transformUsername(email);\n try {\n const cu = await Auth.signIn({\n username,\n password,\n });\n\n if (cu.challengeName === 'SMS_MFA' || cu.challengeName === 'SOFTWARE_TOKEN_MFA') {\n // TODO: Handle 2FA\n cState = CognitoLoginState.VerifyMFA;\n } else if (cu.challengeName === 'NEW_PASSWORD_REQUIRED') {\n // TODO: Change Password\n cState = CognitoLoginState.RequiresNewPassword;\n } else if (cu.challengeName === 'MFA_SETUP') {\n // TODO: SetUp MFA\n cState = CognitoLoginState.SetupMFA;\n } else {\n // Success???\n cognitoUserSet(cu);\n cState = CognitoLoginState.Success;\n }\n } catch (e: any) {\n if (e.code === 'PasswordResetRequiredException') {\n cState = CognitoLoginState.RequiresPasswordReset;\n } else if (e.code === 'UserNotConfirmedException') {\n const { hotel } = extraClientMetadataParams || {};\n const additionalMetadata = getExtraClientMetadata({ hotel });\n await Auth.resendSignUp(username, { ...clientMetadata, ...(additionalMetadata || {}) });\n cState = CognitoLoginState.RequiresConfirmation;\n } else {\n throw e;\n }\n }\n\n if (cState) {\n cognitoLoginStateSet(cState);\n\n return cState;\n }\n };\n\n const register = async (email: string, password: string, additionalAttributes?: any, extraClientMetadataParams?: ExtraClientMetadataParams) => {\n const Auth = await getAuth();\n let cState: CognitoLoginState;\n\n try {\n const { hotel } = extraClientMetadataParams || {};\n const additionalMetadata = getExtraClientMetadata({ hotel });\n const signUpResult = await Auth.signUp({\n username: transformUsername(email),\n password,\n attributes: {\n email,\n ...additionalAttributes,\n },\n clientMetadata: { ...clientMetadata, ...(additionalMetadata || {}) },\n });\n\n if (!signUpResult.userConfirmed) {\n cState = CognitoLoginState.RequiresConfirmation;\n } else {\n cognitoUserSet(signUpResult.user);\n cState = CognitoLoginState.Success;\n }\n } catch (e: any) {\n switch (e.code) {\n case 'UsernameExistsException': {\n cState = CognitoLoginState.UsernameExists;\n break;\n }\n default: {\n throw e;\n }\n }\n }\n\n if (cState) {\n cognitoLoginStateSet(cState);\n return cState;\n }\n };\n\n const confirmAccount = async (email: string, code: string, password: string, extraClientMetadataParams?: ExtraClientMetadataParams) => {\n const Auth = await getAuth();\n const username = transformUsername(email);\n const { hotel } = extraClientMetadataParams || {};\n const additionalMetadata = getExtraClientMetadata({ hotel });\n await Auth.confirmSignUp(username, code, {\n clientMetadata: additionalMetadata,\n });\n\n return await login(email, password, extraClientMetadataParams);\n };\n\n const forgotPassword = async (email: string, extraClientMetadataParams?: ExtraClientMetadataParams): Promise<CognitoLoginState> => {\n const Auth = await getAuth();\n const username = transformUsername(email);\n try {\n const { hotel } = extraClientMetadataParams || {};\n const additionalMetadata = getExtraClientMetadata({ hotel });\n await Auth.forgotPassword(username, { ...clientMetadata, ...(additionalMetadata || {}) });\n } catch (e: any) {\n switch (e.code) {\n case 'UserNotFoundException':\n cognitoLoginStateSet(CognitoLoginState.UserNotFound);\n return CognitoLoginState.UserNotFound;\n default:\n throw e;\n }\n }\n cognitoLoginStateSet(CognitoLoginState.ForgotPassword);\n return CognitoLoginState.ForgotPassword;\n };\n\n const resetPassword = async (email: string, code: string, password: string, extraClientMetadataParams?: ExtraClientMetadataParams): Promise<CognitoLoginState> => {\n const Auth = await getAuth();\n const username = transformUsername(email);\n try {\n const { hotel } = extraClientMetadataParams || {};\n const additionalMetadata = getExtraClientMetadata({ hotel });\n await Auth.forgotPasswordSubmit(username, code, password, additionalMetadata);\n await login(email, password);\n } catch (e: any) {\n switch (e.code) {\n case 'CodeMismatchException':\n cognitoLoginStateSet(CognitoLoginState.CodeMismatch);\n return CognitoLoginState.CodeMismatch;\n default:\n throw e;\n }\n }\n cognitoLoginStateSet(CognitoLoginState.Success);\n return CognitoLoginState.Success;\n };\n\n const changePassword = async (currentPassword: string, newPassword: string, extraClientMetadataParams?: ExtraClientMetadataParams): Promise<CognitoLoginState> => {\n try {\n const Auth = await getAuth();\n const { hotel } = extraClientMetadataParams || {};\n const additionalMetadata = getExtraClientMetadata({ hotel });\n await Auth.changePassword(cognitoUser, currentPassword, newPassword, additionalMetadata);\n } catch (e: any) {\n switch (e.code) {\n case CognitoLoginState.LimitExceededException:\n return CognitoLoginState.LimitExceededException;\n case CognitoLoginState.NotAuthorizedException:\n return CognitoLoginState.NotAuthorizedException;\n default:\n throw e;\n }\n }\n return CognitoLoginState.Success;\n };\n\n const logout = async () => {\n const Auth = await getAuth();\n await Auth.signOut();\n cognitoUserSet(null);\n cognitoLoginStateSet(CognitoLoginState.Login);\n\n return CognitoLoginState.Login;\n };\n\n const reset = () => {\n cognitoLoginStateSet(CognitoLoginState.Login);\n errorSet(undefined);\n };\n\n const getExtraClientMetadata = ({ hotel }: ExtraClientMetadataParams): ClientMetaData => {\n const { colors: hoteColor = colors, email, logo } = hotel || {};\n\n return {\n companyShort,\n hotelName: hotel?.name || '',\n hotelUrl: hotel?.hotelUrl || '',\n colorAccent: hoteColor.accent,\n colorAccent2: hoteColor.accent2,\n colorAccent3: hoteColor.accent3,\n hotelLogo: typeof logo === 'string' ? logo : logoLink || '',\n hotelEmail: email || '',\n hotelPhone: hotel?.phone || '',\n };\n };\n\n return {\n loading,\n\n cognitoUser: cognitoUser as CognitoUser,\n cognitoLoginState,\n\n error,\n\n login: (...args) => asyncWrapper(login, ...args),\n register: (...args) => asyncWrapper(register, ...args),\n confirmAccount: (...args) => asyncWrapper(confirmAccount, ...args),\n forgotPassword: (...args) => asyncWrapper(forgotPassword, ...args),\n resetPassword: (...args) => asyncWrapper(resetPassword, ...args),\n changePassword: (...args) => asyncWrapper(changePassword, ...args),\n logout: (...args) => asyncWrapper(logout, ...args),\n reset,\n };\n};\n\nexport const AuthenticationContextProvider: React.FC = ({ children }) => {\n const value = useAuthenticationContext();\n return (\n <AuthenticationContext.Provider value={value}>\n <RoomstayMemberContextProvider>{children}</RoomstayMemberContextProvider>\n </AuthenticationContext.Provider>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"AuthenticationContextProvider.js","sourceRoot":"/","sources":["src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import { CognitoUser } from '@aws-amplify/auth';\nimport { ClientMetaData } from '@aws-amplify/auth/lib-esm/types';\nimport { AuthenticationContext, CognitoLoginState, CompanyContext, ExtraClientMetadataParams, IAuthenticationContext, RoomstayMemberContextProvider } from '@frontend/contexts';\nimport base64 from 'base-64';\nimport React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';\n\nimport MemberPortalFeature from '@/providers/feature/MemberPortalFeature';\nimport { getAuth } from '@/util/AsyncAuth';\n\nconst useAuthenticationContext = (): IAuthenticationContext => {\n const { companyShort, selectedHotelID, colors, logoLink = '' } = useContext(CompanyContext);\n\n const clientMetadata = useMemo(\n () => ({\n hotelId: selectedHotelID,\n companyShort: companyShort,\n }),\n [selectedHotelID, companyShort]\n );\n\n const [finishedInitializingContext, finishedInitializingContextSet] = useState<boolean>(false);\n const [isFetching, isFetchingSet] = useState<boolean>(true);\n const loading = useMemo(() => {\n return !finishedInitializingContext || isFetching;\n }, [finishedInitializingContext, isFetching]);\n\n const [cognitoUser, cognitoUserSet] = useState<CognitoUser | null>(null);\n const [cognitoLoginState, cognitoLoginStateSet] = useState<CognitoLoginState>(CognitoLoginState.Login);\n\n const [error, errorSet] = useState<Error>();\n\n /**\n * Set up the context, and try and immediately log in the user in the event that they're here\n */\n const initialiseContext = useCallback(async () => {\n const Auth = await getAuth();\n await Auth.currentAuthenticatedUser()\n .then((user) => {\n if (user) {\n cognitoUserSet(user);\n cognitoLoginStateSet(CognitoLoginState.Success);\n }\n })\n .catch((e) => {\n if (e !== 'The user is not authenticated') {\n errorSet(e);\n }\n });\n\n finishedInitializingContextSet(true);\n isFetchingSet(false);\n }, []);\n\n useEffect(() => {\n if (MemberPortalFeature.isActive()) {\n initialiseContext();\n }\n }, [initialiseContext, MemberPortalFeature.isActive()]);\n\n /**\n * Wrapper for our async calls to handle the `isFetching` and `error` state\n */\n const asyncWrapper: (func: (...params: any[]) => Promise<CognitoLoginState | undefined>, ...parameters: any[]) => Promise<CognitoLoginState | undefined> = async (\n func: (...params: any[]) => Promise<CognitoLoginState | undefined>,\n ...parameters: any[]\n ) => {\n isFetchingSet(true);\n errorSet(undefined);\n\n try {\n return await func(...parameters);\n } catch (e: any) {\n errorSet(e);\n } finally {\n isFetchingSet(false);\n }\n };\n\n const transformUsername = useCallback(\n (username: string) => {\n return base64.encode(`${companyShort}-${username.toLowerCase()}`);\n },\n [companyShort]\n );\n\n const login = async (email: string, password: string, extraClientMetadataParams?: ExtraClientMetadataParams) => {\n const Auth = await getAuth();\n let cState;\n\n const username = transformUsername(email);\n try {\n const cu = await Auth.signIn({\n username,\n password,\n });\n\n if (cu.challengeName === 'SMS_MFA' || cu.challengeName === 'SOFTWARE_TOKEN_MFA') {\n // TODO: Handle 2FA\n cState = CognitoLoginState.VerifyMFA;\n } else if (cu.challengeName === 'NEW_PASSWORD_REQUIRED') {\n // TODO: Change Password\n cState = CognitoLoginState.RequiresNewPassword;\n } else if (cu.challengeName === 'MFA_SETUP') {\n // TODO: SetUp MFA\n cState = CognitoLoginState.SetupMFA;\n } else {\n // Success???\n cognitoUserSet(cu);\n cState = CognitoLoginState.Success;\n }\n } catch (e: any) {\n if (e.code === 'PasswordResetRequiredException') {\n cState = CognitoLoginState.RequiresPasswordReset;\n } else if (e.code === 'UserNotConfirmedException') {\n const { hotel } = extraClientMetadataParams || {};\n const additionalMetadata = getExtraClientMetadata({ hotel });\n await Auth.resendSignUp(username, { ...clientMetadata, ...(additionalMetadata || {}) });\n cState = CognitoLoginState.RequiresConfirmation;\n } else {\n throw e;\n }\n }\n\n if (cState) {\n cognitoLoginStateSet(cState);\n\n return cState;\n }\n };\n\n const register = async (email: string, password: string, additionalAttributes?: any, extraClientMetadataParams?: ExtraClientMetadataParams) => {\n const Auth = await getAuth();\n let cState: CognitoLoginState;\n\n try {\n const { hotel } = extraClientMetadataParams || {};\n const additionalMetadata = getExtraClientMetadata({ hotel });\n const signUpResult = await Auth.signUp({\n username: transformUsername(email),\n password,\n attributes: {\n email,\n ...additionalAttributes,\n },\n clientMetadata: { ...clientMetadata, ...(additionalMetadata || {}) },\n });\n\n if (!signUpResult.userConfirmed) {\n cState = CognitoLoginState.RequiresConfirmation;\n } else {\n cognitoUserSet(signUpResult.user);\n cState = CognitoLoginState.Success;\n }\n } catch (e: any) {\n switch (e.code) {\n case 'UsernameExistsException': {\n cState = CognitoLoginState.UsernameExists;\n break;\n }\n default: {\n throw e;\n }\n }\n }\n\n if (cState) {\n cognitoLoginStateSet(cState);\n return cState;\n }\n };\n\n const confirmAccount = async (email: string, code: string, password: string, extraClientMetadataParams?: ExtraClientMetadataParams) => {\n const Auth = await getAuth();\n const username = transformUsername(email);\n const { hotel } = extraClientMetadataParams || {};\n const additionalMetadata = getExtraClientMetadata({ hotel });\n await Auth.confirmSignUp(username, code, {\n clientMetadata: additionalMetadata,\n });\n\n return await login(email, password, extraClientMetadataParams);\n };\n\n const forgotPassword = async (email: string, extraClientMetadataParams?: ExtraClientMetadataParams): Promise<CognitoLoginState> => {\n const Auth = await getAuth();\n const username = transformUsername(email);\n try {\n const { hotel } = extraClientMetadataParams || {};\n const additionalMetadata = getExtraClientMetadata({ hotel });\n await Auth.forgotPassword(username, { ...clientMetadata, ...(additionalMetadata || {}) });\n } catch (e: any) {\n switch (e.code) {\n case 'UserNotFoundException':\n cognitoLoginStateSet(CognitoLoginState.UserNotFound);\n return CognitoLoginState.UserNotFound;\n default:\n throw e;\n }\n }\n cognitoLoginStateSet(CognitoLoginState.ForgotPassword);\n return CognitoLoginState.ForgotPassword;\n };\n\n const resetPassword = async (email: string, code: string, password: string, extraClientMetadataParams?: ExtraClientMetadataParams): Promise<CognitoLoginState> => {\n const Auth = await getAuth();\n const username = transformUsername(email);\n try {\n const { hotel } = extraClientMetadataParams || {};\n const additionalMetadata = getExtraClientMetadata({ hotel });\n await Auth.forgotPasswordSubmit(username, code, password, additionalMetadata);\n await login(email, password);\n } catch (e: any) {\n switch (e.code) {\n case 'CodeMismatchException':\n cognitoLoginStateSet(CognitoLoginState.CodeMismatch);\n return CognitoLoginState.CodeMismatch;\n default:\n throw e;\n }\n }\n cognitoLoginStateSet(CognitoLoginState.Success);\n return CognitoLoginState.Success;\n };\n\n const changePassword = async (currentPassword: string, newPassword: string, extraClientMetadataParams?: ExtraClientMetadataParams): Promise<CognitoLoginState> => {\n try {\n const Auth = await getAuth();\n const { hotel } = extraClientMetadataParams || {};\n const additionalMetadata = getExtraClientMetadata({ hotel });\n await Auth.changePassword(cognitoUser, currentPassword, newPassword, additionalMetadata);\n } catch (e: any) {\n switch (e.code) {\n case CognitoLoginState.LimitExceededException:\n return CognitoLoginState.LimitExceededException;\n case CognitoLoginState.NotAuthorizedException:\n return CognitoLoginState.NotAuthorizedException;\n default:\n throw e;\n }\n }\n return CognitoLoginState.Success;\n };\n\n const logout = async () => {\n const Auth = await getAuth();\n await Auth.signOut();\n cognitoUserSet(null);\n cognitoLoginStateSet(CognitoLoginState.Login);\n\n return CognitoLoginState.Login;\n };\n\n const reset = () => {\n cognitoLoginStateSet(CognitoLoginState.Login);\n errorSet(undefined);\n };\n\n const getExtraClientMetadata = ({ hotel }: ExtraClientMetadataParams): ClientMetaData => {\n const { colors: hoteColor = colors, email, logo } = hotel || {};\n\n return {\n companyShort,\n hotelName: hotel?.name || '',\n hotelUrl: hotel?.hotelUrl || '',\n colorAccent: hoteColor.accent,\n colorAccent2: hoteColor.accent2,\n colorAccent3: hoteColor.accent3,\n hotelLogo: typeof logo === 'string' ? logo : logoLink || '',\n hotelEmail: email || '',\n hotelPhone: hotel?.phone || '',\n sourceUrlStr: window.location.href,\n };\n };\n\n return {\n loading,\n\n cognitoUser: cognitoUser as CognitoUser,\n cognitoLoginState,\n\n error,\n\n login: (...args) => asyncWrapper(login, ...args),\n register: (...args) => asyncWrapper(register, ...args),\n confirmAccount: (...args) => asyncWrapper(confirmAccount, ...args),\n forgotPassword: (...args) => asyncWrapper(forgotPassword, ...args),\n resetPassword: (...args) => asyncWrapper(resetPassword, ...args),\n changePassword: (...args) => asyncWrapper(changePassword, ...args),\n logout: (...args) => asyncWrapper(logout, ...args),\n reset,\n };\n};\n\nexport const AuthenticationContextProvider: React.FC = ({ children }) => {\n const value = useAuthenticationContext();\n return (\n <AuthenticationContext.Provider value={value}>\n <RoomstayMemberContextProvider>{children}</RoomstayMemberContextProvider>\n </AuthenticationContext.Provider>\n );\n};\n"]}
|
|
@@ -38,6 +38,8 @@ export declare enum AddonPricingType {
|
|
|
38
38
|
PER_NIGHT = "Per night",
|
|
39
39
|
PER_PERSON = "Per person",
|
|
40
40
|
PER_PERSON_PER_NIGHT = "Per person per night",
|
|
41
|
+
PER_ALL_PERSONS = "Per all persons",
|
|
42
|
+
PER_ALL_PERSONS_PER_NIGHT = "Per all persons per night",
|
|
41
43
|
PER_QUANTITY_NAME_PER_NIGHT = "Per Quantity Name Per Night",
|
|
42
44
|
PER_ROOM_QUANTITY_PER_NIGHT = "Per Room Quantity Per Night",
|
|
43
45
|
PER_PERSON_OCCUPANCY_PER_NIGHT = "Per Person Occupancy Per Night",
|
|
@@ -11,6 +11,8 @@ var AddonPricingType;
|
|
|
11
11
|
AddonPricingType["PER_NIGHT"] = "Per night";
|
|
12
12
|
AddonPricingType["PER_PERSON"] = "Per person";
|
|
13
13
|
AddonPricingType["PER_PERSON_PER_NIGHT"] = "Per person per night";
|
|
14
|
+
AddonPricingType["PER_ALL_PERSONS"] = "Per all persons";
|
|
15
|
+
AddonPricingType["PER_ALL_PERSONS_PER_NIGHT"] = "Per all persons per night";
|
|
14
16
|
// Synxis Basic addon types
|
|
15
17
|
AddonPricingType["PER_QUANTITY_NAME_PER_NIGHT"] = "Per Quantity Name Per Night";
|
|
16
18
|
AddonPricingType["PER_ROOM_QUANTITY_PER_NIGHT"] = "Per Room Quantity Per Night";
|
|
@@ -26,6 +28,7 @@ exports.ADDON_PER_NIGHT_TYPES = [
|
|
|
26
28
|
AddonPricingType.PER_PERSON_OCCUPANCY_PER_NIGHT,
|
|
27
29
|
AddonPricingType.PER_ADULT_OCCUPANCY_PER_NIGHT,
|
|
28
30
|
AddonPricingType.PER_CHILD_OCCUPANCY_PER_NIGHT,
|
|
31
|
+
AddonPricingType.PER_ALL_PERSONS_PER_NIGHT,
|
|
29
32
|
];
|
|
30
33
|
exports.ADDON_PER_PERSON_PER_NIGHT_TYPES = [
|
|
31
34
|
AddonPricingType.PER_PERSON_PER_NIGHT,
|