@roomstay/frontend 2.6.57 → 2.6.59

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.
Files changed (130) hide show
  1. package/dist/493.bundle.js +1 -1
  2. package/dist/537.bundle.js +1 -0
  3. package/dist/903.bundle.js +1 -1
  4. package/dist/main.bundle.js +1 -1
  5. package/dist/src/api/AvailabilityAPI.js +8 -6
  6. package/dist/src/api/AvailabilityAPI.js.map +1 -1
  7. package/dist/src/components/generic/BookNowPayLaterInfoBlock.js +1 -1
  8. package/dist/src/components/generic/BookNowPayLaterInfoBlock.js.map +1 -1
  9. package/dist/src/components/generic/BookingWizard/BookingWizard.d.ts +9 -1
  10. package/dist/src/components/generic/BookingWizard/BookingWizard.js +86 -1
  11. package/dist/src/components/generic/BookingWizard/BookingWizard.js.map +1 -1
  12. package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.d.ts +14 -1
  13. package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.js +27 -0
  14. package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.js.map +1 -1
  15. package/dist/src/components/generic/BookingWizard/BookingWizardContent.d.ts +19 -0
  16. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js +116 -30
  17. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js.map +1 -1
  18. package/dist/src/components/generic/BookingWizard/BookingWizardContext.d.ts +12 -1
  19. package/dist/src/components/generic/BookingWizard/BookingWizardContext.js.map +1 -1
  20. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.d.ts +6 -2
  21. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js +96 -29
  22. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js.map +1 -1
  23. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.d.ts +18 -3
  24. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js +118 -27
  25. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js.map +1 -1
  26. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js +53 -18
  27. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js.map +1 -1
  28. package/dist/src/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.js +5 -2
  29. package/dist/src/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.js.map +1 -1
  30. package/dist/src/components/generic/DateRangePicker/DateRangePicker.d.ts +6 -0
  31. package/dist/src/components/generic/DateRangePicker/DateRangePicker.js +8 -7
  32. package/dist/src/components/generic/DateRangePicker/DateRangePicker.js.map +1 -1
  33. package/dist/src/components/generic/DateRangePicker/FloatingDateRangePicker.d.ts +2 -0
  34. package/dist/src/components/generic/DateRangePicker/FloatingDateRangePicker.js +11 -2
  35. package/dist/src/components/generic/DateRangePicker/FloatingDateRangePicker.js.map +1 -1
  36. package/dist/src/components/generic/Event/EventCard.js +6 -2
  37. package/dist/src/components/generic/Event/EventCard.js.map +1 -1
  38. package/dist/src/components/generic/PaymentCard/PaymentCardInput.js +19 -4
  39. package/dist/src/components/generic/PaymentCard/PaymentCardInput.js.map +1 -1
  40. package/dist/src/components/generic/RadioButtonGroup/RadioButton.d.ts +1 -0
  41. package/dist/src/components/generic/RadioButtonGroup/RadioButton.js +2 -2
  42. package/dist/src/components/generic/RadioButtonGroup/RadioButton.js.map +1 -1
  43. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.d.ts +3 -2
  44. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js +10 -10
  45. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
  46. package/dist/src/components/generic/date/DatePicker.d.ts +5 -0
  47. package/dist/src/components/generic/date/DatePicker.js +7 -3
  48. package/dist/src/components/generic/date/DatePicker.js.map +1 -1
  49. package/dist/src/components/generic/date/DatePickerDay.js +13 -3
  50. package/dist/src/components/generic/date/DatePickerDay.js.map +1 -1
  51. package/dist/src/components/reservation/ReservationItem.js +5 -2
  52. package/dist/src/components/reservation/ReservationItem.js.map +1 -1
  53. package/dist/src/components/reservation/ReservationList.js +1 -1
  54. package/dist/src/components/reservation/ReservationList.js.map +1 -1
  55. package/dist/src/components/steps/confirmation/PaymentInformation.js +4 -1
  56. package/dist/src/components/steps/confirmation/PaymentInformation.js.map +1 -1
  57. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js +7 -1
  58. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js.map +1 -1
  59. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js +7 -4
  60. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js.map +1 -1
  61. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js +3 -1
  62. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js.map +1 -1
  63. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +1 -1
  64. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  65. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +1 -0
  66. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  67. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +9 -7
  68. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  69. package/dist/src/contexts/DatePickerContext.d.ts +1 -0
  70. package/dist/src/contexts/DatePickerContext.js.map +1 -1
  71. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js +3 -0
  72. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js.map +1 -1
  73. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js +3 -3
  74. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js.map +1 -1
  75. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.d.ts +9 -2
  76. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js.map +1 -1
  77. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +10 -10
  78. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
  79. package/dist/src/handlers/payment/PaymentHandler.d.ts +1 -0
  80. package/dist/src/handlers/payment/PaymentHandler.js.map +1 -1
  81. package/dist/src/handlers/payment/VGSMemberPaymentHandler.js +13 -35
  82. package/dist/src/handlers/payment/VGSMemberPaymentHandler.js.map +1 -1
  83. package/dist/src/index.d.ts +1 -0
  84. package/dist/src/index.js +5 -2
  85. package/dist/src/index.js.map +1 -1
  86. package/dist/src/models/Api/HotelDTO.d.ts +1 -1
  87. package/dist/src/models/Api/HotelDTO.js.map +1 -1
  88. package/dist/src/models/BasketRow.d.ts +3 -6
  89. package/dist/src/models/BasketRow.js +11 -15
  90. package/dist/src/models/BasketRow.js.map +1 -1
  91. package/dist/src/models/BookingWizard/BookingWizardProperty.d.ts +4 -0
  92. package/dist/src/models/BookingWizard/BookingWizardProperty.js.map +1 -1
  93. package/dist/src/models/Client/Hotel/Hotel.d.ts +4 -0
  94. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  95. package/dist/src/models/Confirmation.d.ts +1 -2
  96. package/dist/src/models/Confirmation.js.map +1 -1
  97. package/dist/src/models/Room/Room.d.ts +7 -0
  98. package/dist/src/models/Room/Room.js +13 -0
  99. package/dist/src/models/Room/Room.js.map +1 -1
  100. package/dist/src/models/Room/RoomRate.js +3 -0
  101. package/dist/src/models/Room/RoomRate.js.map +1 -1
  102. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js.map +1 -1
  103. package/dist/src/pages/findReservation/FindReservationResults.js +12 -8
  104. package/dist/src/pages/findReservation/FindReservationResults.js.map +1 -1
  105. package/dist/src/providers/RoomstayThemeEngine.d.ts +1 -1
  106. package/dist/src/providers/RoomstayThemeEngine.js +20 -5
  107. package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
  108. package/dist/src/stories/RadioButtonGroup.stories.d.ts +1 -1
  109. package/dist/src/translations/Translation.d.ts +7 -1
  110. package/dist/src/translations/Translation.js +7 -1
  111. package/dist/src/translations/Translation.js.map +1 -1
  112. package/dist/src/translations/languages/en-gb.js +7 -1
  113. package/dist/src/translations/languages/en-gb.js.map +1 -1
  114. package/dist/src/util/Analytics/GoogleAnalytics4.js +27 -12
  115. package/dist/src/util/Analytics/GoogleAnalytics4.js.map +1 -1
  116. package/dist/src/util/Analytics/UniversalAnalytics.js +3 -3
  117. package/dist/src/util/Analytics/UniversalAnalytics.js.map +1 -1
  118. package/dist/src/util/DataLayer.d.ts +5 -1
  119. package/dist/src/util/DataLayer.js +9 -2
  120. package/dist/src/util/DataLayer.js.map +1 -1
  121. package/dist/src/util/EventsHelper.d.ts +4 -1
  122. package/dist/src/util/EventsHelper.js +15 -4
  123. package/dist/src/util/EventsHelper.js.map +1 -1
  124. package/dist/test.bundle.js +1 -1
  125. package/dist/tests/offline/entry/config/hotelSpecDefault.js +1 -1
  126. package/dist/tests/offline/entry/config/hotelSpecDefault.js.map +1 -1
  127. package/dist/vendors.bundle.js +1 -1
  128. package/package.json +2 -2
  129. package/dist/586.bundle.js +0 -1
  130. package/dist/850.bundle.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmationStepContextWrapper.js","sourceRoot":"/","sources":["src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext, ErrorHandler, useMemberContext } from '@frontend/contexts';\nimport { useCurrentHotel, useEvent } from '@frontend/hooks';\nimport { EBookingPaymentMethod, EHotelCardProcessor, IBookingCreateErrorResponse, IBookingPayment } from '@roomstay/core';\nimport { IconType } from '@roomstay/ui';\nimport * as Sentry from '@sentry/browser';\nimport { Severity } from '@sentry/types';\nimport { after, unionBy } from 'lodash';\nimport React, { FC, PropsWithChildren, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport API from '@/api/BookingAPI';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport BEButton from '@/components/generic/BEButton';\nimport NextStepButton from '@/components/generic/buttons/NextStepButton';\nimport { OverlayLoader } from '@/components/generic/loader/OverlayLoader';\nimport Text, { TextType } from '@/components/generic/Text';\nimport StepConfirmationCheckoutDifferencesModal from '@/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal';\nimport { ConfirmationStepContext } from '@/contexts/ConfirmationStepContext/ConfirmationStepContext';\nimport { PlacedBookingEvent } from '@/events/actions/PlacedBookingEvent';\nimport { CommittedBookingEvent } from '@/events/views/CommittedBookingEvent';\nimport { RolledBackBookingEvent } from '@/events/views/RolledBackBookingEvent';\nimport { adyenPaymentHandler } from '@/handlers/payment/AdyenPaymentHandler';\nimport { afterpayPaymentHandler } from '@/handlers/payment/AfterpayPaymentHandler';\nimport { PaymentHandler } from '@/handlers/payment/PaymentHandler';\nimport { planpayPaymentHandler } from '@/handlers/payment/PlanpayPaymentHandler';\nimport { redirectPaymentHandler } from '@/handlers/payment/RedirectPaymentHandler';\nimport { vgsMemberPaymentHandler } from '@/handlers/payment/VGSMemberPaymentHandler';\nimport { vgsPaymentHandler } from '@/handlers/payment/VGSPaymentHandler';\nimport { useConfirmationQuery } from '@/hooks/ConfirmationQuery';\nimport { useHistoryConsistentPush } from '@/hooks/HistoryConsistentPush';\nimport { useSignedInMember } from '@/hooks/useSignedInMember';\nimport ReservationsDTO, { ReservationDTO } from '@/models/Api/ReservationsDTO';\nimport BasketRowDifferences from '@/models/BasketRowDifferences';\nimport { ConfirmationFormValues, IBookValidationResult, TUserProfileFormValues } from '@/models/Confirmation';\nimport { ListOfCountriesAndCodes } from '@/models/CountryCodesAndNumbers';\nimport UserProfile from '@/models/UserProfile';\nimport { Translation } from '@/translations/Translation';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport getStepRoom from '@/util/GetStepRoom';\n\nimport { ConfirmationValidator } from './ConfirmationStepContextTypes';\nimport { ConfirmationStepErrorModal } from './ConfirmationStepErrorModal';\n\nconst ConfirmationStepContextProvider = ConfirmationStepContext.Provider;\n\nexport const ConfirmationStepContextWrapper: FC<PropsWithChildren<any>> = ({ children }) => {\n const [differenceWarning, setDifferenceWarning] = useState<{\n differences: BasketRowDifferences[];\n warnings: string[];\n }>({\n differences: [],\n warnings: [],\n });\n\n const { queryPaymentMethod, queryRoomstayId: queryReservationId, queryPlanpayCheckoutId, returnFromPayment, success } = useConfirmationQuery();\n // load the engine context\n const engineContext = useContext(BookingEngineContext);\n const { roomstayMember } = useMemberContext();\n\n const [bookingSource, setBookingSource] = useState<string>();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [isPaymentLoading, setIsPaymentLoading] = useState(false);\n const [loadingStatus, setLoadingStatus] = useState('');\n const [isPaymentFailed, setIsPaymentFailed] = useState(false);\n const [customFieldsHaveErrors, setCustomFieldsHaveErrors] = useState(false);\n const { isExternalMemberHotel, memberNumber } = useSignedInMember();\n\n const [apiErrorResponse, setApiErrorResponse] = useState<IBookingCreateErrorResponse>();\n const [errorModalLoading, setErrorModalLoading] = useState(false);\n const [isInPaymentMode, setIsInPaymentMode] = useState(false);\n const methods = useForm<ConfirmationFormValues>({\n mode: 'onSubmit',\n });\n const [errorChecks, setErrorChecks] = useState<(() => ConfirmationValidator)[]>([] as any);\n\n const [availablePaymentHandlers, setAvailablePaymentHandlers] = useState<PaymentHandler[]>([]);\n\n const basketContext = useContext(BasketContext);\n const basketRows = basketContext.getAllValidRows();\n const basketAddonRows = basketContext.basketAddonRows;\n\n const currentSession = useMemo(() => {\n return engineContext.sessionProvider.getSession();\n }, [basketContext.reservationData]);\n\n const { hotel } = useCurrentHotel();\n const { t } = useTranslation();\n const { raise } = useEvent();\n\n const allPaymentHandlers = [redirectPaymentHandler(), adyenPaymentHandler(), vgsPaymentHandler(), vgsMemberPaymentHandler(), planpayPaymentHandler(), afterpayPaymentHandler()];\n\n const historyConsistentPush = useHistoryConsistentPush();\n\n const isBackFromPlanpay = !!queryPlanpayCheckoutId && !!queryReservationId && !!queryPaymentMethod;\n const isBackFromExternalPayment = !!returnFromPayment && (!!success || !isBackFromPlanpay) && !!queryReservationId;\n\n const paymentMethod = methods.watch('paymentMethod');\n /**\n * We need to make sure that if the user navigates away from this step, we don't try to update the basket\n * with deposit data, as it can cause an unwanted redirect back to this step.\n */\n const confirmationStepIsActiveRef = useRef(true);\n useEffect(() => {\n return () => {\n confirmationStepIsActiveRef.current = false;\n };\n }, []);\n\n useEffect(() => {\n setBookingSource(engineContext.engine.getSessionProvider().getSession()?.source);\n\n const reservationRoomstayId: string | undefined = basketContext.reservationData?.roomstayId;\n const isMatchingRoomstayId: boolean = !!queryReservationId && (!reservationRoomstayId || queryReservationId === reservationRoomstayId);\n\n if (isBackFromExternalPayment && isMatchingRoomstayId) {\n commitReservation?.(basketContext.reservationData, 'Please wait... Finalising your reservation');\n }\n\n if (isBackFromPlanpay && queryReservationId === reservationRoomstayId) {\n commitReservation?.(basketContext.reservationData, 'Please wait... Finalising your reservation');\n }\n }, []);\n\n useEffect(() => {\n if (hotel?.requireDeposit) {\n basketContext.getBasketQuoteDetails(() => confirmationStepIsActiveRef.current);\n }\n }, [hotel?.requireDeposit]);\n\n useEffect(() => {\n const currentlyAvailablePaymentHandlers = allPaymentHandlers.filter((handler) => handler.isAvailable);\n let defaultPaymentValue = '' as EBookingPaymentMethod;\n\n if (roomstayMember?.defaultCard && roomstayMember?.cards?.find((card) => card.cardId === roomstayMember?.defaultCard)) {\n defaultPaymentValue = roomstayMember?.defaultCard as EBookingPaymentMethod;\n }\n\n if (!defaultPaymentValue && currentlyAvailablePaymentHandlers.length > 0) {\n defaultPaymentValue = currentlyAvailablePaymentHandlers[0].name as EBookingPaymentMethod;\n }\n\n methods.setValue('paymentMethod', defaultPaymentValue);\n\n setAvailablePaymentHandlers(currentlyAvailablePaymentHandlers);\n }, [hotel]);\n\n useEffect(() => {\n const selectedPayment = availablePaymentHandlers.find((handler) => handler.name === paymentMethod);\n\n if (!selectedPayment) {\n return;\n }\n\n if (selectedPayment.requireBookingPlaced && !selectedPayment.isExclusive) {\n onContinueClick();\n }\n }, [paymentMethod]);\n\n const exclusivePayment = useMemo(() => {\n return availablePaymentHandlers.find((handler) => handler.isExclusive);\n }, [availablePaymentHandlers]);\n\n const toUserProfiles = (formValues: ConfirmationFormValues): UserProfile[] => {\n return formValues.userProfiles.map((values) => {\n let shortCountryCode: string | undefined = values.CountryCode;\n\n if (!shortCountryCode) {\n const country = ListOfCountriesAndCodes.find((country) => country.label === values.Country);\n shortCountryCode = country?.code;\n }\n\n return {\n Title: values.Title,\n FirstName: values.Forename,\n LastName: values.Surname,\n Phone: values.Phone.replace(' ', ''),\n Email: values.Email,\n Address: {\n Line1: values.Address,\n City: values.City,\n PostalCode: values.PostCode,\n State: values.State,\n Country: values.Country,\n CountryId: values.CountryId,\n CountryCode: shortCountryCode,\n },\n MarketingOptIn: formValues.marketingOptIn,\n AuxInputs: values.AuxInputs,\n };\n });\n };\n\n const validateCustomFields = (scrollToInput?: boolean): boolean => {\n const adhocValid = errorChecks.every((check) => check().validate(scrollToInput));\n return adhocValid === undefined ? true : adhocValid;\n };\n\n const validateReservation = async (data: ReservationsDTO): Promise<IBookValidationResult | undefined> => {\n const apiDifferences: BasketRowDifferences[] = [];\n if (data.reservations) {\n data.reservations.forEach((reservation: ReservationDTO, index) => {\n const diff = basketContext.currentBasketRows[index].checkDiffFromReservation(reservation);\n\n if (diff) {\n apiDifferences.push(diff);\n }\n });\n } else {\n Sentry.addBreadcrumb({\n level: Severity.Error,\n message: 'No reservation data: ' + JSON.stringify(data),\n });\n throw new Error('The reservation could not be completed due to an unexpected issue, please try again');\n }\n\n // If there are differences, we want to display them to make sure the booking still needs to proceed\n if (apiDifferences.length || (data.warnings && data.warnings.length)) {\n return {\n differences: apiDifferences,\n warnings: data.warnings as string[],\n };\n }\n };\n\n const onSubmitSuccess = async (data: ReservationsDTO, paymentMethod: EBookingPaymentMethod) => {\n await raise(new PlacedBookingEvent(data, basketContext.currentBasketRows, hotel));\n\n // If this is a planpay booking, we don't need to do anything else.\n if (paymentMethod === EBookingPaymentMethod.Planpay) {\n return;\n }\n\n if (hotel?.cardProcessor === EHotelCardProcessor.Passthrough) {\n await commitReservation?.(data);\n } else {\n if (data.payment?.external?.redirectUrl) {\n redirectOut(data.payment?.external?.redirectUrl);\n }\n }\n };\n\n const placeBooking = async (formPayload: ConfirmationFormValues, payment: IBookingPayment): Promise<ReservationsDTO | null> => {\n DataLayer.instance.sendInteraction('Complete Booking', InteractionType.BUTTON, InteractionStep.GUEST_DETAILS);\n setIsLoading(true);\n let data: ReservationsDTO | undefined;\n\n const userProfiles = toUserProfiles(formPayload);\n\n try {\n const captureChildAgeComments: string[] = hotel?.captureChildAge\n ? formPayload.userProfiles.flatMap(\n (formValue: TUserProfileFormValues, roomIndex: number) =>\n formValue?.CaptureChildAge?.map((age: string, childIndex: number) => `Room ${roomIndex + 1} - Child: ${childIndex + 1} Age: ${age}`) || []\n )\n : [];\n\n const comments = formPayload.comments;\n\n const bookingComment = captureChildAgeComments.length > 0 ? `${comments}\\n${captureChildAgeComments.join('\\n')}` : comments;\n\n data = await API.Reservation.bookNow(\n basketRows,\n userProfiles,\n payment,\n basketAddonRows,\n bookingComment || '',\n hotel?.hotelID as string,\n engineContext.sessionProvider.getCurrentSessionID().toString(),\n undefined,\n undefined,\n undefined,\n isExternalMemberHotel ? memberNumber : undefined\n );\n await basketContext.booked(data, {\n userProfiles,\n payment,\n comments: bookingComment || '',\n });\n\n const validationResult = await validateReservation(data);\n if (validationResult) {\n setIsLoading(false);\n setDifferenceWarning(validationResult);\n\n return null;\n } else {\n await onSubmitSuccess(data, payment.Method);\n\n return data;\n }\n } catch (error: any) {\n setApiErrorResponse(error as IBookingCreateErrorResponse);\n } finally {\n setIsLoading(false);\n }\n\n return null;\n };\n\n const parseReservationIdsFromData = (data: ReservationsDTO) => {\n return data?.reservations?.map((reservation) => reservation.reservationNumber);\n };\n\n const commitReservation = async (resData: ReservationsDTO, statusUpdate?: string) => {\n try {\n if (statusUpdate) {\n setLoadingStatus(statusUpdate);\n }\n\n setIsLoading(true);\n\n if (resData) {\n const reservationIds = parseReservationIdsFromData(resData);\n if (reservationIds.length) {\n try {\n const response = await API.Reservation.commit(reservationIds, resData.itineraryNumber, hotel?.hotelID as string, queryPlanpayCheckoutId || undefined);\n try {\n DataLayer.instance.sendReservationConfirmed(basketContext.getAllValidRows(), basketContext.basketAddonRows, response);\n } catch (ex) {\n Sentry.captureException('Failed to read reservations from GTM code: ' + JSON.stringify(ex));\n }\n basketContext.checkedOut(response);\n raise(new CommittedBookingEvent(resData, basketContext.currentBasketRows));\n } catch (error: any) {\n setApiErrorResponse(error);\n }\n } else {\n ErrorHandler.add({ message: t(Translation.Step.Confirmation.UnexpectedErrorOnCommittingReservation) });\n Sentry.captureException('No reservation IDs found when attempting to commit: ' + JSON.stringify(resData));\n }\n }\n } catch (ex) {\n console.error(ex);\n Sentry.captureException(ex);\n }\n\n setIsLoading(false);\n };\n\n const rollbackReservation = async () => {\n if (!basketContext.reservationData) return;\n\n try {\n const reservationIds = parseReservationIdsFromData(basketContext.reservationData);\n if (reservationIds.length) {\n setIsLoading(true);\n await API.Reservation.rollback(reservationIds, basketContext.reservationData.itineraryNumber, hotel?.hotelID as string);\n raise(new RolledBackBookingEvent(basketContext.reservationData));\n } else {\n Sentry.captureException('No reservation IDs found when attempting to rollback: ' + JSON.stringify(basketContext.reservationData));\n }\n } catch (ex) {\n console.log('Failed to rollback reservations');\n Sentry.captureException(ex);\n } finally {\n basketContext.rollback();\n setIsLoading(false);\n }\n };\n\n const redirectOut = (targetUrl: string, stateUpdate?: string) => {\n setIsLoading(true);\n if (stateUpdate) {\n setLoadingStatus(stateUpdate);\n }\n\n window.location.href = targetUrl;\n };\n\n const onRetryBooking = async () => {\n setErrorModalLoading(true);\n setIsLoading(true);\n\n const resRequest = currentSession?.reservationRequest;\n const roomstayId = currentSession?.reservation?.roomstayId;\n\n if (!resRequest || !roomstayId) {\n console.error('No reservation request or roomstay ID found in session', { resRequest, roomstayId });\n return null;\n }\n\n try {\n const data = await API.Reservation.bookNow(\n basketRows,\n resRequest.userProfiles,\n resRequest.payment,\n basketAddonRows,\n '',\n hotel?.hotelID as string,\n engineContext.sessionProvider.getCurrentSessionID().toString(),\n undefined,\n true,\n roomstayId,\n isExternalMemberHotel ? memberNumber : undefined\n );\n await basketContext.booked(data);\n const validationResult = await validateReservation(data);\n\n if (validationResult) {\n setIsLoading(false);\n } else {\n await onSubmitSuccess(data, resRequest.payment?.Method);\n }\n } catch (error: any) {\n setApiErrorResponse(error as IBookingCreateErrorResponse);\n } finally {\n setIsLoading(false);\n setErrorModalLoading(false);\n setIsPaymentFailed(false);\n setApiErrorResponse(undefined);\n }\n };\n\n const onErrorModalClose = async () => {\n setErrorModalLoading(true);\n // We were previously rolling back reservations here, but deciding against it.\n const params = new URLSearchParams(window.location.search);\n window.history.replaceState({}, '', `${window.location.pathname}?${params}`);\n\n window.location.reload();\n };\n\n const attemptFormSubmit = (): Promise<ConfirmationFormValues | null> =>\n new Promise(async (resolve) => {\n const customFieldValidation = await validateCustomFields();\n\n setCustomFieldsHaveErrors(!customFieldValidation);\n\n const onSuccess = (values: ConfirmationFormValues) => {\n if (customFieldValidation) {\n resolve(values);\n } else {\n resolve(null);\n }\n };\n const onFailure = () => {\n // We can just return because custom fields will handle their own validation\n resolve(null);\n };\n\n methods.handleSubmit(onSuccess, onFailure)();\n });\n\n const onContinueClick = async () => {\n // Regardless if we're checking out or getting ready to pay, we need to make sure the details entered are valid\n // so first step will be to validate the inputs.\n\n const values = await attemptFormSubmit();\n\n if (!values) {\n // Error state will be handled within `attemptFormSubmit`\n return;\n }\n\n if (exclusivePayment) {\n // Since we're in exclusive payment mode we need to decide are we submitting, or enabling the payment stage\n if (isInPaymentMode) {\n setIsPaymentLoading(true);\n\n const paymentResponse = await exclusivePayment.onConfirm?.();\n setIsPaymentLoading(false);\n\n if (paymentResponse.success) {\n await commitReservation(basketContext.reservationData, 'Please wait... Finalising your reservation');\n } else {\n // Payment failed. Need to see if user want's to re-try.\n setIsPaymentFailed(true);\n }\n } else {\n if (exclusivePayment.requireBookingPlaced) {\n await placeBooking(values, await exclusivePayment?.getBookingPaymentRequestObject());\n }\n setIsInPaymentMode(true);\n await exclusivePayment.onSelect?.();\n }\n } else {\n // We're not in exclusive payment mode, so we can just submit the form\n // First we need to find the pamynet object from the selected value\n const paymentMode = availablePaymentHandlers.find((handler) => handler.name === values.paymentMethod);\n if (!paymentMode) {\n console.error('No payment mode found for selected payment method', { paymentMethod: values.paymentMethod, availablePaymentHandlers });\n return;\n }\n\n try {\n setIsPaymentLoading(true);\n const response = await paymentMode.onConfirm();\n setIsPaymentLoading(false);\n\n if (response.success) {\n await placeBooking(values, { ...(await paymentMode?.getBookingPaymentRequestObject()), ...response.data });\n } else {\n // The error will be handled in the payment mode.\n }\n } catch (error) {\n console.error(error);\n }\n }\n };\n\n const onBackFromPaymentDetails = () => {\n setIsInPaymentMode(false);\n };\n\n return (\n <FormProvider {...methods}>\n <ConfirmationStepContextProvider\n value={{\n onContinueClick,\n bookingSource,\n\n commitReservation,\n rollbackReservation,\n redirectOut,\n setLoadingStatus,\n\n errorChecks,\n addErrorChecks: (...checks: (() => ConfirmationValidator)[]) => {\n setErrorChecks((oldErrors) => unionBy(checks, oldErrors, (check) => check().name));\n },\n\n isLoading,\n isBackFromPlanpay,\n isBackFromExternalPayment,\n isInPaymentMode,\n\n availablePaymentHandlers,\n }}\n >\n {isLoading && <OverlayLoader isFullscreen label={loadingStatus} />}\n <ConfirmationStepErrorModal onRetry={onRetryBooking} onClose={onErrorModalClose} errorData={apiErrorResponse} isLoading={errorModalLoading} />\n <AutoAutoHeight open={customFieldsHaveErrors}>\n <div className=\"u-pad-bottom\">\n <Alert icon={IconType.Error} type={AlertType.Danger}>\n <Text type={TextType.Small}>{t(Translation.Step.Confirmation.CustomInputFieldError)}</Text>\n </Alert>\n </div>\n </AutoAutoHeight>\n\n {children}\n <StepConfirmationCheckoutDifferencesModal\n differences={differenceWarning.differences}\n warnings={differenceWarning.warnings}\n isLoading={isLoading}\n onClose={async () => {\n await rollbackReservation?.();\n historyConsistentPush(getStepRoom().getStepUrl());\n }}\n onProceed={async () => {\n const resRequest = currentSession?.reservationRequest;\n const resResponse = basketContext.reservationData;\n\n try {\n if (resRequest && resResponse) {\n await onSubmitSuccess(resResponse, resRequest?.payment?.Method);\n setDifferenceWarning({ differences: [], warnings: [] });\n } else {\n ErrorHandler.add({ message: t(Translation.Step.Confirmation.UnexpectedErrorOnCommittingReservation) });\n Sentry.captureException('No reservation request or response found when attempting to commit: ' + JSON.stringify({ resRequest, resResponse }));\n }\n } catch (ex) {\n console.error('Failed to commit reservation', ex);\n Sentry.captureException(ex);\n }\n }}\n />\n\n <div className=\"u-flex u-marg-top--heavy justify-content-end\">\n {exclusivePayment && isInPaymentMode && (\n <div className=\"u-marg-right d-flex\">\n <BEButton icon={IconType.ArrowLeft} isText onClick={onBackFromPaymentDetails}>\n {t(Translation.Step.Confirmation.EditDetails)}\n </BEButton>\n </div>\n )}\n {isPaymentFailed && (\n <div className=\"u-marg-right d-flex\">\n <BEButton icon={IconType.Edit} stopIconAnimation primary filled onClick={onRetryBooking} isLoading={isLoading}>\n {t(Translation.Step.Confirmation.RetryPayment)}\n </BEButton>\n </div>\n )}\n <NextStepButton\n disabled={paymentMethod === EBookingPaymentMethod.Planpay || isLoading || isPaymentLoading}\n text={exclusivePayment && !isInPaymentMode ? t(Translation.Step.Confirmation.ContinueToPayment) : t(Translation.Step.Confirmation.ConfirmReservation)}\n isLoading={isLoading}\n onClick={onContinueClick}\n />\n </div>\n </ConfirmationStepContextProvider>\n </FormProvider>\n );\n};\n"]}
1
+ {"version":3,"file":"ConfirmationStepContextWrapper.js","sourceRoot":"/","sources":["src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext, ErrorHandler, useMemberContext } from '@frontend/contexts';\nimport { useCurrentHotel, useEvent } from '@frontend/hooks';\nimport { EBookingPaymentMethod, EHotelCardProcessor, IBookingCreateErrorResponse, IBookingPayment } from '@roomstay/core';\nimport { IconType } from '@roomstay/ui';\nimport * as Sentry from '@sentry/browser';\nimport { Severity } from '@sentry/types';\nimport { after, unionBy } from 'lodash';\nimport React, { FC, PropsWithChildren, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport API from '@/api/BookingAPI';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport BEButton from '@/components/generic/BEButton';\nimport NextStepButton from '@/components/generic/buttons/NextStepButton';\nimport { OverlayLoader } from '@/components/generic/loader/OverlayLoader';\nimport Text, { TextType } from '@/components/generic/Text';\nimport StepConfirmationCheckoutDifferencesModal from '@/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal';\nimport { ConfirmationStepContext } from '@/contexts/ConfirmationStepContext/ConfirmationStepContext';\nimport { PlacedBookingEvent } from '@/events/actions/PlacedBookingEvent';\nimport { CommittedBookingEvent } from '@/events/views/CommittedBookingEvent';\nimport { RolledBackBookingEvent } from '@/events/views/RolledBackBookingEvent';\nimport { adyenPaymentHandler } from '@/handlers/payment/AdyenPaymentHandler';\nimport { afterpayPaymentHandler } from '@/handlers/payment/AfterpayPaymentHandler';\nimport { PaymentHandler } from '@/handlers/payment/PaymentHandler';\nimport { planpayPaymentHandler } from '@/handlers/payment/PlanpayPaymentHandler';\nimport { redirectPaymentHandler } from '@/handlers/payment/RedirectPaymentHandler';\nimport { vgsMemberPaymentHandler } from '@/handlers/payment/VGSMemberPaymentHandler';\nimport { vgsPaymentHandler } from '@/handlers/payment/VGSPaymentHandler';\nimport { useConfirmationQuery } from '@/hooks/ConfirmationQuery';\nimport { useHistoryConsistentPush } from '@/hooks/HistoryConsistentPush';\nimport { useSignedInMember } from '@/hooks/useSignedInMember';\nimport ReservationsDTO, { ReservationDTO } from '@/models/Api/ReservationsDTO';\nimport BasketRowDifferences from '@/models/BasketRowDifferences';\nimport { ConfirmationFormValues, IBookValidationResult, TUserProfileFormValues } from '@/models/Confirmation';\nimport { ListOfCountriesAndCodes } from '@/models/CountryCodesAndNumbers';\nimport UserProfile from '@/models/UserProfile';\nimport { Translation } from '@/translations/Translation';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport getStepRoom from '@/util/GetStepRoom';\n\nimport { ConfirmationValidator } from './ConfirmationStepContextTypes';\nimport { ConfirmationStepErrorModal } from './ConfirmationStepErrorModal';\n\nconst ConfirmationStepContextProvider = ConfirmationStepContext.Provider;\n\nexport const ConfirmationStepContextWrapper: FC<PropsWithChildren<any>> = ({ children }) => {\n const [differenceWarning, setDifferenceWarning] = useState<{\n differences: BasketRowDifferences[];\n warnings: string[];\n }>({\n differences: [],\n warnings: [],\n });\n\n const { queryPaymentMethod, queryRoomstayId: queryReservationId, queryPlanpayCheckoutId, returnFromPayment, success } = useConfirmationQuery();\n // load the engine context\n const engineContext = useContext(BookingEngineContext);\n const { roomstayMember } = useMemberContext();\n\n const [bookingSource, setBookingSource] = useState<string>();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [isPaymentLoading, setIsPaymentLoading] = useState(false);\n const [loadingStatus, setLoadingStatus] = useState('');\n const [isPaymentFailed, setIsPaymentFailed] = useState(false);\n const [customFieldsHaveErrors, setCustomFieldsHaveErrors] = useState(false);\n const { isExternalMemberHotel, memberNumber } = useSignedInMember();\n\n const [apiErrorResponse, setApiErrorResponse] = useState<IBookingCreateErrorResponse>();\n const [errorModalLoading, setErrorModalLoading] = useState(false);\n const [isInPaymentMode, setIsInPaymentMode] = useState(false);\n const methods = useForm<ConfirmationFormValues>({\n mode: 'onSubmit',\n });\n const [errorChecks, setErrorChecks] = useState<(() => ConfirmationValidator)[]>([] as any);\n\n const [availablePaymentHandlers, setAvailablePaymentHandlers] = useState<PaymentHandler[]>([]);\n\n const basketContext = useContext(BasketContext);\n const basketRows = basketContext.getAllValidRows();\n const basketAddonRows = basketContext.basketAddonRows;\n\n const currentSession = useMemo(() => {\n return engineContext.sessionProvider.getSession();\n }, [basketContext.reservationData]);\n\n const { hotel } = useCurrentHotel();\n const { t } = useTranslation();\n const { raise } = useEvent();\n\n const allPaymentHandlers = [redirectPaymentHandler(), adyenPaymentHandler(), vgsPaymentHandler(), vgsMemberPaymentHandler(), planpayPaymentHandler(), afterpayPaymentHandler()];\n\n const historyConsistentPush = useHistoryConsistentPush();\n\n const isBackFromPlanpay = !!queryPlanpayCheckoutId && !!queryReservationId && !!queryPaymentMethod;\n const isBackFromExternalPayment = !!returnFromPayment && (!!success || !isBackFromPlanpay) && !!queryReservationId;\n\n const paymentMethod = methods.watch('paymentMethod');\n /**\n * We need to make sure that if the user navigates away from this step, we don't try to update the basket\n * with deposit data, as it can cause an unwanted redirect back to this step.\n */\n const confirmationStepIsActiveRef = useRef(true);\n useEffect(() => {\n return () => {\n confirmationStepIsActiveRef.current = false;\n };\n }, []);\n\n useEffect(() => {\n setBookingSource(engineContext.engine.getSessionProvider().getSession()?.source);\n\n const reservationRoomstayId: string | undefined = basketContext.reservationData?.roomstayId;\n const isMatchingRoomstayId: boolean = !!queryReservationId && (!reservationRoomstayId || queryReservationId === reservationRoomstayId);\n\n if (isBackFromExternalPayment && isMatchingRoomstayId) {\n commitReservation?.(basketContext.reservationData, 'Please wait... Finalising your reservation');\n }\n\n if (isBackFromPlanpay && queryReservationId === reservationRoomstayId) {\n commitReservation?.(basketContext.reservationData, 'Please wait... Finalising your reservation');\n }\n }, []);\n\n useEffect(() => {\n if (hotel?.requireDeposit) {\n basketContext.getBasketQuoteDetails(() => confirmationStepIsActiveRef.current);\n }\n }, [hotel?.requireDeposit]);\n\n useEffect(() => {\n const currentlyAvailablePaymentHandlers = allPaymentHandlers.filter((handler) => handler.isAvailable);\n let defaultPaymentHandler = '';\n\n if (roomstayMember?.cards && currentlyAvailablePaymentHandlers.some((handler) => handler.name === 'VGSMember')) {\n defaultPaymentHandler = 'VGSMember';\n }\n\n if (!defaultPaymentHandler && currentlyAvailablePaymentHandlers.length > 0) {\n defaultPaymentHandler = currentlyAvailablePaymentHandlers[0].name;\n }\n\n methods.setValue('paymentMethod', defaultPaymentHandler);\n\n setAvailablePaymentHandlers(currentlyAvailablePaymentHandlers);\n }, [hotel]);\n\n useEffect(() => {\n const selectedPayment = availablePaymentHandlers.find((handler) => handler.name === paymentMethod);\n\n if (!selectedPayment) {\n return;\n }\n\n if (selectedPayment.requireBookingPlaced && !selectedPayment.isExclusive) {\n onContinueClick();\n }\n }, [paymentMethod]);\n\n const exclusivePayment = useMemo(() => {\n return availablePaymentHandlers.find((handler) => handler.isExclusive);\n }, [availablePaymentHandlers]);\n\n const toUserProfiles = (formValues: ConfirmationFormValues): UserProfile[] => {\n return formValues.userProfiles.map((values) => {\n let shortCountryCode: string | undefined = values.CountryCode;\n\n if (!shortCountryCode) {\n const country = ListOfCountriesAndCodes.find((country) => country.label === values.Country);\n shortCountryCode = country?.code;\n }\n\n return {\n Title: values.Title,\n FirstName: values.Forename,\n LastName: values.Surname,\n Phone: values.Phone.replace(' ', ''),\n Email: values.Email,\n Address: {\n Line1: values.Address,\n City: values.City,\n PostalCode: values.PostCode,\n State: values.State,\n Country: values.Country,\n CountryId: values.CountryId,\n CountryCode: shortCountryCode,\n },\n MarketingOptIn: formValues.marketingOptIn,\n AuxInputs: values.AuxInputs,\n };\n });\n };\n\n const validateCustomFields = (scrollToInput?: boolean): boolean => {\n const adhocValid = errorChecks.every((check) => check().validate(scrollToInput));\n return adhocValid === undefined ? true : adhocValid;\n };\n\n const validateReservation = async (data: ReservationsDTO): Promise<IBookValidationResult | undefined> => {\n const apiDifferences: BasketRowDifferences[] = [];\n if (data.reservations) {\n data.reservations.forEach((reservation: ReservationDTO, index) => {\n const diff = basketContext.currentBasketRows[index].checkDiffFromReservation(reservation);\n\n if (diff) {\n apiDifferences.push(diff);\n }\n });\n } else {\n Sentry.addBreadcrumb({\n level: Severity.Error,\n message: 'No reservation data: ' + JSON.stringify(data),\n });\n throw new Error('The reservation could not be completed due to an unexpected issue, please try again');\n }\n\n // If there are differences, we want to display them to make sure the booking still needs to proceed\n if (apiDifferences.length || (data.warnings && data.warnings.length)) {\n return {\n differences: apiDifferences,\n warnings: data.warnings as string[],\n };\n }\n };\n\n const onSubmitSuccess = async (data: ReservationsDTO, paymentMethod: EBookingPaymentMethod) => {\n await raise(new PlacedBookingEvent(data, basketContext.currentBasketRows, hotel));\n\n // If this is a planpay booking, we don't need to do anything else.\n if (paymentMethod === EBookingPaymentMethod.Planpay) {\n return;\n }\n\n if (hotel?.cardProcessor === EHotelCardProcessor.Passthrough) {\n await commitReservation?.(data);\n } else {\n if (data.payment?.external?.redirectUrl) {\n redirectOut(data.payment?.external?.redirectUrl);\n }\n }\n };\n\n const placeBooking = async (formPayload: ConfirmationFormValues, payment: IBookingPayment): Promise<ReservationsDTO | null> => {\n DataLayer.instance.sendInteraction('Complete Booking', InteractionType.BUTTON, InteractionStep.GUEST_DETAILS);\n setIsLoading(true);\n let data: ReservationsDTO | undefined;\n\n const userProfiles = toUserProfiles(formPayload);\n\n try {\n const captureChildAgeComments: string[] = hotel?.captureChildAge\n ? formPayload.userProfiles.flatMap(\n (formValue: TUserProfileFormValues, roomIndex: number) =>\n formValue?.CaptureChildAge?.map((age: string, childIndex: number) => `Room ${roomIndex + 1} - Child: ${childIndex + 1} Age: ${age}`) || []\n )\n : [];\n\n const comments = formPayload.comments;\n\n const bookingComment = captureChildAgeComments.length > 0 ? `${comments}\\n${captureChildAgeComments.join('\\n')}` : comments;\n\n data = await API.Reservation.bookNow(\n basketRows,\n userProfiles,\n payment,\n basketAddonRows,\n bookingComment || '',\n hotel?.hotelID as string,\n engineContext.sessionProvider.getCurrentSessionID().toString(),\n undefined,\n undefined,\n undefined,\n isExternalMemberHotel ? memberNumber : undefined\n );\n await basketContext.booked(data, {\n userProfiles,\n payment,\n comments: bookingComment || '',\n });\n\n const validationResult = await validateReservation(data);\n if (validationResult) {\n setIsLoading(false);\n setDifferenceWarning(validationResult);\n\n return null;\n } else {\n await onSubmitSuccess(data, payment.Method);\n\n return data;\n }\n } catch (error: any) {\n setApiErrorResponse(error as IBookingCreateErrorResponse);\n } finally {\n setIsLoading(false);\n }\n\n return null;\n };\n\n const parseReservationIdsFromData = (data: ReservationsDTO) => {\n return data?.reservations?.map((reservation) => reservation.reservationNumber);\n };\n\n const commitReservation = async (resData: ReservationsDTO, statusUpdate?: string) => {\n try {\n if (statusUpdate) {\n setLoadingStatus(statusUpdate);\n }\n\n setIsLoading(true);\n\n if (resData) {\n const reservationIds = parseReservationIdsFromData(resData);\n if (reservationIds.length) {\n try {\n const response = await API.Reservation.commit(reservationIds, resData.itineraryNumber, hotel?.hotelID as string, queryPlanpayCheckoutId || undefined);\n try {\n DataLayer.instance.sendReservationConfirmed(basketContext.getAllValidRows(), basketContext.basketAddonRows, response);\n } catch (ex) {\n Sentry.captureException('Failed to read reservations from GTM code: ' + JSON.stringify(ex));\n }\n basketContext.checkedOut(response);\n raise(new CommittedBookingEvent(resData, basketContext.currentBasketRows));\n } catch (error: any) {\n setApiErrorResponse(error);\n }\n } else {\n ErrorHandler.add({ message: t(Translation.Step.Confirmation.UnexpectedErrorOnCommittingReservation) });\n Sentry.captureException('No reservation IDs found when attempting to commit: ' + JSON.stringify(resData));\n }\n }\n } catch (ex) {\n console.error(ex);\n Sentry.captureException(ex);\n }\n\n setIsLoading(false);\n };\n\n const rollbackReservation = async () => {\n if (!basketContext.reservationData) return;\n\n try {\n const reservationIds = parseReservationIdsFromData(basketContext.reservationData);\n if (reservationIds.length) {\n setIsLoading(true);\n await API.Reservation.rollback(reservationIds, basketContext.reservationData.itineraryNumber, hotel?.hotelID as string);\n raise(new RolledBackBookingEvent(basketContext.reservationData));\n } else {\n Sentry.captureException('No reservation IDs found when attempting to rollback: ' + JSON.stringify(basketContext.reservationData));\n }\n } catch (ex) {\n console.log('Failed to rollback reservations');\n Sentry.captureException(ex);\n } finally {\n basketContext.rollback();\n setIsLoading(false);\n }\n };\n\n const redirectOut = (targetUrl: string, stateUpdate?: string) => {\n setIsLoading(true);\n if (stateUpdate) {\n setLoadingStatus(stateUpdate);\n }\n\n window.location.href = targetUrl;\n };\n\n const onRetryBooking = async () => {\n setErrorModalLoading(true);\n setIsLoading(true);\n\n const resRequest = currentSession?.reservationRequest;\n const roomstayId = currentSession?.reservation?.roomstayId;\n\n if (!resRequest || !roomstayId) {\n console.error('No reservation request or roomstay ID found in session', { resRequest, roomstayId });\n return null;\n }\n\n try {\n const data = await API.Reservation.bookNow(\n basketRows,\n resRequest.userProfiles,\n resRequest.payment,\n basketAddonRows,\n '',\n hotel?.hotelID as string,\n engineContext.sessionProvider.getCurrentSessionID().toString(),\n undefined,\n true,\n roomstayId,\n isExternalMemberHotel ? memberNumber : undefined\n );\n await basketContext.booked(data);\n const validationResult = await validateReservation(data);\n\n if (validationResult) {\n setIsLoading(false);\n } else {\n await onSubmitSuccess(data, resRequest.payment?.Method);\n }\n } catch (error: any) {\n setApiErrorResponse(error as IBookingCreateErrorResponse);\n } finally {\n setIsLoading(false);\n setErrorModalLoading(false);\n setIsPaymentFailed(false);\n setApiErrorResponse(undefined);\n }\n };\n\n const onErrorModalClose = async () => {\n setErrorModalLoading(true);\n // We were previously rolling back reservations here, but deciding against it.\n const params = new URLSearchParams(window.location.search);\n window.history.replaceState({}, '', `${window.location.pathname}?${params}`);\n\n window.location.reload();\n };\n\n const attemptFormSubmit = (): Promise<ConfirmationFormValues | null> =>\n new Promise(async (resolve) => {\n const customFieldValidation = await validateCustomFields();\n\n setCustomFieldsHaveErrors(!customFieldValidation);\n\n const onSuccess = (values: ConfirmationFormValues) => {\n if (customFieldValidation) {\n resolve(values);\n } else {\n resolve(null);\n }\n };\n const onFailure = () => {\n // We can just return because custom fields will handle their own validation\n resolve(null);\n };\n\n methods.handleSubmit(onSuccess, onFailure)();\n });\n\n const onContinueClick = async () => {\n // Regardless if we're checking out or getting ready to pay, we need to make sure the details entered are valid\n // so first step will be to validate the inputs.\n\n const values = await attemptFormSubmit();\n\n if (!values) {\n // Error state will be handled within `attemptFormSubmit`\n return;\n }\n\n if (exclusivePayment) {\n // Since we're in exclusive payment mode we need to decide are we submitting, or enabling the payment stage\n if (isInPaymentMode) {\n setIsPaymentLoading(true);\n\n const paymentResponse = await exclusivePayment.onConfirm?.();\n setIsPaymentLoading(false);\n\n if (paymentResponse.success) {\n await commitReservation(basketContext.reservationData, 'Please wait... Finalising your reservation');\n } else {\n // Payment failed. Need to see if user want's to re-try.\n setIsPaymentFailed(true);\n }\n } else {\n if (exclusivePayment.requireBookingPlaced) {\n await placeBooking(values, await exclusivePayment?.getBookingPaymentRequestObject());\n }\n setIsInPaymentMode(true);\n await exclusivePayment.onSelect?.();\n }\n } else {\n // We're not in exclusive payment mode, so we can just submit the form\n // First we need to find the pamynet object from the selected value\n const paymentMode = availablePaymentHandlers.find((handler) => handler.name === values.paymentMethod);\n if (!paymentMode) {\n console.error('No payment mode found for selected payment method', { paymentMethod: values.paymentMethod, availablePaymentHandlers });\n return;\n }\n\n try {\n setIsPaymentLoading(true);\n const response = await paymentMode.onConfirm();\n setIsPaymentLoading(false);\n\n if (response.success) {\n await placeBooking(values, { ...(await paymentMode?.getBookingPaymentRequestObject()), ...response.data });\n } else {\n // The error will be handled in the payment mode.\n }\n } catch (error) {\n console.error(error);\n } finally {\n setIsPaymentLoading(false);\n }\n }\n };\n\n const onBackFromPaymentDetails = () => {\n setIsInPaymentMode(false);\n };\n\n return (\n <FormProvider {...methods}>\n <ConfirmationStepContextProvider\n value={{\n onContinueClick,\n bookingSource,\n\n commitReservation,\n rollbackReservation,\n redirectOut,\n setLoadingStatus,\n\n errorChecks,\n addErrorChecks: (...checks: (() => ConfirmationValidator)[]) => {\n setErrorChecks((oldErrors) => unionBy(checks, oldErrors, (check) => check().name));\n },\n\n isLoading,\n isBackFromPlanpay,\n isBackFromExternalPayment,\n isInPaymentMode,\n\n availablePaymentHandlers,\n }}\n >\n {isLoading && <OverlayLoader isFullscreen label={loadingStatus} />}\n <ConfirmationStepErrorModal onRetry={onRetryBooking} onClose={onErrorModalClose} errorData={apiErrorResponse} isLoading={errorModalLoading} />\n <AutoAutoHeight open={customFieldsHaveErrors}>\n <div className=\"u-pad-bottom\">\n <Alert icon={IconType.Error} type={AlertType.Danger}>\n <Text type={TextType.Small}>{t(Translation.Step.Confirmation.CustomInputFieldError)}</Text>\n </Alert>\n </div>\n </AutoAutoHeight>\n\n {children}\n <StepConfirmationCheckoutDifferencesModal\n differences={differenceWarning.differences}\n warnings={differenceWarning.warnings}\n isLoading={isLoading}\n onClose={async () => {\n await rollbackReservation?.();\n historyConsistentPush(getStepRoom().getStepUrl());\n }}\n onProceed={async () => {\n const resRequest = currentSession?.reservationRequest;\n const resResponse = basketContext.reservationData;\n\n try {\n if (resRequest && resResponse) {\n await onSubmitSuccess(resResponse, resRequest?.payment?.Method);\n setDifferenceWarning({ differences: [], warnings: [] });\n } else {\n ErrorHandler.add({ message: t(Translation.Step.Confirmation.UnexpectedErrorOnCommittingReservation) });\n Sentry.captureException('No reservation request or response found when attempting to commit: ' + JSON.stringify({ resRequest, resResponse }));\n }\n } catch (ex) {\n console.error('Failed to commit reservation', ex);\n Sentry.captureException(ex);\n }\n }}\n />\n\n <div className=\"u-flex u-marg-top--heavy justify-content-end\">\n {exclusivePayment && isInPaymentMode && (\n <div className=\"u-marg-right d-flex\">\n <BEButton icon={IconType.ArrowLeft} isText onClick={onBackFromPaymentDetails}>\n {t(Translation.Step.Confirmation.EditDetails)}\n </BEButton>\n </div>\n )}\n {isPaymentFailed && (\n <div className=\"u-marg-right d-flex\">\n <BEButton icon={IconType.Edit} stopIconAnimation primary filled onClick={onRetryBooking} isLoading={isLoading}>\n {t(Translation.Step.Confirmation.RetryPayment)}\n </BEButton>\n </div>\n )}\n <NextStepButton\n disabled={paymentMethod === EBookingPaymentMethod.Planpay || isLoading || isPaymentLoading}\n text={exclusivePayment && !isInPaymentMode ? t(Translation.Step.Confirmation.ContinueToPayment) : t(Translation.Step.Confirmation.ConfirmReservation)}\n isLoading={isLoading}\n onClick={onContinueClick}\n />\n </div>\n </ConfirmationStepContextProvider>\n </FormProvider>\n );\n};\n"]}
@@ -15,5 +15,6 @@ export interface IDatePickerContext {
15
15
  arrivalNightStay: IArrivalNightStay;
16
16
  nightStayValidation: INightStayValidation;
17
17
  nightStayRequirements: string[];
18
+ roomCode: string;
18
19
  }
19
20
  export declare const DatePickerContext: React.Context<IDatePickerContext>;
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerContext.js","sourceRoot":"/","sources":["src/contexts/DatePickerContext.tsx"],"names":[],"mappings":";;;;;;AAEA,kDAA0B;AAkBb,QAAA,iBAAiB,GAAG,eAAK,CAAC,aAAa,CAAqB,EAAwB,CAAC,CAAC","sourcesContent":["import { IArrivalNightStay, INightStayValidation } from '@frontend/hooks';\nimport { Dayjs } from 'dayjs';\nimport React from 'react';\n\nexport interface IDatePickerContext {\n todayInUnix: number;\n today: Dayjs | null;\n startDate: Dayjs | null;\n endDate: Dayjs | null;\n hoveredMonth: Dayjs | null;\n currentMonth: Dayjs | null;\n maxPrice: number;\n onHoverOver: (date: Dayjs) => void;\n onDayClicked: (date: Dayjs) => void;\n setMaxPrice: (price: number) => void;\n arrivalNightStay: IArrivalNightStay;\n nightStayValidation: INightStayValidation;\n nightStayRequirements: string[];\n}\n\nexport const DatePickerContext = React.createContext<IDatePickerContext>({} as IDatePickerContext);\n"]}
1
+ {"version":3,"file":"DatePickerContext.js","sourceRoot":"/","sources":["src/contexts/DatePickerContext.tsx"],"names":[],"mappings":";;;;;;AAEA,kDAA0B;AAmBb,QAAA,iBAAiB,GAAG,eAAK,CAAC,aAAa,CAAqB,EAAwB,CAAC,CAAC","sourcesContent":["import { IArrivalNightStay, INightStayValidation } from '@frontend/hooks';\nimport { Dayjs } from 'dayjs';\nimport React from 'react';\n\nexport interface IDatePickerContext {\n todayInUnix: number;\n today: Dayjs | null;\n startDate: Dayjs | null;\n endDate: Dayjs | null;\n hoveredMonth: Dayjs | null;\n currentMonth: Dayjs | null;\n maxPrice: number;\n onHoverOver: (date: Dayjs) => void;\n onDayClicked: (date: Dayjs) => void;\n setMaxPrice: (price: number) => void;\n arrivalNightStay: IArrivalNightStay;\n nightStayValidation: INightStayValidation;\n nightStayRequirements: string[];\n roomCode: string;\n}\n\nexport const DatePickerContext = React.createContext<IDatePickerContext>({} as IDatePickerContext);\n"]}
@@ -278,6 +278,9 @@ const useAuthenticationContext = () => {
278
278
  hotelEmail: email || '',
279
279
  hotelPhone: (hotel === null || hotel === void 0 ? void 0 : hotel.phone) || '',
280
280
  sourceUrlStr: window.location.href,
281
+ instagramUrl: (hotel === null || hotel === void 0 ? void 0 : hotel.instagramUrl) || '',
282
+ facebookUrl: (hotel === null || hotel === void 0 ? void 0 : hotel.facebookUrl) || '',
283
+ linkedinUrl: (hotel === null || hotel === void 0 ? void 0 : hotel.linkedinUrl) || '',
281
284
  };
282
285
  };
283
286
  return {
@@ -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 const [userCompanyShort] = base64.decode(user.username).split('-');\n\n if (userCompanyShort === companyShort) {\n cognitoUserSet(user);\n cognitoLoginStateSet(CognitoLoginState.Success);\n }\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"]}
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 const [userCompanyShort] = base64.decode(user.username).split('-');\n\n if (userCompanyShort === companyShort) {\n cognitoUserSet(user);\n cognitoLoginStateSet(CognitoLoginState.Success);\n }\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 instagramUrl: hotel?.instagramUrl || '',\n facebookUrl: hotel?.facebookUrl || '',\n linkedinUrl: hotel?.linkedinUrl || '',\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"]}
@@ -48,10 +48,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
48
48
  Object.defineProperty(exports, "__esModule", { value: true });
49
49
  exports.RoomstayMemberContextProvider = void 0;
50
50
  const contexts_1 = require("../../index.js");
51
- const core_1 = require("@roomstay/core");
52
51
  const dayjs_1 = __importDefault(require("dayjs"));
53
52
  const react_1 = __importStar(require("react"));
54
53
  const MembersServiceAPI_1 = require("../../../api/members-service/MembersServiceAPI");
54
+ const EventsHelper_1 = require("../../../util/EventsHelper");
55
55
  const ROOMSTAY_MEMBER_CACHE_TIME = 60 * 60; // 1 hour
56
56
  const ROOMSTAY_MEMBER_CACHE_KEY = 'roomstay-member';
57
57
  const getCachedRoomstayMember = () => {
@@ -159,10 +159,10 @@ const useRoomstayMemberContext = () => {
159
159
  return 1;
160
160
  });
161
161
  for (const booking of sortedAllItineraries) {
162
- if (booking.status === core_1.IBookingStatus.Cancelled) {
162
+ if ((0, EventsHelper_1.isCancelledBooking)(booking)) {
163
163
  bookingBrackets.cancelled.push(booking);
164
164
  }
165
- else if ((0, dayjs_1.default)(booking.checkOutDate).isBefore((0, dayjs_1.default)())) {
165
+ else if ((0, EventsHelper_1.isPastBooking)(booking)) {
166
166
  bookingBrackets.past.push(booking);
167
167
  }
168
168
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"RoomstayMemberContextProvider.js","sourceRoot":"/","sources":["src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n AuthenticationContext,\n BasketContext,\n CompanyContext,\n IRoomstayMemberBookingItemWithRefAndHotelDetails,\n IRoomstayMemberContext,\n RoomstayMemberContext,\n} from '@frontend/contexts';\nimport { IBookingStatus, IRoomstayMember, IRoomstayMemberBooking, IRoomstayMemberCards } from '@roomstay/core';\nimport dayjs from 'dayjs';\nimport React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';\n\nimport { GetMemberDetails, UpdateMemberDetails } from '@/api/members-service/MembersServiceAPI';\n\nconst ROOMSTAY_MEMBER_CACHE_TIME = 60 * 60; // 1 hour\nconst ROOMSTAY_MEMBER_CACHE_KEY = 'roomstay-member';\n\nconst getCachedRoomstayMember = (): IRoomstayMember | undefined => {\n const roomstayMember = localStorage.getItem(ROOMSTAY_MEMBER_CACHE_KEY);\n if (roomstayMember) {\n const parsedRoomstayMember = JSON.parse(roomstayMember);\n\n if (parsedRoomstayMember.timestamp && dayjs().unix() - parsedRoomstayMember.timestamp < ROOMSTAY_MEMBER_CACHE_TIME) {\n return parsedRoomstayMember.data;\n }\n\n localStorage.removeItem(ROOMSTAY_MEMBER_CACHE_KEY);\n }\n\n return undefined;\n};\n\nconst cacheRoomstayMember = (member?: IRoomstayMember) => {\n if (member) {\n localStorage.setItem(\n ROOMSTAY_MEMBER_CACHE_KEY,\n JSON.stringify({\n data: member,\n timestamp: dayjs().unix(),\n })\n );\n } else {\n localStorage.removeItem(ROOMSTAY_MEMBER_CACHE_KEY);\n }\n};\n\nconst useRoomstayMemberContext = (): IRoomstayMemberContext => {\n const { loading: acLoading, cognitoUser } = useContext(AuthenticationContext);\n const { signUserIn, signUserOut } = useContext(CompanyContext);\n const { hasCheckedOut } = useContext(BasketContext);\n\n const [isFetching, isFetchingSet] = useState<boolean>(true);\n const [roomstayMember, roomstayMemberSet] = useState<IRoomstayMember | undefined>();\n const [cards, cardsSet] = useState<IRoomstayMemberCards[]>([]);\n\n const [allBookings, setAllBookings] = useState<IRoomstayMemberBooking[]>([]);\n\n const [allItineraries, setAllItineraries] = useState<IRoomstayMemberBookingItemWithRefAndHotelDetails[]>([]);\n const [cancelledBookings, setCancelledBookings] = useState<IRoomstayMemberBookingItemWithRefAndHotelDetails[]>([]);\n const [pastBookings, setPastBookings] = useState<IRoomstayMemberBookingItemWithRefAndHotelDetails[]>([]);\n const [upcomingBookings, setUpcomingBookings] = useState<IRoomstayMemberBookingItemWithRefAndHotelDetails[]>([]);\n\n const updateRoomstayMember = (member?: IRoomstayMember) => {\n roomstayMemberSet(member);\n cacheRoomstayMember(member);\n };\n\n useEffect(() => {\n isFetchingSet(true);\n try {\n const roomstayMember = getCachedRoomstayMember();\n if (roomstayMember) {\n roomstayMemberSet(roomstayMember);\n }\n } finally {\n isFetchingSet(false);\n }\n }, []);\n\n useEffect(() => {\n if (roomstayMember) {\n setAllBookings(roomstayMember.bookings);\n\n signUserIn({\n saveState: false,\n memberNumber: roomstayMember.email,\n firstName: roomstayMember.forename,\n lastName: roomstayMember.surname,\n email: roomstayMember.email,\n });\n } else {\n signUserOut();\n setAllBookings([]);\n }\n }, [roomstayMember]);\n\n useEffect(() => {\n const itineraries = [];\n for (const booking of allBookings ?? []) {\n const itineraryKeys = Object.keys(booking.itinerary);\n\n for (const key of itineraryKeys) {\n const bookingItem: IRoomstayMemberBookingItemWithRefAndHotelDetails = {\n ...booking.itinerary[key],\n bookingId: booking.itineraryId,\n hotel: booking.hotel,\n hotelId: booking.hotelId,\n };\n\n itineraries.push(bookingItem);\n }\n }\n\n itineraries.sort((a, b) => {\n return dayjs(b.checkInDate).diff(dayjs(a.checkInDate));\n });\n\n setAllItineraries(itineraries);\n }, [allBookings]);\n\n useEffect(() => {\n const bookingBrackets: { [key in 'cancelled' | 'past' | 'upcoming']: IRoomstayMemberBookingItemWithRefAndHotelDetails[] } = {\n past: [],\n upcoming: [],\n cancelled: [],\n };\n\n const sortedAllItineraries = allItineraries.sort(\n ({ checkInDate: aCheckInDateString, checkOutDate: aCheckOutDateString }, { checkInDate: bCheckInDateString, checkOutDate: bCheckOutDateString }) => {\n const aCheckInDate = dayjs(aCheckInDateString);\n const bCheckInDate = dayjs(bCheckInDateString);\n if (aCheckInDate.isSame(bCheckInDate)) {\n const aCheckOutDate = dayjs(aCheckOutDateString);\n const bCheckOutDate = dayjs(bCheckOutDateString);\n if (aCheckOutDate.isSame(bCheckOutDate)) return 0;\n else if (aCheckOutDate.isBefore(bCheckOutDate)) return -1;\n else return 1;\n } else if (aCheckInDate.isBefore(bCheckInDate)) return -1;\n else return 1;\n }\n );\n\n for (const booking of sortedAllItineraries) {\n if (booking.status === IBookingStatus.Cancelled) {\n bookingBrackets.cancelled.push(booking);\n } else if (dayjs(booking.checkOutDate).isBefore(dayjs())) {\n bookingBrackets.past.push(booking);\n } else {\n bookingBrackets.upcoming.push(booking);\n }\n }\n\n setCancelledBookings(bookingBrackets.cancelled);\n setUpcomingBookings(bookingBrackets.upcoming);\n setPastBookings(bookingBrackets.past);\n }, [allItineraries]);\n\n const loading = useMemo(() => isFetching || acLoading, [isFetching, acLoading]);\n\n const fetchRoomstayMember = useCallback(async () => {\n if (cognitoUser) {\n isFetchingSet(true);\n\n try {\n const member = await GetMemberDetails();\n updateRoomstayMember(member);\n cardsSet(member.cards ?? []);\n } catch (e) {\n // TODO deal with members that we haven't been able to fetch\n console.log(e);\n }\n\n isFetchingSet(false);\n } else {\n updateRoomstayMember(undefined);\n cardsSet([]);\n }\n }, [cognitoUser]);\n\n useEffect(() => {\n fetchRoomstayMember();\n }, [fetchRoomstayMember]);\n\n useEffect(() => {\n if (hasCheckedOut) {\n fetchRoomstayMember();\n }\n }, [hasCheckedOut]);\n\n const updateCardToMemberDetail = (card: IRoomstayMemberCards): void => {\n const index = roomstayMember?.cards.findIndex((item) => item.cardId === card.cardId);\n if (index && roomstayMember?.cards[index]) {\n if (index !== -1) {\n roomstayMember.cards[index] = card;\n } else {\n roomstayMember.cards.push(card);\n }\n }\n\n if (roomstayMember?.cards) cardsSet([...roomstayMember.cards]);\n updateRoomstayMember(roomstayMember);\n };\n\n const updateMemberDetails = async (newMemberDetails: IRoomstayMember) => {\n const { ...memberDetailsToSubmit } = newMemberDetails;\n isFetchingSet(true);\n try {\n const updatedMember = await UpdateMemberDetails(memberDetailsToSubmit);\n\n if (updatedMember && updatedMember.username) {\n updateRoomstayMember(updatedMember);\n }\n if (updatedMember?.cards) cardsSet([...updatedMember.cards]);\n } catch (e) {\n // TODO\n }\n\n isFetchingSet(false);\n };\n\n return {\n loading,\n roomstayMember,\n cards,\n\n allBookings,\n\n allItineraries,\n upcomingBookings,\n pastBookings,\n cancelledBookings,\n\n updateCardToMemberDetail,\n updateMemberDetails,\n fetchRoomstayMember,\n isFetchingMember: isFetching,\n };\n};\n\nexport const RoomstayMemberContextProvider: React.FC = ({ children }) => {\n return <RoomstayMemberContext.Provider value={useRoomstayMemberContext()}>{children}</RoomstayMemberContext.Provider>;\n};\n"]}
1
+ {"version":3,"file":"RoomstayMemberContextProvider.js","sourceRoot":"/","sources":["src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n AuthenticationContext,\n BasketContext,\n CompanyContext,\n IRoomstayMemberBookingItemWithRefAndHotelDetails,\n IRoomstayMemberContext,\n RoomstayMemberContext,\n} from '@frontend/contexts';\nimport { IRoomstayMember, IRoomstayMemberBooking, IRoomstayMemberCards } from '@roomstay/core';\nimport dayjs from 'dayjs';\nimport React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';\n\nimport { GetMemberDetails, UpdateMemberDetails } from '@/api/members-service/MembersServiceAPI';\nimport { isCancelledBooking, isPastBooking } from '@/util/EventsHelper';\n\nconst ROOMSTAY_MEMBER_CACHE_TIME = 60 * 60; // 1 hour\nconst ROOMSTAY_MEMBER_CACHE_KEY = 'roomstay-member';\n\nconst getCachedRoomstayMember = (): IRoomstayMember | undefined => {\n const roomstayMember = localStorage.getItem(ROOMSTAY_MEMBER_CACHE_KEY);\n if (roomstayMember) {\n const parsedRoomstayMember = JSON.parse(roomstayMember);\n\n if (parsedRoomstayMember.timestamp && dayjs().unix() - parsedRoomstayMember.timestamp < ROOMSTAY_MEMBER_CACHE_TIME) {\n return parsedRoomstayMember.data;\n }\n\n localStorage.removeItem(ROOMSTAY_MEMBER_CACHE_KEY);\n }\n\n return undefined;\n};\n\nconst cacheRoomstayMember = (member?: IRoomstayMember) => {\n if (member) {\n localStorage.setItem(\n ROOMSTAY_MEMBER_CACHE_KEY,\n JSON.stringify({\n data: member,\n timestamp: dayjs().unix(),\n })\n );\n } else {\n localStorage.removeItem(ROOMSTAY_MEMBER_CACHE_KEY);\n }\n};\n\nconst useRoomstayMemberContext = (): IRoomstayMemberContext => {\n const { loading: acLoading, cognitoUser } = useContext(AuthenticationContext);\n const { signUserIn, signUserOut } = useContext(CompanyContext);\n const { hasCheckedOut } = useContext(BasketContext);\n\n const [isFetching, isFetchingSet] = useState<boolean>(true);\n const [roomstayMember, roomstayMemberSet] = useState<IRoomstayMember | undefined>();\n const [cards, cardsSet] = useState<IRoomstayMemberCards[]>([]);\n\n const [allBookings, setAllBookings] = useState<IRoomstayMemberBooking[]>([]);\n\n const [allItineraries, setAllItineraries] = useState<IRoomstayMemberBookingItemWithRefAndHotelDetails[]>([]);\n const [cancelledBookings, setCancelledBookings] = useState<IRoomstayMemberBookingItemWithRefAndHotelDetails[]>([]);\n const [pastBookings, setPastBookings] = useState<IRoomstayMemberBookingItemWithRefAndHotelDetails[]>([]);\n const [upcomingBookings, setUpcomingBookings] = useState<IRoomstayMemberBookingItemWithRefAndHotelDetails[]>([]);\n\n const updateRoomstayMember = (member?: IRoomstayMember) => {\n roomstayMemberSet(member);\n cacheRoomstayMember(member);\n };\n\n useEffect(() => {\n isFetchingSet(true);\n try {\n const roomstayMember = getCachedRoomstayMember();\n if (roomstayMember) {\n roomstayMemberSet(roomstayMember);\n }\n } finally {\n isFetchingSet(false);\n }\n }, []);\n\n useEffect(() => {\n if (roomstayMember) {\n setAllBookings(roomstayMember.bookings);\n\n signUserIn({\n saveState: false,\n memberNumber: roomstayMember.email,\n firstName: roomstayMember.forename,\n lastName: roomstayMember.surname,\n email: roomstayMember.email,\n });\n } else {\n signUserOut();\n setAllBookings([]);\n }\n }, [roomstayMember]);\n\n useEffect(() => {\n const itineraries = [];\n for (const booking of allBookings ?? []) {\n const itineraryKeys = Object.keys(booking.itinerary);\n\n for (const key of itineraryKeys) {\n const bookingItem: IRoomstayMemberBookingItemWithRefAndHotelDetails = {\n ...booking.itinerary[key],\n bookingId: booking.itineraryId,\n hotel: booking.hotel,\n hotelId: booking.hotelId,\n };\n\n itineraries.push(bookingItem);\n }\n }\n\n itineraries.sort((a, b) => {\n return dayjs(b.checkInDate).diff(dayjs(a.checkInDate));\n });\n\n setAllItineraries(itineraries);\n }, [allBookings]);\n\n useEffect(() => {\n const bookingBrackets: { [key in 'cancelled' | 'past' | 'upcoming']: IRoomstayMemberBookingItemWithRefAndHotelDetails[] } = {\n past: [],\n upcoming: [],\n cancelled: [],\n };\n\n const sortedAllItineraries = allItineraries.sort(\n ({ checkInDate: aCheckInDateString, checkOutDate: aCheckOutDateString }, { checkInDate: bCheckInDateString, checkOutDate: bCheckOutDateString }) => {\n const aCheckInDate = dayjs(aCheckInDateString);\n const bCheckInDate = dayjs(bCheckInDateString);\n if (aCheckInDate.isSame(bCheckInDate)) {\n const aCheckOutDate = dayjs(aCheckOutDateString);\n const bCheckOutDate = dayjs(bCheckOutDateString);\n if (aCheckOutDate.isSame(bCheckOutDate)) return 0;\n else if (aCheckOutDate.isBefore(bCheckOutDate)) return -1;\n else return 1;\n } else if (aCheckInDate.isBefore(bCheckInDate)) return -1;\n else return 1;\n }\n );\n\n for (const booking of sortedAllItineraries) {\n if (isCancelledBooking(booking)) {\n bookingBrackets.cancelled.push(booking);\n } else if (isPastBooking(booking)) {\n bookingBrackets.past.push(booking);\n } else {\n bookingBrackets.upcoming.push(booking);\n }\n }\n\n setCancelledBookings(bookingBrackets.cancelled);\n setUpcomingBookings(bookingBrackets.upcoming);\n setPastBookings(bookingBrackets.past);\n }, [allItineraries]);\n\n const loading = useMemo(() => isFetching || acLoading, [isFetching, acLoading]);\n\n const fetchRoomstayMember = useCallback(async () => {\n if (cognitoUser) {\n isFetchingSet(true);\n\n try {\n const member = await GetMemberDetails();\n updateRoomstayMember(member);\n cardsSet(member.cards ?? []);\n } catch (e) {\n // TODO deal with members that we haven't been able to fetch\n console.log(e);\n }\n\n isFetchingSet(false);\n } else {\n updateRoomstayMember(undefined);\n cardsSet([]);\n }\n }, [cognitoUser]);\n\n useEffect(() => {\n fetchRoomstayMember();\n }, [fetchRoomstayMember]);\n\n useEffect(() => {\n if (hasCheckedOut) {\n fetchRoomstayMember();\n }\n }, [hasCheckedOut]);\n\n const updateCardToMemberDetail = (card: IRoomstayMemberCards): void => {\n const index = roomstayMember?.cards.findIndex((item) => item.cardId === card.cardId);\n if (index && roomstayMember?.cards[index]) {\n if (index !== -1) {\n roomstayMember.cards[index] = card;\n } else {\n roomstayMember.cards.push(card);\n }\n }\n\n if (roomstayMember?.cards) cardsSet([...roomstayMember.cards]);\n updateRoomstayMember(roomstayMember);\n };\n\n const updateMemberDetails = async (newMemberDetails: IRoomstayMember) => {\n const { ...memberDetailsToSubmit } = newMemberDetails;\n isFetchingSet(true);\n try {\n const updatedMember = await UpdateMemberDetails(memberDetailsToSubmit);\n\n if (updatedMember && updatedMember.username) {\n updateRoomstayMember(updatedMember);\n }\n if (updatedMember?.cards) cardsSet([...updatedMember.cards]);\n } catch (e) {\n // TODO\n }\n\n isFetchingSet(false);\n };\n\n return {\n loading,\n roomstayMember,\n cards,\n\n allBookings,\n\n allItineraries,\n upcomingBookings,\n pastBookings,\n cancelledBookings,\n\n updateCardToMemberDetail,\n updateMemberDetails,\n fetchRoomstayMember,\n isFetchingMember: isFetching,\n };\n};\n\nexport const RoomstayMemberContextProvider: React.FC = ({ children }) => {\n return <RoomstayMemberContext.Provider value={useRoomstayMemberContext()}>{children}</RoomstayMemberContext.Provider>;\n};\n"]}
@@ -1,12 +1,14 @@
1
- import { EBookingWizardOverlayDirection } from '../../components/generic/BookingWizard/BookingWizard';
1
+ import { ReactNode } from 'react';
2
+ import { EBookingWizardOverlayDirection, EBookingWizardTheme } from '../../components/generic/BookingWizard/BookingWizard';
2
3
  import type { BookingWizardContextType, BookingWizardOnBooking } from '../../components/generic/BookingWizard/BookingWizardContext';
4
+ import { BookingWizardGuestSelectorProps } from '../../components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector';
3
5
  import { BaseEngine, BaseEngineConfig } from '../BaseEngine';
4
6
  import { ShowPromoCodeAlertProps, ShowYearOnCalendarProps } from '../../models/Api/HotelOverrideDTO';
5
7
  import type { BookingWizardProperty } from '../../models/BookingWizard/BookingWizardProperty';
6
8
  import type { TBookingWizardProperties } from '../../models/BookingWizard/BookingWizardTypes';
7
9
  export interface BookingWizardEngineConfig extends BaseEngineConfig, ShowYearOnCalendarProps, ShowPromoCodeAlertProps {
8
10
  widgetType: 'property' | 'group';
9
- theme: 'specific' | 'default';
11
+ theme: EBookingWizardTheme;
10
12
  layout: 'horizontal' | 'vertical' | 'button';
11
13
  properties: TBookingWizardProperties;
12
14
  selectedProperty?: BookingWizardProperty;
@@ -28,6 +30,11 @@ export interface BookingWizardEngineConfig extends BaseEngineConfig, ShowYearOnC
28
30
  checkout?: string;
29
31
  };
30
32
  onSubmit?: BookingWizardContextType['onSubmit'];
33
+ notes?: {
34
+ date?: ReactNode;
35
+ guest?: ReactNode;
36
+ };
37
+ guestAgeConfig?: Pick<BookingWizardGuestSelectorProps, 'minAdultAge' | 'maxAdultAge' | 'ageRange'>;
31
38
  }
32
39
  export declare class BookingWizardEngine extends BaseEngine<BookingWizardEngineConfig> {
33
40
  constructor(bookingContainer: HTMLElement, config?: BookingWizardEngineConfig);
@@ -1 +1 @@
1
- {"version":3,"file":"BookingWizardEngine.js","sourceRoot":"/","sources":["src/engines/BookingWizardEngine/BookingWizardEngine.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,qDAAyF;AACzF,yGAA+F;AAI/F,0FAAkE;AA6BlE,MAAa,mBAAoB,SAAQ,uBAAqC;IAC1E,YAAmB,gBAA6B,EAAE,MAAkC;QAChF,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,gCAAmB,CAAC,aAAa,CAAC;QAEhD,4CAA4C;QAC5C,6BAAmB,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC1E,CAAC;IAEe,MAAM;;YAClB,IAAA,gDAAmB,EAAC,6BAAmB,CAAC,4BAA4B,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,IAAI,CAAC,CAAC;QACzG,CAAC;KAAA;CACJ;AAZD,kDAYC","sourcesContent":["import { EBookingWizardOverlayDirection } from '@/components/generic/BookingWizard/BookingWizard';\nimport type { BookingWizardContextType, BookingWizardOnBooking } from '@/components/generic/BookingWizard/BookingWizardContext';\nimport { BaseEngine, BaseEngineConfig, BookingEngineSource } from '@/engines/BaseEngine';\nimport { renderBookingWizard } from '@/engines/BookingWizardEngine/BookingWizardEngineElement';\nimport { ShowPromoCodeAlertProps, ShowYearOnCalendarProps } from '@/models/Api/HotelOverrideDTO';\nimport type { BookingWizardProperty } from '@/models/BookingWizard/BookingWizardProperty';\nimport type { TBookingWizardProperties } from '@/models/BookingWizard/BookingWizardTypes';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\n\nexport interface BookingWizardEngineConfig extends BaseEngineConfig, ShowYearOnCalendarProps, ShowPromoCodeAlertProps {\n widgetType: 'property' | 'group';\n theme: 'specific' | 'default';\n layout: 'horizontal' | 'vertical' | 'button';\n\n properties: TBookingWizardProperties;\n selectedProperty?: BookingWizardProperty;\n defaultColors: BookingWizardProperty['colors'];\n\n wrapperClassname?: string;\n contentClassname?: string;\n maxOccupancy?: number;\n disableChild?: boolean;\n showInfants?: boolean;\n disableRoom?: boolean;\n hideGuestSelect?: boolean;\n hidePromocode?: boolean;\n hideProperty?: boolean;\n dateFormat?: string;\n hideTooltips?: boolean;\n overlayDirection?: EBookingWizardOverlayDirection;\n\n defaultValues?: Partial<Omit<BookingWizardOnBooking, 'id' | 'checkIn' | 'checkout'>> & { checkIn?: string; checkout?: string };\n\n onSubmit?: BookingWizardContextType['onSubmit'];\n}\n\nexport class BookingWizardEngine extends BaseEngine<BookingWizardEngineConfig> {\n public constructor(bookingContainer: HTMLElement, config?: BookingWizardEngineConfig) {\n super(bookingContainer, config);\n this.source = BookingEngineSource.BookingWizard;\n\n // TODO: Make this a more permanent solution\n RoomstayThemeEngine.EngineContainer.classList.add('--transparent-bg');\n }\n\n protected async render() {\n renderBookingWizard(RoomstayThemeEngine.createElementOrReuseExisting('div', 'booking-wizard'), this);\n }\n}\n"]}
1
+ {"version":3,"file":"BookingWizardEngine.js","sourceRoot":"/","sources":["src/engines/BookingWizardEngine/BookingWizardEngine.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAKA,qDAAyF;AACzF,yGAA+F;AAI/F,0FAAkE;AAqClE,MAAa,mBAAoB,SAAQ,uBAAqC;IAC1E,YAAmB,gBAA6B,EAAE,MAAkC;QAChF,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,gCAAmB,CAAC,aAAa,CAAC;QAEhD,4CAA4C;QAC5C,6BAAmB,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC1E,CAAC;IAEe,MAAM;;YAClB,IAAA,gDAAmB,EAAC,6BAAmB,CAAC,4BAA4B,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,IAAI,CAAC,CAAC;QACzG,CAAC;KAAA;CACJ;AAZD,kDAYC","sourcesContent":["import { ReactNode } from 'react';\n\nimport { EBookingWizardOverlayDirection, EBookingWizardTheme } from '@/components/generic/BookingWizard/BookingWizard';\nimport type { BookingWizardContextType, BookingWizardOnBooking } from '@/components/generic/BookingWizard/BookingWizardContext';\nimport { BookingWizardGuestSelectorProps } from '@/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector';\nimport { BaseEngine, BaseEngineConfig, BookingEngineSource } from '@/engines/BaseEngine';\nimport { renderBookingWizard } from '@/engines/BookingWizardEngine/BookingWizardEngineElement';\nimport { ShowPromoCodeAlertProps, ShowYearOnCalendarProps } from '@/models/Api/HotelOverrideDTO';\nimport type { BookingWizardProperty } from '@/models/BookingWizard/BookingWizardProperty';\nimport type { TBookingWizardProperties } from '@/models/BookingWizard/BookingWizardTypes';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\n\nexport interface BookingWizardEngineConfig extends BaseEngineConfig, ShowYearOnCalendarProps, ShowPromoCodeAlertProps {\n widgetType: 'property' | 'group';\n theme: EBookingWizardTheme;\n layout: 'horizontal' | 'vertical' | 'button';\n\n properties: TBookingWizardProperties;\n selectedProperty?: BookingWizardProperty;\n defaultColors: BookingWizardProperty['colors'];\n\n wrapperClassname?: string;\n contentClassname?: string;\n maxOccupancy?: number;\n disableChild?: boolean;\n showInfants?: boolean;\n disableRoom?: boolean;\n hideGuestSelect?: boolean;\n hidePromocode?: boolean;\n hideProperty?: boolean;\n dateFormat?: string;\n\n hideTooltips?: boolean;\n overlayDirection?: EBookingWizardOverlayDirection;\n\n defaultValues?: Partial<Omit<BookingWizardOnBooking, 'id' | 'checkIn' | 'checkout'>> & { checkIn?: string; checkout?: string };\n\n onSubmit?: BookingWizardContextType['onSubmit'];\n\n // New option for new theme\n notes?: {\n date?: ReactNode; // Show at bottom left corner of Date Selector popup\n guest?: ReactNode; // Show at bottom of Guest Selector popup\n };\n guestAgeConfig?: Pick<BookingWizardGuestSelectorProps, 'minAdultAge' | 'maxAdultAge' | 'ageRange'>;\n}\n\nexport class BookingWizardEngine extends BaseEngine<BookingWizardEngineConfig> {\n public constructor(bookingContainer: HTMLElement, config?: BookingWizardEngineConfig) {\n super(bookingContainer, config);\n this.source = BookingEngineSource.BookingWizard;\n\n // TODO: Make this a more permanent solution\n RoomstayThemeEngine.EngineContainer.classList.add('--transparent-bg');\n }\n\n protected async render() {\n renderBookingWizard(RoomstayThemeEngine.createElementOrReuseExisting('div', 'booking-wizard'), this);\n }\n}\n"]}
@@ -246,7 +246,7 @@ function InlineRoomMiniEngineElement(props) {
246
246
  const onAddToBasketOverrideHandler = (rate) => {
247
247
  row.setRate(rate);
248
248
  basketContext.updateBasketRow(row);
249
- DataLayer_1.default.instance.sendRoomRateAddToCart(rate, row.getNumberOfDays(), row.getStartDate(), row.getEndDate());
249
+ DataLayer_1.default.instance.sendRoomRateAddToCart(rate, row.getNumberOfDays(), row.getStartDate(), row.getEndDate(), row.getPreUpsellRoomRate());
250
250
  const session = props.engine.getSessionProvider();
251
251
  session
252
252
  .updateSession({
@@ -276,10 +276,10 @@ function InlineRoomMiniEngineElement(props) {
276
276
  return (0, react_1.useMemo)(() => {
277
277
  var _a, _b, _c, _d, _e;
278
278
  return (react_1.default.createElement(react_1.default.Fragment, null,
279
- react_1.default.createElement("div", { className: `room-builder-progress ${isCompact}` },
280
- react_1.default.createElement("div", { className: "u-flex w-100 flex-wrap room-builder-progress--item --current", ref: ref },
279
+ react_1.default.createElement("div", { className: `room-builder-progress ${isCompact} rs-inline-container` },
280
+ react_1.default.createElement("div", { className: "u-flex w-100 flex-wrap room-builder-progress--item --current rs-inline-filter", ref: ref },
281
281
  react_1.default.createElement("div", { className: "u-flex u-flex-align-center flex-wrap flex-row u-w-100@xl-" },
282
- react_1.default.createElement(FloatingDatePicker_1.default, { startDate: row === null || row === void 0 ? void 0 : row.getStartDate(), selectedDateChanged: updateDateValues, className: "u-w-100@xl- room-builder-progress--value u-marg-left--none" },
282
+ react_1.default.createElement(FloatingDatePicker_1.default, { startDate: row === null || row === void 0 ? void 0 : row.getStartDate(), selectedDateChanged: updateDateValues, className: "u-w-100@xl- room-builder-progress--value u-marg-left--none rs-inline-filter-item-dates" },
283
283
  react_1.default.createElement(Tooltip_1.default, { title: t(Translation_1.Translation.Step.Date.SelectArrivalAndDepartureDatesByClickingHere), wrapperClasses: "u-w-100@xl-" },
284
284
  react_1.default.createElement("div", { className: "u-flex align-items-center justify-content-center u-w-100@xl- u-cursor-pointer" },
285
285
  react_1.default.createElement(Text_1.default, { color: (row === null || row === void 0 ? void 0 : row.getArrivalDate()) ? Color_1.Color.Accent : Color_1.Color.Graphite, className: "u-mw-75 u-align-center", bold: !!(row === null || row === void 0 ? void 0 : row.getArrivalDate()) },
@@ -287,8 +287,8 @@ function InlineRoomMiniEngineElement(props) {
287
287
  react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.ArrowRight2 }),
288
288
  react_1.default.createElement(Text_1.default, { color: (row === null || row === void 0 ? void 0 : row.getDepartureDate()) ? Color_1.Color.Accent : Color_1.Color.Graphite, className: "u-marg-right u-mw-75 u-align-center", bold: !!(row === null || row === void 0 ? void 0 : row.getDepartureDate()) },
289
289
  react_1.default.createElement("span", null, (row === null || row === void 0 ? void 0 : row.getDepartureDate()) ? row.getDepartureDate() : 'Departure Date'))))),
290
- react_1.default.createElement(Tooltip_1.default, { title: t(Translation_1.Translation.Step.Date.UpdateAdults), wrapperClasses: "u-w-100@xl-" },
291
- react_1.default.createElement("div", { className: "room-builder-progress--value --mw-l u-flex justify-content-center" },
290
+ react_1.default.createElement(Tooltip_1.default, { title: t(Translation_1.Translation.Step.Date.UpdateAdults), wrapperClasses: "u-w-100@xl- rs-inline-filter-item-adult" },
291
+ react_1.default.createElement("div", { className: "room-builder-progress--value --mw-l u-flex justify-content-center " },
292
292
  react_1.default.createElement(Select_1.Select, { nativeOnMobile: true, options: [...Array(maxOccupancy - ((row === null || row === void 0 ? void 0 : row.getChildren()) ? row.getChildren() : 0))].map((v, value) => {
293
293
  value += 1;
294
294
  return {
@@ -296,7 +296,7 @@ function InlineRoomMiniEngineElement(props) {
296
296
  value: value.toString(),
297
297
  };
298
298
  }), value: (_a = row === null || row === void 0 ? void 0 : row.getAdults()) === null || _a === void 0 ? void 0 : _a.toString(), onChange: updateNumberOfAdultsOnChange, keyName: "value", labelName: "text" }))),
299
- react_1.default.createElement(Tooltip_1.default, { title: t(Translation_1.Translation.Step.Date.UpdateChildren), wrapperClasses: "u-w-100@xl-" },
299
+ react_1.default.createElement(Tooltip_1.default, { title: t(Translation_1.Translation.Step.Date.UpdateChildren), wrapperClasses: "u-w-100@xl- rs-inline-filter-item-children" },
300
300
  react_1.default.createElement("div", { className: "room-builder-progress--value --mw-l u-flex justify-content-center" },
301
301
  react_1.default.createElement(Select_1.Select, { nativeOnMobile: true, options: [...Array(maxOccupancy + 1 - ((row === null || row === void 0 ? void 0 : row.getAdults()) ? row.getAdults() : 0))].map((v, value) => {
302
302
  return {
@@ -304,7 +304,7 @@ function InlineRoomMiniEngineElement(props) {
304
304
  value: value.toString(),
305
305
  };
306
306
  }), value: (_b = row === null || row === void 0 ? void 0 : row.getChildren()) === null || _b === void 0 ? void 0 : _b.toString(), onChange: updateNumberOfChildrenOnChange, keyName: "value", labelName: "text" }))),
307
- react_1.default.createElement(Tooltip_1.default, { title: promoCodeTooltip, wrapperClasses: "u-w-100@xl-" },
307
+ react_1.default.createElement(Tooltip_1.default, { title: promoCodeTooltip, wrapperClasses: "u-w-100@xl- rs-inline-filter-item-promo" },
308
308
  react_1.default.createElement("div", { className: "room-builder-progress--value u-cursor-pointer", ref: thisElement, onClick: openPromoModalOnClick },
309
309
  react_1.default.createElement("div", { className: "u-flex align-items-center justify-content-center u-w-100@xl-" },
310
310
  react_1.default.createElement(Text_1.default, { className: "u-pad-right--light", type: Text_1.TextType.Body, color: (row === null || row === void 0 ? void 0 : row.getPromoCode()) ? row === null || row === void 0 ? void 0 : row.getPromoCodeColour() : Color_1.Color.Navy }, (row === null || row === void 0 ? void 0 : row.getPromoCode()) ? row === null || row === void 0 ? void 0 : row.getPromoCode() : 'Promo Code'),
@@ -319,10 +319,10 @@ function InlineRoomMiniEngineElement(props) {
319
319
  react_1.default.createElement(BEButton_1.default, { isText: true, size: "small", onClick: cancelPromoPopupOnClick }, t(Translation_1.Translation.Misc.Cancel)))))),
320
320
  react_1.default.createElement("div", { className: `u-flex flex-xl-nowrap flex-row ${isCompact ? 'w-100' : ''}` },
321
321
  react_1.default.createElement(BEButton_1.default, { filled: true, primary: true, isLoading: isLoading, wide: isCompact !== '', onClick: findRoomsOnClick }, t(Translation_1.Translation.Misc.CheckRates)))),
322
- react_1.default.createElement("div", { className: "u-border-rounded" }, !isLoading ? (react_1.default.createElement(AutoAutoHeight_1.default, { open: !isLoading },
322
+ react_1.default.createElement("div", { className: "u-border-rounded rs-inline-content" }, !isLoading ? (react_1.default.createElement(AutoAutoHeight_1.default, { open: !isLoading },
323
323
  react_1.default.createElement(react_1.default.Fragment, null,
324
324
  react_1.default.createElement(BookNowPayLaterInfoBlock_1.BookNowPayLaterInfoBlock, null),
325
- rooms.length > 0 ? (react_1.default.createElement(RoomRates_1.default, { featuredRates: featuredRates, rates: standardRates, roomCode: rooms[0].code, getButtonLabel: getButtonLabelHandler, onAddToBasketOverride: onAddToBasketOverrideHandler })) : (react_1.default.createElement(RatesNotFoundBlock_1.default, null))))) : (react_1.default.createElement(LargeLoader_1.default, null))))));
325
+ rooms.length > 0 ? (react_1.default.createElement(RoomRates_1.default, { classNames: "rs-inline-content-list", featuredRates: featuredRates, rates: standardRates, roomCode: rooms[0].code, getButtonLabel: getButtonLabelHandler, onAddToBasketOverride: onAddToBasketOverrideHandler })) : (react_1.default.createElement(RatesNotFoundBlock_1.default, null))))) : (react_1.default.createElement(LargeLoader_1.default, null))))));
326
326
  }, [isCompact, isLoading, rooms, basketContext.currentBasketRows, isPromoModalOpen, hotel]);
327
327
  }
328
328
  exports.default = InlineRoomMiniEngineElement;