@roomstay/frontend 2.1.33 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (466) hide show
  1. package/dist/201.bundle.js +1 -1
  2. package/dist/213.bundle.js +1 -0
  3. package/dist/279.bundle.js +1 -1
  4. package/dist/370.bundle.js +1 -1
  5. package/dist/423.bundle.js +1 -1
  6. package/dist/449.bundle.js +1 -1
  7. package/dist/535.bundle.js +1 -1
  8. package/dist/548.bundle.js +1 -0
  9. package/dist/686.bundle.js +1 -0
  10. package/dist/855.bundle.js +1 -1
  11. package/dist/873.bundle.js +1 -1
  12. package/dist/882.bundle.js +1 -1
  13. package/dist/93.bundle.js +1 -0
  14. package/dist/972.bundle.js +1 -1
  15. package/dist/main.bundle.js +1 -2
  16. package/dist/src/api/HotelAPI.d.ts +1 -1
  17. package/dist/src/api/HotelAPI.js.map +1 -1
  18. package/dist/src/api/ReservationAPI.d.ts +0 -6
  19. package/dist/src/api/ReservationAPI.js.map +1 -1
  20. package/dist/src/api/events-service/EventsServiceAPI.d.ts +3 -0
  21. package/dist/src/api/events-service/EventsServiceAPI.js +62 -0
  22. package/dist/src/api/events-service/EventsServiceAPI.js.map +1 -0
  23. package/dist/src/components/Event/EventCarouselContainer.d.ts +8 -0
  24. package/dist/src/components/Event/EventCarouselContainer.js +97 -0
  25. package/dist/src/components/Event/EventCarouselContainer.js.map +1 -0
  26. package/dist/src/components/User/Forms/ForgotPasswordForm.d.ts +1 -0
  27. package/dist/src/components/User/Forms/ForgotPasswordForm.js +38 -24
  28. package/dist/src/components/User/Forms/ForgotPasswordForm.js.map +1 -1
  29. package/dist/src/components/User/Forms/SignInForm.d.ts +4 -3
  30. package/dist/src/components/User/Forms/SignInForm.js +32 -14
  31. package/dist/src/components/User/Forms/SignInForm.js.map +1 -1
  32. package/dist/src/components/User/Forms/SignUpForm.d.ts +1 -0
  33. package/dist/src/components/User/Forms/SignUpForm.js +30 -26
  34. package/dist/src/components/User/Forms/SignUpForm.js.map +1 -1
  35. package/dist/src/components/generic/BookingWizard/BookingWizard.js +5 -2
  36. package/dist/src/components/generic/BookingWizard/BookingWizard.js.map +1 -1
  37. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js +6 -3
  38. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js.map +1 -1
  39. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js +8 -5
  40. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js.map +1 -1
  41. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js +15 -9
  42. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js.map +1 -1
  43. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js +4 -1
  44. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js.map +1 -1
  45. package/dist/src/components/generic/Currency.js +5 -5
  46. package/dist/src/components/generic/Currency.js.map +1 -1
  47. package/dist/src/components/generic/Event/EventCard.d.ts +8 -0
  48. package/dist/src/components/generic/Event/EventCard.js +70 -0
  49. package/dist/src/components/generic/Event/EventCard.js.map +1 -0
  50. package/dist/src/components/generic/Event/EventCarousel.d.ts +9 -0
  51. package/dist/src/components/generic/Event/EventCarousel.js +72 -0
  52. package/dist/src/components/generic/Event/EventCarousel.js.map +1 -0
  53. package/dist/src/components/generic/Headline.d.ts +2 -2
  54. package/dist/src/components/generic/Headline.js +8 -4
  55. package/dist/src/components/generic/Headline.js.map +1 -1
  56. package/dist/src/components/generic/Icon/Icon.d.ts +5 -1
  57. package/dist/src/components/generic/Icon/Icon.js +4 -0
  58. package/dist/src/components/generic/Icon/Icon.js.map +1 -1
  59. package/dist/src/components/generic/Overlay/Overlay.d.ts +2 -1
  60. package/dist/src/components/generic/Overlay/Overlay.js +50 -7
  61. package/dist/src/components/generic/Overlay/Overlay.js.map +1 -1
  62. package/dist/src/components/generic/PasswordBox/PasswordBox.js +2 -2
  63. package/dist/src/components/generic/PasswordBox/PasswordBox.js.map +1 -1
  64. package/dist/src/components/generic/PaymentCard/InlinePaymentCard.d.ts +8 -0
  65. package/dist/src/components/generic/PaymentCard/InlinePaymentCard.js +16 -0
  66. package/dist/src/components/generic/PaymentCard/InlinePaymentCard.js.map +1 -0
  67. package/dist/src/components/generic/PaymentCard/InlinePaymentOption.d.ts +8 -0
  68. package/dist/src/components/generic/PaymentCard/InlinePaymentOption.js +61 -0
  69. package/dist/src/components/generic/PaymentCard/InlinePaymentOption.js.map +1 -0
  70. package/dist/src/components/generic/PaymentCard/PaymentCard.js +6 -3
  71. package/dist/src/components/generic/PaymentCard/PaymentCard.js.map +1 -1
  72. package/dist/src/components/generic/PaymentCard/PaymentCardInput.d.ts +2 -3
  73. package/dist/src/components/generic/PaymentCard/PaymentCardInput.js +34 -28
  74. package/dist/src/components/generic/PaymentCard/PaymentCardInput.js.map +1 -1
  75. package/dist/src/components/generic/PromoCodeInput.js +15 -18
  76. package/dist/src/components/generic/PromoCodeInput.js.map +1 -1
  77. package/dist/src/components/generic/RadioButtonGroup/RadioButton.d.ts +5 -4
  78. package/dist/src/components/generic/RadioButtonGroup/RadioButton.js +33 -10
  79. package/dist/src/components/generic/RadioButtonGroup/RadioButton.js.map +1 -1
  80. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.d.ts +14 -11
  81. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js +69 -11
  82. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
  83. package/dist/src/components/generic/RatioImage/RatioImage.d.ts +11 -0
  84. package/dist/src/components/generic/RatioImage/RatioImage.js +12 -0
  85. package/dist/src/components/generic/RatioImage/RatioImage.js.map +1 -0
  86. package/dist/src/components/generic/RecentSearchesCard.js +6 -5
  87. package/dist/src/components/generic/RecentSearchesCard.js.map +1 -1
  88. package/dist/src/components/generic/Tabs/TabLink.js +28 -3
  89. package/dist/src/components/generic/Tabs/TabLink.js.map +1 -1
  90. package/dist/src/components/generic/TextBox.js +1 -1
  91. package/dist/src/components/generic/TextBox.js.map +1 -1
  92. package/dist/src/components/generic/badging/SSLSecureBadge.js +4 -1
  93. package/dist/src/components/generic/badging/SSLSecureBadge.js.map +1 -1
  94. package/dist/src/components/generic/buttons/NextStepButton.d.ts +0 -3
  95. package/dist/src/components/generic/buttons/NextStepButton.js +4 -1
  96. package/dist/src/components/generic/buttons/NextStepButton.js.map +1 -1
  97. package/dist/src/components/generic/loader/LargeLoader.js +31 -6
  98. package/dist/src/components/generic/loader/LargeLoader.js.map +1 -1
  99. package/dist/src/components/generic/modal/ConfirmationModal.js +6 -3
  100. package/dist/src/components/generic/modal/ConfirmationModal.js.map +1 -1
  101. package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.d.ts +14 -2
  102. package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.js +34 -26
  103. package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.js.map +1 -1
  104. package/dist/src/components/generic/modal/SigninModal/FormContent/ForgotPasswordFormContent.d.ts +7 -0
  105. package/dist/src/components/generic/modal/SigninModal/FormContent/ForgotPasswordFormContent.js +14 -0
  106. package/dist/src/components/generic/modal/SigninModal/FormContent/ForgotPasswordFormContent.js.map +1 -0
  107. package/dist/src/components/generic/modal/SigninModal/FormContent/SignInFormContent.d.ts +8 -0
  108. package/dist/src/components/generic/modal/SigninModal/FormContent/SignInFormContent.js +25 -0
  109. package/dist/src/components/generic/modal/SigninModal/FormContent/SignInFormContent.js.map +1 -0
  110. package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.d.ts +7 -0
  111. package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.js +49 -0
  112. package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.js.map +1 -0
  113. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.d.ts +5 -2
  114. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.js +30 -39
  115. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.js.map +1 -1
  116. package/dist/src/components/generic/print/NoPrint.d.ts +3 -0
  117. package/dist/src/components/generic/print/NoPrint.js +11 -0
  118. package/dist/src/components/generic/print/NoPrint.js.map +1 -0
  119. package/dist/src/components/generic/print/PrintOnly.d.ts +3 -0
  120. package/dist/src/components/generic/print/PrintOnly.js +11 -0
  121. package/dist/src/components/generic/print/PrintOnly.js.map +1 -0
  122. package/dist/src/components/graphics/AddCard.d.ts +7 -0
  123. package/dist/src/components/graphics/AddCard.js +28 -0
  124. package/dist/src/components/graphics/AddCard.js.map +1 -0
  125. package/dist/src/components/graphics/HomeEmptyCard.d.ts +7 -0
  126. package/dist/src/components/graphics/HomeEmptyCard.js +53 -0
  127. package/dist/src/components/graphics/HomeEmptyCard.js.map +1 -0
  128. package/dist/src/components/graphics/HomeEmptyReservation.d.ts +7 -0
  129. package/dist/src/components/graphics/HomeEmptyReservation.js +136 -0
  130. package/dist/src/components/graphics/HomeEmptyReservation.js.map +1 -0
  131. package/dist/src/components/iconComponents/CreditCardOff.d.ts +6 -0
  132. package/dist/src/components/iconComponents/CreditCardOff.js +16 -0
  133. package/dist/src/components/iconComponents/CreditCardOff.js.map +1 -0
  134. package/dist/src/components/members/EditMyProfile.js +19 -21
  135. package/dist/src/components/members/EditMyProfile.js.map +1 -1
  136. package/dist/src/components/navigation/Header.js +29 -9
  137. package/dist/src/components/navigation/Header.js.map +1 -1
  138. package/dist/src/components/navigation/StepSelector.js +2 -1
  139. package/dist/src/components/navigation/StepSelector.js.map +1 -1
  140. package/dist/src/components/pages/Account/Card/MemberCardItem.js +5 -2
  141. package/dist/src/components/pages/Account/Card/MemberCardItem.js.map +1 -1
  142. package/dist/src/components/reservation/EmptyReservation.js +3 -3
  143. package/dist/src/components/reservation/EmptyReservation.js.map +1 -1
  144. package/dist/src/components/reservation/ReservationItem.d.ts +4 -3
  145. package/dist/src/components/reservation/ReservationItem.js +45 -33
  146. package/dist/src/components/reservation/ReservationItem.js.map +1 -1
  147. package/dist/src/components/reservation/ReservationList.d.ts +2 -2
  148. package/dist/src/components/reservation/ReservationList.js +1 -1
  149. package/dist/src/components/reservation/ReservationList.js.map +1 -1
  150. package/dist/src/components/steps/DaysSelectedInformer.js +15 -10
  151. package/dist/src/components/steps/DaysSelectedInformer.js.map +1 -1
  152. package/dist/src/components/steps/addons/AddonCard.js +10 -12
  153. package/dist/src/components/steps/addons/AddonCard.js.map +1 -1
  154. package/dist/src/components/steps/confirmation/PaymentDetails/AcceptablePaymentCard.js.map +1 -1
  155. package/dist/src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.js +26 -7
  156. package/dist/src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.js.map +1 -1
  157. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.d.ts +1 -2
  158. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js +36 -44
  159. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js.map +1 -1
  160. package/dist/src/components/steps/confirmation/PaymentInformation.d.ts +7 -0
  161. package/dist/src/components/steps/confirmation/PaymentInformation.js +119 -0
  162. package/dist/src/components/steps/confirmation/PaymentInformation.js.map +1 -0
  163. package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.js +12 -10
  164. package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.js.map +1 -1
  165. package/dist/src/components/steps/confirmation/StepConfirmationForm.js +43 -80
  166. package/dist/src/components/steps/confirmation/StepConfirmationForm.js.map +1 -1
  167. package/dist/src/components/steps/confirmation/StepConfirmationLimitedOffer.js +7 -5
  168. package/dist/src/components/steps/confirmation/StepConfirmationLimitedOffer.js.map +1 -1
  169. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffers.js +10 -12
  170. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffers.js.map +1 -1
  171. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.js +8 -2
  172. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.js.map +1 -1
  173. package/dist/src/components/steps/date/PeoplePicker.js +9 -9
  174. package/dist/src/components/steps/date/PeoplePicker.js.map +1 -1
  175. package/dist/src/components/steps/date/PeoplePickerRow.js.map +1 -1
  176. package/dist/src/components/steps/date/StepOneNextStepButton.d.ts +1 -1
  177. package/dist/src/components/steps/date/StepOneNextStepButton.js +2 -4
  178. package/dist/src/components/steps/date/StepOneNextStepButton.js.map +1 -1
  179. package/dist/src/components/steps/hotel/HotelCard.js +5 -11
  180. package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
  181. package/dist/src/components/steps/hotel/HotelCardModal.js +5 -6
  182. package/dist/src/components/steps/hotel/HotelCardModal.js.map +1 -1
  183. package/dist/src/components/steps/hotel/HotelSearchParameters.js +8 -8
  184. package/dist/src/components/steps/hotel/HotelSearchParameters.js.map +1 -1
  185. package/dist/src/components/steps/room/AvailableUpgradesModal.js +8 -9
  186. package/dist/src/components/steps/room/AvailableUpgradesModal.js.map +1 -1
  187. package/dist/src/components/steps/room/InactivityWindow.js +3 -5
  188. package/dist/src/components/steps/room/InactivityWindow.js.map +1 -1
  189. package/dist/src/components/steps/room/LargeRoomCard.js +5 -4
  190. package/dist/src/components/steps/room/LargeRoomCard.js.map +1 -1
  191. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js +42 -40
  192. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js.map +1 -1
  193. package/dist/src/components/steps/room/NoRoomsFoundBlock.js +7 -9
  194. package/dist/src/components/steps/room/NoRoomsFoundBlock.js.map +1 -1
  195. package/dist/src/components/steps/room/RatesNotFound.js +6 -3
  196. package/dist/src/components/steps/room/RatesNotFound.js.map +1 -1
  197. package/dist/src/components/steps/room/RoomListCrossSellBlock.js +3 -3
  198. package/dist/src/components/steps/room/RoomListCrossSellBlock.js.map +1 -1
  199. package/dist/src/components/steps/room/StepRoomNextStepButton.d.ts +2 -1
  200. package/dist/src/components/steps/room/StepRoomNextStepButton.js +3 -3
  201. package/dist/src/components/steps/room/StepRoomNextStepButton.js.map +1 -1
  202. package/dist/src/components/steps/room/StepRoomSummaryAndButton.js +2 -6
  203. package/dist/src/components/steps/room/StepRoomSummaryAndButton.js.map +1 -1
  204. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +16 -18
  205. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
  206. package/dist/src/components/steps/room/roomDetails/RoomDetails.js +2 -2
  207. package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
  208. package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.js +6 -3
  209. package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.js.map +1 -1
  210. package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.js +3 -1
  211. package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.js.map +1 -1
  212. package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js +7 -8
  213. package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js.map +1 -1
  214. package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js +4 -6
  215. package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js.map +1 -1
  216. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js +4 -5
  217. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js.map +1 -1
  218. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal.js +7 -5
  219. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal.js.map +1 -1
  220. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.js +4 -1
  221. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.js.map +1 -1
  222. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js +5 -2
  223. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js.map +1 -1
  224. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js +11 -10
  225. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js.map +1 -1
  226. package/dist/src/components/steps/room/roomFilter/AppliedFiltersBlock.js +1 -1
  227. package/dist/src/components/steps/room/roomFilter/AppliedFiltersBlock.js.map +1 -1
  228. package/dist/src/components/steps/room/roomFilter/RoomFilterOverlay.js +7 -8
  229. package/dist/src/components/steps/room/roomFilter/RoomFilterOverlay.js.map +1 -1
  230. package/dist/src/components/summary/BEMobileSummaryModal.js +1 -1
  231. package/dist/src/components/summary/BEMobileSummaryModal.js.map +1 -1
  232. package/dist/src/components/summary/BESummaryPerkBlock.js +4 -1
  233. package/dist/src/components/summary/BESummaryPerkBlock.js.map +1 -1
  234. package/dist/src/components/summary/BESummaryPrivacyPolicy.js +5 -10
  235. package/dist/src/components/summary/BESummaryPrivacyPolicy.js.map +1 -1
  236. package/dist/src/components/summary/BESummaryRoomRow.js +4 -6
  237. package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
  238. package/dist/src/components/summary/TransportDistanceFromHotelBlock.js +5 -1
  239. package/dist/src/components/summary/TransportDistanceFromHotelBlock.js.map +1 -1
  240. package/dist/src/contexts/BasketContext/BasketContextType.d.ts +1 -0
  241. package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
  242. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +36 -13
  243. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  244. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +26 -2
  245. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  246. package/dist/src/contexts/ConfirmationFormContext.d.ts +0 -2
  247. package/dist/src/contexts/ConfirmationFormContext.js +0 -3
  248. package/dist/src/contexts/ConfirmationFormContext.js.map +1 -1
  249. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +13 -8
  250. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  251. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.d.ts +1 -6
  252. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +24 -18
  253. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
  254. package/dist/src/contexts/HotelOverridesContext.js +4 -0
  255. package/dist/src/contexts/HotelOverridesContext.js.map +1 -1
  256. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.d.ts +10 -6
  257. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.js.map +1 -1
  258. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js +76 -26
  259. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js.map +1 -1
  260. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContext.d.ts +8 -5
  261. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContext.js.map +1 -1
  262. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js +35 -4
  263. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js.map +1 -1
  264. package/dist/src/engines/BaseEngine.d.ts +2 -1
  265. package/dist/src/engines/BaseEngine.js +1 -1
  266. package/dist/src/engines/BaseEngine.js.map +1 -1
  267. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js.map +1 -1
  268. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +24 -25
  269. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
  270. package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.d.ts +22 -0
  271. package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.js +33 -0
  272. package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.js.map +1 -0
  273. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.d.ts +6 -0
  274. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js +116 -0
  275. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js.map +1 -0
  276. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js +11 -10
  277. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js.map +1 -1
  278. package/dist/src/errors/GetAvailabilityError.d.ts +2 -1
  279. package/dist/src/errors/GetAvailabilityError.js +10 -3
  280. package/dist/src/errors/GetAvailabilityError.js.map +1 -1
  281. package/dist/src/hooks/HistoryConsistentPush.d.ts +1 -0
  282. package/dist/src/hooks/HistoryConsistentPush.js +12 -0
  283. package/dist/src/hooks/HistoryConsistentPush.js.map +1 -0
  284. package/dist/src/hooks/LoggedInUserHook.d.ts +3 -3
  285. package/dist/src/hooks/Query.js +2 -6
  286. package/dist/src/hooks/Query.js.map +1 -1
  287. package/dist/src/hooks/UpdateQueryParameters.d.ts +1 -0
  288. package/dist/src/hooks/UpdateQueryParameters.js +16 -0
  289. package/dist/src/hooks/UpdateQueryParameters.js.map +1 -0
  290. package/dist/src/hooks/VGSHooks.d.ts +11 -1
  291. package/dist/src/hooks/VGSHooks.js +26 -11
  292. package/dist/src/hooks/VGSHooks.js.map +1 -1
  293. package/dist/src/index.d.ts +2 -3
  294. package/dist/src/index.js +2 -0
  295. package/dist/src/index.js.map +1 -1
  296. package/dist/src/mockApi/HotelAPI.d.ts +1 -1
  297. package/dist/src/mockApi/HotelAPI.js.map +1 -1
  298. package/dist/src/models/Api/HotelDTO.d.ts +11 -3
  299. package/dist/src/models/Api/HotelDTO.js +17 -8
  300. package/dist/src/models/Api/HotelDTO.js.map +1 -1
  301. package/dist/src/models/Api/HotelOverrideDTO.d.ts +1 -0
  302. package/dist/src/models/Api/HotelOverrideDTO.js.map +1 -1
  303. package/dist/src/models/Api/ReservationsDTO.d.ts +2 -0
  304. package/dist/src/models/Api/ReservationsDTO.js.map +1 -1
  305. package/dist/src/models/AppQueryParameters.d.ts +14 -0
  306. package/dist/src/models/AppQueryParameters.js +19 -0
  307. package/dist/src/models/AppQueryParameters.js.map +1 -0
  308. package/dist/src/models/BookingWizard/BookingWizardProperty.d.ts +2 -2
  309. package/dist/src/models/BookingWizard/BookingWizardProperty.js.map +1 -1
  310. package/dist/src/models/Client/Hotel/ColorProfile.d.ts +3 -0
  311. package/dist/src/models/Client/Hotel/ColorProfile.js.map +1 -1
  312. package/dist/src/models/Client/Hotel/Company.d.ts +2 -2
  313. package/dist/src/models/Client/Hotel/Company.js.map +1 -1
  314. package/dist/src/models/Client/Hotel/Hotel.d.ts +15 -5
  315. package/dist/src/models/Client/Hotel/Hotel.js +3 -1
  316. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  317. package/dist/src/models/Confirmation.d.ts +1 -1
  318. package/dist/src/models/Confirmation.js.map +1 -1
  319. package/dist/src/models/Room/Filters/Filter.d.ts +2 -1
  320. package/dist/src/models/Room/Filters/Filter.js.map +1 -1
  321. package/dist/src/models/Room/Filters/RateTypeFilter.d.ts +2 -1
  322. package/dist/src/models/Room/Filters/RateTypeFilter.js +3 -2
  323. package/dist/src/models/Room/Filters/RateTypeFilter.js.map +1 -1
  324. package/dist/src/models/Room/Filters/RoomTypeFilter.d.ts +2 -1
  325. package/dist/src/models/Room/Filters/RoomTypeFilter.js +3 -2
  326. package/dist/src/models/Room/Filters/RoomTypeFilter.js.map +1 -1
  327. package/dist/src/pages/account/AccountHome/AccountHomePage.js +9 -10
  328. package/dist/src/pages/account/AccountHome/AccountHomePage.js.map +1 -1
  329. package/dist/src/pages/account/AccountRouter.js +7 -9
  330. package/dist/src/pages/account/AccountRouter.js.map +1 -1
  331. package/dist/src/pages/account/Details/AccountDetailsCardsPage.js +19 -32
  332. package/dist/src/pages/account/Details/AccountDetailsCardsPage.js.map +1 -1
  333. package/dist/src/pages/account/Details/AccountDetailsNoCardsPage.js +9 -7
  334. package/dist/src/pages/account/Details/AccountDetailsNoCardsPage.js.map +1 -1
  335. package/dist/src/pages/account/Details/AccountDetailsProfilePage.js +25 -38
  336. package/dist/src/pages/account/Details/AccountDetailsProfilePage.js.map +1 -1
  337. package/dist/src/pages/account/Help/AccountHelpPage.js +16 -25
  338. package/dist/src/pages/account/Help/AccountHelpPage.js.map +1 -1
  339. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js +68 -52
  340. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js.map +1 -1
  341. package/dist/src/pages/account/Reservations/AccountReservationsPage.js.map +1 -1
  342. package/dist/src/pages/findReservation/FindReservation.js +40 -23
  343. package/dist/src/pages/findReservation/FindReservation.js.map +1 -1
  344. package/dist/src/pages/findReservation/ReservationRow.js +10 -9
  345. package/dist/src/pages/findReservation/ReservationRow.js.map +1 -1
  346. package/dist/src/pages/findReservation/ReservationRowModal.js +3 -3
  347. package/dist/src/pages/findReservation/ReservationRowModal.js.map +1 -1
  348. package/dist/src/pages/hotel/HotelInfo.js +6 -6
  349. package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
  350. package/dist/src/pages/steps/Step.d.ts +2 -2
  351. package/dist/src/pages/steps/Step.js.map +1 -1
  352. package/dist/src/pages/steps/StepAddon/StepAddon.d.ts +2 -2
  353. package/dist/src/pages/steps/StepAddon/StepAddon.js.map +1 -1
  354. package/dist/src/pages/steps/StepConfirmation/StepConfirmation.d.ts +2 -2
  355. package/dist/src/pages/steps/StepConfirmation/StepConfirmation.js.map +1 -1
  356. package/dist/src/pages/steps/StepDate/StepDate.d.ts +2 -2
  357. package/dist/src/pages/steps/StepDate/StepDate.js.map +1 -1
  358. package/dist/src/pages/steps/StepDate/StepDateComponent.js +1 -1
  359. package/dist/src/pages/steps/StepDate/StepDateComponent.js.map +1 -1
  360. package/dist/src/pages/steps/StepHotel/StepHotel.d.ts +2 -2
  361. package/dist/src/pages/steps/StepHotel/StepHotel.js.map +1 -1
  362. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js +10 -7
  363. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js.map +1 -1
  364. package/dist/src/pages/steps/StepRoom/StepRoom.d.ts +2 -2
  365. package/dist/src/pages/steps/StepRoom/StepRoom.js.map +1 -1
  366. package/dist/src/pages/steps/StepThanks/StepThanks.d.ts +2 -2
  367. package/dist/src/pages/steps/StepThanks/StepThanks.js.map +1 -1
  368. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js +5 -0
  369. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js.map +1 -1
  370. package/dist/src/providers/FeatureProvider.js +2 -0
  371. package/dist/src/providers/FeatureProvider.js.map +1 -1
  372. package/dist/src/providers/RoomstayThemeEngine.d.ts +3 -3
  373. package/dist/src/providers/RoomstayThemeEngine.js +4 -18
  374. package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
  375. package/dist/src/providers/feature/ModifyBookingFeature.d.ts +6 -0
  376. package/dist/src/providers/feature/ModifyBookingFeature.js +10 -0
  377. package/dist/src/providers/feature/ModifyBookingFeature.js.map +1 -0
  378. package/dist/src/stories/EventCarousel.stories.d.ts +6 -0
  379. package/dist/src/stories/EventCarousel.stories.js +236 -0
  380. package/dist/src/stories/EventCarousel.stories.js.map +1 -0
  381. package/dist/src/stories/RadioButton.stories.d.ts +3 -3
  382. package/dist/src/stories/RadioButtonGroup.stories.d.ts +4 -1
  383. package/dist/src/stories/RadioButtonGroup.stories.js +73 -1
  384. package/dist/src/stories/RadioButtonGroup.stories.js.map +1 -1
  385. package/dist/src/translations/Translation.d.ts +196 -8
  386. package/dist/src/translations/Translation.js +198 -10
  387. package/dist/src/translations/Translation.js.map +1 -1
  388. package/dist/src/translations/languages/en-gb.js +198 -10
  389. package/dist/src/translations/languages/en-gb.js.map +1 -1
  390. package/dist/src/util/Color.d.ts +3 -0
  391. package/dist/src/util/Color.js +21 -1
  392. package/dist/src/util/Color.js.map +1 -1
  393. package/dist/src/util/CurrencyHelper.d.ts +11 -3
  394. package/dist/src/util/CurrencyHelper.js +306 -5
  395. package/dist/src/util/CurrencyHelper.js.map +1 -1
  396. package/dist/src/util/EventsHelper.d.ts +11 -0
  397. package/dist/src/util/EventsHelper.js +43 -0
  398. package/dist/src/util/EventsHelper.js.map +1 -0
  399. package/dist/src/util/StringHelper.d.ts +2 -2
  400. package/dist/src/util/StringHelper.js +5 -4
  401. package/dist/src/util/StringHelper.js.map +1 -1
  402. package/dist/src/util/TextAlignment.d.ts +2 -1
  403. package/dist/src/util/TextAlignment.js +1 -0
  404. package/dist/src/util/TextAlignment.js.map +1 -1
  405. package/dist/src/util/Validation.d.ts +17 -13
  406. package/dist/src/util/Validation.js +34 -18
  407. package/dist/src/util/Validation.js.map +1 -1
  408. package/dist/test.bundle.js +1 -2
  409. package/dist/tests/jest/engines/RoomstayThemeEngine.test.d.ts +1 -0
  410. package/dist/tests/jest/engines/RoomstayThemeEngine.test.js +41 -0
  411. package/dist/tests/jest/engines/RoomstayThemeEngine.test.js.map +1 -0
  412. package/dist/tests/jest/events/EventManager.test.d.ts +1 -0
  413. package/dist/tests/jest/events/EventManager.test.js +101 -0
  414. package/dist/tests/jest/events/EventManager.test.js.map +1 -0
  415. package/dist/tests/jest/helpers/ObjectHelper.test.d.ts +1 -0
  416. package/dist/tests/jest/helpers/ObjectHelper.test.js +72 -0
  417. package/dist/tests/jest/helpers/ObjectHelper.test.js.map +1 -0
  418. package/dist/tests/jest/models/RoomRate.test.d.ts +1 -0
  419. package/dist/tests/jest/models/RoomRate.test.js +133 -0
  420. package/dist/tests/jest/models/RoomRate.test.js.map +1 -0
  421. package/dist/tests/jest/providers/LanguageProvider.test.d.ts +1 -0
  422. package/dist/tests/jest/providers/LanguageProvider.test.js +32 -0
  423. package/dist/tests/jest/providers/LanguageProvider.test.js.map +1 -0
  424. package/dist/tests/jest/providers/SessionProvider.test.d.ts +1 -0
  425. package/dist/tests/jest/providers/SessionProvider.test.js +230 -0
  426. package/dist/tests/jest/providers/SessionProvider.test.js.map +1 -0
  427. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.d.ts +1 -0
  428. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.js +126 -0
  429. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.js.map +1 -0
  430. package/dist/tests/jest/reducers/BasketReducer.test.d.ts +1 -0
  431. package/dist/tests/jest/reducers/BasketReducer.test.js +103 -0
  432. package/dist/tests/jest/reducers/BasketReducer.test.js.map +1 -0
  433. package/dist/tests/offline/RoomstayBestRateAlert.d.ts +1 -0
  434. package/dist/tests/offline/RoomstayBestRateAlert.js +48 -0
  435. package/dist/tests/offline/RoomstayBestRateAlert.js.map +1 -0
  436. package/dist/tests/offline/entry/RSCompany.js +7 -2
  437. package/dist/tests/offline/entry/RSCompany.js.map +1 -1
  438. package/dist/tests/offline/entry/ReactWrapper.d.ts +1 -0
  439. package/dist/tests/offline/entry/ReactWrapper.js +140 -0
  440. package/dist/tests/offline/entry/ReactWrapper.js.map +1 -0
  441. package/dist/tests/offline/entry/allEngines.d.ts +1 -0
  442. package/dist/tests/offline/entry/allEngines.js +50 -0
  443. package/dist/tests/offline/entry/allEngines.js.map +1 -0
  444. package/dist/tests/offline/entry/components/TestPicker.d.ts +1 -0
  445. package/dist/tests/offline/entry/components/TestPicker.js +214 -0
  446. package/dist/tests/offline/entry/components/TestPicker.js.map +1 -0
  447. package/dist/tests/offline/entry/context/EngineContext.d.ts +9 -0
  448. package/dist/tests/offline/entry/context/EngineContext.js +37 -0
  449. package/dist/tests/offline/entry/context/EngineContext.js.map +1 -0
  450. package/dist/tests/offline/entry/engineRenderer/memberPortalWidgetRenderer.d.ts +1 -0
  451. package/dist/tests/offline/entry/engineRenderer/memberPortalWidgetRenderer.js +68 -0
  452. package/dist/tests/offline/entry/engineRenderer/memberPortalWidgetRenderer.js.map +1 -0
  453. package/dist/tests/setupTests.d.ts +0 -0
  454. package/dist/tests/setupTests.js +12 -0
  455. package/dist/tests/setupTests.js.map +1 -0
  456. package/dist/vendors.bundle.js +1 -1
  457. package/package.json +3 -3
  458. package/dist/14.bundle.js +0 -1
  459. package/dist/559.bundle.js +0 -1
  460. package/dist/848.bundle.js +0 -1
  461. package/dist/962.bundle.js +0 -1
  462. package/dist/main.bundle.js.LICENSE.txt +0 -5
  463. package/dist/src/components/temp/Login.d.ts +0 -2
  464. package/dist/src/components/temp/Login.js +0 -79
  465. package/dist/src/components/temp/Login.js.map +0 -1
  466. package/dist/test.bundle.js.LICENSE.txt +0 -5
@@ -51,10 +51,15 @@ const NaturallyProgressedStepRoute_1 = __importDefault(require("routes/Naturally
51
51
  const PageColorComponent_1 = require("../../components/pages/PageColorComponent");
52
52
  const MemberPortalFeature_1 = __importDefault(require("../../providers/feature/MemberPortalFeature"));
53
53
  const RoomstayMark_1 = require("../../components/generic/RoomstayMark");
54
+ const LargeLoader_1 = __importDefault(require("../../components/generic/loader/LargeLoader"));
55
+ const PrivateRoute_1 = require("../../containers/PrivateRoute");
56
+ const AppQueryParameters_1 = require("../../models/AppQueryParameters");
57
+ const BaseAPI_1 = require("../../api/BaseAPI");
58
+ const HistoryConsistentPush_1 = require("../../hooks/HistoryConsistentPush");
54
59
  const AccountRouter = react_1.default.lazy(() => Promise.resolve().then(() => __importStar(require('../../pages/account/AccountRouter'))).then(({ AccountRouter }) => ({
55
60
  default: AccountRouter,
56
61
  })));
57
- function FullPageEngineContextWrapper(props) {
62
+ function FullPageEngineContextWrapper() {
58
63
  var _a, _b;
59
64
  const basketContext = (0, react_2.useContext)(contexts_1.BasketContext);
60
65
  const ccx = (0, react_2.useContext)(contexts_1.CompanyContext);
@@ -66,7 +71,7 @@ function FullPageEngineContextWrapper(props) {
66
71
  const [initialStep, setInitialStep] = (0, react_2.useState)(StepManager_1.default.getFirstStep());
67
72
  const { hotel } = (0, hooks_1.useCurrentHotel)();
68
73
  const location = (0, react_router_dom_1.useLocation)();
69
- const history = (0, react_router_dom_1.useHistory)();
74
+ const historyConsistentPush = (0, HistoryConsistentPush_1.useHistoryConsistentPush)();
70
75
  const isInStepRoot = (0, react_router_dom_1.useRouteMatch)({
71
76
  path: StepManager_1.default.STEP_BASE,
72
77
  });
@@ -82,12 +87,12 @@ function FullPageEngineContextWrapper(props) {
82
87
  const urlParameterBuilder = {};
83
88
  if (location.search) {
84
89
  const query = new URLSearchParams(location.search);
85
- const format = 'YYYY-MM-DD';
86
- let start = (0, dayjs_1.default)(query.get('arrive'), format);
87
- let end = (0, dayjs_1.default)(query.get('depart'), format);
88
- const promoCode = query.get('promocode');
89
- const promoOnly = query.get('promoonly');
90
- const promoFeatured = query.get('promofeatured');
90
+ const format = BaseAPI_1.API_DATE_FORMAT;
91
+ let start = (0, dayjs_1.default)(query.get(AppQueryParameters_1.EAppQueryParameters.Arrive), format);
92
+ let end = (0, dayjs_1.default)(query.get(AppQueryParameters_1.EAppQueryParameters.Depart), format);
93
+ const promoCode = query.get(AppQueryParameters_1.EAppQueryParameters.PromoCode);
94
+ const promoOnly = query.get(AppQueryParameters_1.EAppQueryParameters.PromoOnly);
95
+ const promoFeatured = query.get(AppQueryParameters_1.EAppQueryParameters.PromoFeatured);
91
96
  if (promoCode) {
92
97
  urlParameterBuilder.promoCode = promoCode;
93
98
  }
@@ -98,17 +103,17 @@ function FullPageEngineContextWrapper(props) {
98
103
  FeatureProvider_1.default.load(FeaturedPromoFeature_1.default);
99
104
  urlParameterBuilder.promoFeatured = true;
100
105
  }
101
- const roomCode = query.get('room');
106
+ const roomCode = query.get(AppQueryParameters_1.EAppQueryParameters.Room);
102
107
  if (roomCode) {
103
108
  // TODO: Refactor this to come from this context instead.
104
109
  beContext.setCurrentFilters(Object.assign(Object.assign({}, beContext.currentFilters), { ['RoomType']: new RoomTypeFilter_1.default([roomCode]) }));
105
110
  }
106
- const rateCode = query.get('rate');
111
+ const rateCode = query.get(AppQueryParameters_1.EAppQueryParameters.Rate);
107
112
  if (rateCode) {
108
113
  // TODO: Refactor this to come from this context instead.
109
114
  beContext.setCurrentFilters(Object.assign(Object.assign({}, beContext.currentFilters), { ['RateType']: new RateTypeFilter_1.default([rateCode]) }));
110
115
  }
111
- const hotelId = query.get('hotel');
116
+ const hotelId = query.get(AppQueryParameters_1.EAppQueryParameters.Hotel);
112
117
  if (hotelId) {
113
118
  if (ccx.changeHotel(hotelId)) {
114
119
  if (!start.isValid()) {
@@ -121,7 +126,7 @@ function FullPageEngineContextWrapper(props) {
121
126
  }
122
127
  urlParameterBuilder.hotelId = hotelId;
123
128
  }
124
- const defaultCity = query.get('defaultCity');
129
+ const defaultCity = query.get(AppQueryParameters_1.EAppQueryParameters.DefaultCity);
125
130
  if (defaultCity) {
126
131
  urlParameterBuilder.defaultCity = defaultCity;
127
132
  }
@@ -139,19 +144,19 @@ function FullPageEngineContextWrapper(props) {
139
144
  urlParameterBuilder.startDate = start;
140
145
  urlParameterBuilder.endDate = end;
141
146
  }
142
- const adults = Number.parseInt(query.get('adults'), 10);
147
+ const adults = Number.parseInt(query.get(AppQueryParameters_1.EAppQueryParameters.Adults), 10);
143
148
  if (!isNaN(adults) && adults > 1) {
144
149
  if (!hotel || hotel.maxOccupancy >= adults) {
145
150
  urlParameterBuilder.adults = adults;
146
151
  }
147
152
  }
148
- const children = Number.parseInt(query.get('children'), 10);
153
+ const children = Number.parseInt(query.get(AppQueryParameters_1.EAppQueryParameters.Children), 10);
149
154
  if (!isNaN(children) && children > 0) {
150
155
  if (!hotel || hotel.maxOccupancy + (isNaN(adults) ? 0 : adults) >= children) {
151
156
  urlParameterBuilder.children = children;
152
157
  }
153
158
  }
154
- const roomCount = Number.parseInt(query.get('rooms'), 10);
159
+ const roomCount = Number.parseInt(query.get(AppQueryParameters_1.EAppQueryParameters.Rooms), 10);
155
160
  if (!isNaN(roomCount) && roomCount > 1) {
156
161
  urlParameterBuilder.rooms = addXRooms = roomCount;
157
162
  }
@@ -222,7 +227,7 @@ function FullPageEngineContextWrapper(props) {
222
227
  }
223
228
  // We're in /step/ but on a not recognized one.
224
229
  if (!pathInLoadedSteps) {
225
- history.push(Object.assign(Object.assign({}, location), { pathname: initialStep.getStepUrl() }));
230
+ historyConsistentPush(initialStep.getStepUrl());
226
231
  }
227
232
  }
228
233
  }
@@ -247,8 +252,9 @@ function FullPageEngineContextWrapper(props) {
247
252
  .filter((path) => MemberPortalFeature_1.default.isActive() || path === FindReservation_1.EFindReservationPath.FindReservation)
248
253
  .join('|')})`, component: FindReservation_1.default }),
249
254
  react_1.default.createElement(react_router_dom_1.Route, { path: "/find-reservation/:ref/:email", component: FindReservationResults_1.default })),
250
- MemberPortalFeature_1.default.isActive() && (react_1.default.createElement(react_1.default.Suspense, { fallback: react_1.default.createElement("div", null, "TODO:") },
251
- react_1.default.createElement(AccountRouter, null)))),
255
+ react_1.default.createElement(PrivateRoute_1.PrivateRoute, { path: "/account" }, MemberPortalFeature_1.default.isActive() && (react_1.default.createElement(react_1.default.Suspense, { fallback: react_1.default.createElement("div", null,
256
+ react_1.default.createElement(LargeLoader_1.default, null)) },
257
+ react_1.default.createElement(AccountRouter, null))))),
252
258
  react_1.default.createElement("div", { className: "engine-body" },
253
259
  react_1.default.createElement(AvailableUpgradesModal_1.default, null),
254
260
  StepManager_1.default.getSteps().map((step) => (react_1.default.createElement(NaturallyProgressedStepRoute_1.default, { key: step.getName(), step: step }))),
@@ -1 +1 @@
1
- {"version":3,"file":"FullPageEngineContextWrapper.js","sourceRoot":"/","sources":["src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { useContext, useEffect, useState } from 'react';\n\nimport {\n AuthenticationContextProvider,\n BasketContext,\n BookingEngineContext,\n CompanyContext,\n FullPageBookingEngineUrlParameters,\n FullPageEngineContext,\n FullPageEngineContextType,\n ModalContextWrapper,\n} from '@frontend/contexts';\nimport dayjs from 'dayjs';\nimport Step from '@/pages/steps/Step';\nimport StepManager from '@/util/StepManager';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { Redirect, Route, useHistory, useLocation, useRouteMatch } from 'react-router-dom';\nimport FeatureProvider from '@/providers/FeatureProvider';\nimport FeaturedPromoFeature from '@/providers/feature/FeaturedPromoFeature';\nimport RoomTypeFilter from '@/models/Room/Filters/RoomTypeFilter';\nimport RateTypeFilter from '@/models/Room/Filters/RateTypeFilter';\nimport BasketRow from '@/models/BasketRow';\nimport StepRoom from '@/pages/steps/StepRoom/StepRoom';\nimport ScrollToTop from '@/components/generic/ScrollToTop';\nimport Header from '@/components/navigation/Header';\nimport AvailableUpgradesModal from '@/components/steps/room/AvailableUpgradesModal';\n\nimport FindReservation, { EFindReservationPath, QUERY_PARAM_NAME } from '@/pages/findReservation/FindReservation';\nimport FindReservationResults from '@/pages/findReservation/FindReservationResults';\nimport HotelInfo from '@/pages/hotel/HotelInfo';\nimport HotelInfoPlaceholder from '@/pages/hotel/HotelInfoPlaceholder';\nimport StepRoute from 'routes/NaturallyProgressedStepRoute';\nimport { PageColorComponent } from '@/components/pages/PageColorComponent';\nimport MemberPortalFeature from '@/providers/feature/MemberPortalFeature';\nimport { RoomstayMark } from '@/components/generic/RoomstayMark';\n\nconst AccountRouter = React.lazy(() =>\n import('@/pages/account/AccountRouter').then(({ AccountRouter }) => ({\n default: AccountRouter,\n }))\n);\n\ninterface FullPageEngineContextWrapperProps {\n children?: React.ReactNode;\n}\n\nexport function FullPageEngineContextWrapper(props: FullPageEngineContextWrapperProps) {\n const basketContext = useContext(BasketContext);\n const ccx = useContext(CompanyContext);\n const beContext = useContext(BookingEngineContext);\n\n const [engineReady, setEngineReady] = useState(false);\n const [urlFlagsParsed, setUrlFlagsParsed] = useState(false);\n const [urlParameters, setUrlParameters] = useState<FullPageBookingEngineUrlParameters>({});\n\n const [currentStep, setCurrentStep] = useState<Step>(StepManager.getStepFromName(beContext.engine.getInitialSession()?.step as string) ?? StepManager.getFirstStep());\n const [initialStep, setInitialStep] = useState<Step>(StepManager.getFirstStep());\n\n const { hotel } = useCurrentHotel();\n\n const location = useLocation();\n const history = useHistory();\n\n const isInStepRoot = useRouteMatch({\n path: StepManager.STEP_BASE,\n });\n\n useEffect(() => {\n beContext.sessionProvider?.updateSession({ step: currentStep.getName() });\n }, [currentStep]);\n\n useEffect(() => {\n const currentBasketRows = basketContext.currentBasketRows;\n\n let addXRooms = 1;\n\n // TODO: this probably needs to be the only place this is set, and listen for URL changes\n if (currentBasketRows.length === 0) {\n const urlParameterBuilder: FullPageBookingEngineUrlParameters = {};\n\n if (location.search) {\n const query = new URLSearchParams(location.search);\n\n const format = 'YYYY-MM-DD';\n\n let start = dayjs(query.get('arrive'), format);\n let end = dayjs(query.get('depart'), format);\n\n const promoCode = query.get('promocode');\n const promoOnly = query.get('promoonly');\n\n const promoFeatured = query.get('promofeatured');\n\n if (promoCode) {\n urlParameterBuilder.promoCode = promoCode;\n }\n\n if (promoOnly && promoOnly.toLowerCase() !== 'false') {\n urlParameterBuilder.promoOnly = Boolean(promoOnly);\n }\n\n if (promoFeatured && promoFeatured.toLowerCase() !== 'false') {\n FeatureProvider.load(FeaturedPromoFeature);\n urlParameterBuilder.promoFeatured = true;\n }\n\n const roomCode = query.get('room');\n if (roomCode) {\n // TODO: Refactor this to come from this context instead.\n beContext.setCurrentFilters({\n ...beContext.currentFilters,\n ['RoomType']: new RoomTypeFilter([roomCode]),\n });\n }\n\n const rateCode = query.get('rate');\n if (rateCode) {\n // TODO: Refactor this to come from this context instead.\n beContext.setCurrentFilters({\n ...beContext.currentFilters,\n ['RateType']: new RateTypeFilter([rateCode]),\n });\n }\n\n const hotelId = query.get('hotel');\n\n if (hotelId) {\n if (ccx.changeHotel(hotelId)) {\n if (!start.isValid()) {\n start = dayjs().add(1, 'day');\n }\n\n if (!end.isValid()) {\n end = start.add(1, 'day');\n }\n\n setInitialStep(StepRoom);\n }\n\n urlParameterBuilder.hotelId = hotelId;\n }\n\n const defaultCity = query.get('defaultCity');\n if (defaultCity) {\n urlParameterBuilder.defaultCity = defaultCity;\n }\n\n // We're doing dates last, as other properties, like hotelID might change them if they're not already set\n if (start.isValid() && end.isValid()) {\n if (start.isBefore(dayjs())) {\n start = dayjs();\n }\n\n if (end.isBefore(start)) {\n end = start.add(1, 'day');\n } else if (end.isBefore(dayjs().add(1, 'day'))) {\n end = dayjs().add(1, 'day');\n }\n\n urlParameterBuilder.startDate = start;\n urlParameterBuilder.endDate = end;\n }\n\n const adults = Number.parseInt(query.get('adults') as string, 10);\n if (!isNaN(adults) && adults > 1) {\n if (!hotel || (hotel.maxOccupancy as number) >= adults) {\n urlParameterBuilder.adults = adults;\n }\n }\n\n const children = Number.parseInt(query.get('children') as string, 10);\n if (!isNaN(children) && children > 0) {\n if (!hotel || (hotel.maxOccupancy as number) + (isNaN(adults) ? 0 : adults) >= children) {\n urlParameterBuilder.children = children;\n }\n }\n\n const roomCount = Number.parseInt(query.get('rooms') as string, 10);\n if (!isNaN(roomCount) && roomCount > 1) {\n urlParameterBuilder.rooms = addXRooms = roomCount;\n }\n\n setUrlParameters(urlParameterBuilder);\n }\n\n let firstBasketRow: BasketRow | undefined = undefined;\n const { startDate, endDate, promoCode, promoOnly, adults, children } = urlParameterBuilder;\n for (let i = 0; i < addXRooms; i++) {\n const basketRow = new BasketRow();\n\n if (startDate) {\n basketRow.setStartDate(startDate);\n }\n\n if (endDate) {\n basketRow.setEndDate(endDate);\n }\n\n if (promoCode) {\n basketRow.setPromoCode(promoCode);\n }\n\n if (promoOnly) {\n basketRow.setPromoOnly(promoOnly);\n }\n\n if (adults) {\n basketRow.setAdults(adults);\n }\n\n if (children) {\n basketRow.setChildren(children);\n }\n\n basketContext.addBasketRow(basketRow, false, i !== 0);\n\n if (i === 0) {\n firstBasketRow = basketRow;\n }\n }\n\n if (firstBasketRow?.getStartDate() && firstBasketRow.getEndDate()) {\n setInitialStep(StepRoom);\n }\n } else {\n const initialSession = beContext.engine.getInitialSession();\n if (initialSession) {\n setInitialStep(StepManager.getStepFromName(initialSession.step) as Step);\n }\n }\n\n setUrlFlagsParsed(true);\n }, []);\n\n /**\n * Engine Ready useEffect, used to deffer loading the UI until everything engine wise is set up properly\n */\n useEffect(() => {\n if (!engineReady) {\n if (ccx.hotels.length > 0 && urlFlagsParsed) {\n setEngineReady(true);\n }\n }\n }, [ccx.hotels, urlFlagsParsed]);\n\n useEffect(() => {\n if (engineReady) {\n if (isInStepRoot && initialStep) {\n // We want to respect the browsers pathname, and only redirect to a defined step if\n // the pathname isn't set, or matches an unknown page.\n\n // Is the current location in the path? i.e does the user want to be somewhere specific\n let pathInLoadedSteps = false;\n for (const step of StepManager.getSteps()) {\n // Using match instead of equals as some clients have skipped the trailing slash\n if (step.getStepUrl().match(new RegExp(`${location.pathname}(/|)`, 'ig'))) {\n pathInLoadedSteps = true;\n break;\n }\n }\n\n // We're in /step/ but on a not recognized one.\n if (!pathInLoadedSteps) {\n history.push({\n ...location,\n pathname: initialStep.getStepUrl(),\n });\n }\n }\n }\n }, [engineReady]);\n\n const workingContext: FullPageEngineContextType = { urlParameters, currentStep, setCurrentStep };\n\n const renderRouteHandler = () => {\n return <Redirect to={StepManager.getFirstStep().getStepUrl()} />;\n };\n\n return (\n <FullPageEngineContext.Provider value={workingContext}>\n <AuthenticationContextProvider>\n <ModalContextWrapper>\n <ScrollToTop />\n <Route exact path=\"/\" render={renderRouteHandler} />\n <header className=\"engine-header\">\n <Header />\n </header>\n {engineReady && (\n <>\n <div className=\"engine-page\">\n <React.Suspense fallback={<HotelInfoPlaceholder />}>\n <Route exact path=\"/hotel-info/\" component={HotelInfo} />\n </React.Suspense>\n <React.Suspense fallback={<div>Loading...</div>}>\n <Route\n exact\n path={`/:${QUERY_PARAM_NAME}(${Object.values(EFindReservationPath)\n .filter((path) => MemberPortalFeature.isActive() || path === EFindReservationPath.FindReservation)\n .join('|')})`}\n component={FindReservation}\n />\n <Route path=\"/find-reservation/:ref/:email\" component={FindReservationResults} />\n </React.Suspense>\n\n {MemberPortalFeature.isActive() && (\n <React.Suspense fallback={<div>TODO:</div>}>\n <AccountRouter />\n </React.Suspense>\n )}\n </div>\n <div className=\"engine-body\">\n <AvailableUpgradesModal />\n {StepManager.getSteps().map((step: Step) => (\n <StepRoute key={step.getName()} step={step} />\n ))}\n <Route path=\"*\" component={PageColorComponent} />\n </div>\n </>\n )}\n <RoomstayMark />\n </ModalContextWrapper>\n </AuthenticationContextProvider>\n </FullPageEngineContext.Provider>\n );\n}\n"]}
1
+ {"version":3,"file":"FullPageEngineContextWrapper.js","sourceRoot":"/","sources":["src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { useContext, useEffect, useState } from 'react';\n\nimport {\n AuthenticationContextProvider,\n BasketContext,\n BookingEngineContext,\n CompanyContext,\n FullPageBookingEngineUrlParameters,\n FullPageEngineContext,\n FullPageEngineContextType,\n ModalContextWrapper,\n} from '@frontend/contexts';\nimport dayjs from 'dayjs';\nimport Step from '@/pages/steps/Step';\nimport StepManager from '@/util/StepManager';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { Redirect, Route, useLocation, useRouteMatch } from 'react-router-dom';\nimport FeatureProvider from '@/providers/FeatureProvider';\nimport FeaturedPromoFeature from '@/providers/feature/FeaturedPromoFeature';\nimport RoomTypeFilter from '@/models/Room/Filters/RoomTypeFilter';\nimport RateTypeFilter from '@/models/Room/Filters/RateTypeFilter';\nimport BasketRow from '@/models/BasketRow';\nimport StepRoom from '@/pages/steps/StepRoom/StepRoom';\nimport ScrollToTop from '@/components/generic/ScrollToTop';\nimport Header from '@/components/navigation/Header';\nimport AvailableUpgradesModal from '@/components/steps/room/AvailableUpgradesModal';\n\nimport FindReservation, { EFindReservationPath, QUERY_PARAM_NAME } from '@/pages/findReservation/FindReservation';\nimport FindReservationResults from '@/pages/findReservation/FindReservationResults';\nimport HotelInfo from '@/pages/hotel/HotelInfo';\nimport HotelInfoPlaceholder from '@/pages/hotel/HotelInfoPlaceholder';\nimport StepRoute from 'routes/NaturallyProgressedStepRoute';\nimport { PageColorComponent } from '@/components/pages/PageColorComponent';\nimport MemberPortalFeature from '@/providers/feature/MemberPortalFeature';\nimport { RoomstayMark } from '@/components/generic/RoomstayMark';\nimport LargeLoader from '@/components/generic/loader/LargeLoader';\nimport { PrivateRoute } from '@/containers/PrivateRoute';\nimport { EAppQueryParameters } from '@/models/AppQueryParameters';\nimport { API_DATE_FORMAT } from '@/api/BaseAPI';\nimport { useHistoryConsistentPush } from '@/hooks/HistoryConsistentPush';\n\nconst AccountRouter = React.lazy(() =>\n import('@/pages/account/AccountRouter').then(({ AccountRouter }) => ({\n default: AccountRouter,\n }))\n);\n\nexport function FullPageEngineContextWrapper() {\n const basketContext = useContext(BasketContext);\n const ccx = useContext(CompanyContext);\n const beContext = useContext(BookingEngineContext);\n\n const [engineReady, setEngineReady] = useState(false);\n const [urlFlagsParsed, setUrlFlagsParsed] = useState(false);\n const [urlParameters, setUrlParameters] = useState<FullPageBookingEngineUrlParameters>({});\n\n const [currentStep, setCurrentStep] = useState<Step>(StepManager.getStepFromName(beContext.engine.getInitialSession()?.step as string) ?? StepManager.getFirstStep());\n const [initialStep, setInitialStep] = useState<Step>(StepManager.getFirstStep());\n\n const { hotel } = useCurrentHotel();\n\n const location = useLocation();\n const historyConsistentPush = useHistoryConsistentPush();\n\n const isInStepRoot = useRouteMatch({\n path: StepManager.STEP_BASE,\n });\n\n useEffect(() => {\n beContext.sessionProvider?.updateSession({ step: currentStep.getName() });\n }, [currentStep]);\n\n useEffect(() => {\n const currentBasketRows = basketContext.currentBasketRows;\n\n let addXRooms = 1;\n\n // TODO: this probably needs to be the only place this is set, and listen for URL changes\n if (currentBasketRows.length === 0) {\n const urlParameterBuilder: FullPageBookingEngineUrlParameters = {};\n\n if (location.search) {\n const query = new URLSearchParams(location.search);\n\n const format = API_DATE_FORMAT;\n\n let start = dayjs(query.get(EAppQueryParameters.Arrive), format);\n let end = dayjs(query.get(EAppQueryParameters.Depart), format);\n\n const promoCode = query.get(EAppQueryParameters.PromoCode);\n const promoOnly = query.get(EAppQueryParameters.PromoOnly);\n\n const promoFeatured = query.get(EAppQueryParameters.PromoFeatured);\n\n if (promoCode) {\n urlParameterBuilder.promoCode = promoCode;\n }\n\n if (promoOnly && promoOnly.toLowerCase() !== 'false') {\n urlParameterBuilder.promoOnly = Boolean(promoOnly);\n }\n\n if (promoFeatured && promoFeatured.toLowerCase() !== 'false') {\n FeatureProvider.load(FeaturedPromoFeature);\n urlParameterBuilder.promoFeatured = true;\n }\n\n const roomCode = query.get(EAppQueryParameters.Room);\n if (roomCode) {\n // TODO: Refactor this to come from this context instead.\n beContext.setCurrentFilters({\n ...beContext.currentFilters,\n ['RoomType']: new RoomTypeFilter([roomCode]),\n });\n }\n\n const rateCode = query.get(EAppQueryParameters.Rate);\n if (rateCode) {\n // TODO: Refactor this to come from this context instead.\n beContext.setCurrentFilters({\n ...beContext.currentFilters,\n ['RateType']: new RateTypeFilter([rateCode]),\n });\n }\n\n const hotelId = query.get(EAppQueryParameters.Hotel);\n\n if (hotelId) {\n if (ccx.changeHotel(hotelId)) {\n if (!start.isValid()) {\n start = dayjs().add(1, 'day');\n }\n\n if (!end.isValid()) {\n end = start.add(1, 'day');\n }\n\n setInitialStep(StepRoom);\n }\n\n urlParameterBuilder.hotelId = hotelId;\n }\n\n const defaultCity = query.get(EAppQueryParameters.DefaultCity);\n if (defaultCity) {\n urlParameterBuilder.defaultCity = defaultCity;\n }\n\n // We're doing dates last, as other properties, like hotelID might change them if they're not already set\n if (start.isValid() && end.isValid()) {\n if (start.isBefore(dayjs())) {\n start = dayjs();\n }\n\n if (end.isBefore(start)) {\n end = start.add(1, 'day');\n } else if (end.isBefore(dayjs().add(1, 'day'))) {\n end = dayjs().add(1, 'day');\n }\n\n urlParameterBuilder.startDate = start;\n urlParameterBuilder.endDate = end;\n }\n\n const adults = Number.parseInt(query.get(EAppQueryParameters.Adults) as string, 10);\n if (!isNaN(adults) && adults > 1) {\n if (!hotel || (hotel.maxOccupancy as number) >= adults) {\n urlParameterBuilder.adults = adults;\n }\n }\n\n const children = Number.parseInt(query.get(EAppQueryParameters.Children) as string, 10);\n if (!isNaN(children) && children > 0) {\n if (!hotel || (hotel.maxOccupancy as number) + (isNaN(adults) ? 0 : adults) >= children) {\n urlParameterBuilder.children = children;\n }\n }\n\n const roomCount = Number.parseInt(query.get(EAppQueryParameters.Rooms) as string, 10);\n if (!isNaN(roomCount) && roomCount > 1) {\n urlParameterBuilder.rooms = addXRooms = roomCount;\n }\n\n setUrlParameters(urlParameterBuilder);\n }\n\n let firstBasketRow: BasketRow | undefined = undefined;\n const { startDate, endDate, promoCode, promoOnly, adults, children } = urlParameterBuilder;\n for (let i = 0; i < addXRooms; i++) {\n const basketRow = new BasketRow();\n\n if (startDate) {\n basketRow.setStartDate(startDate);\n }\n\n if (endDate) {\n basketRow.setEndDate(endDate);\n }\n\n if (promoCode) {\n basketRow.setPromoCode(promoCode);\n }\n\n if (promoOnly) {\n basketRow.setPromoOnly(promoOnly);\n }\n\n if (adults) {\n basketRow.setAdults(adults);\n }\n\n if (children) {\n basketRow.setChildren(children);\n }\n\n basketContext.addBasketRow(basketRow, false, i !== 0);\n\n if (i === 0) {\n firstBasketRow = basketRow;\n }\n }\n\n if (firstBasketRow?.getStartDate() && firstBasketRow.getEndDate()) {\n setInitialStep(StepRoom);\n }\n } else {\n const initialSession = beContext.engine.getInitialSession();\n if (initialSession) {\n setInitialStep(StepManager.getStepFromName(initialSession.step) as Step);\n }\n }\n\n setUrlFlagsParsed(true);\n }, []);\n\n /**\n * Engine Ready useEffect, used to deffer loading the UI until everything engine wise is set up properly\n */\n useEffect(() => {\n if (!engineReady) {\n if (ccx.hotels.length > 0 && urlFlagsParsed) {\n setEngineReady(true);\n }\n }\n }, [ccx.hotels, urlFlagsParsed]);\n\n useEffect(() => {\n if (engineReady) {\n if (isInStepRoot && initialStep) {\n // We want to respect the browsers pathname, and only redirect to a defined step if\n // the pathname isn't set, or matches an unknown page.\n\n // Is the current location in the path? i.e does the user want to be somewhere specific\n let pathInLoadedSteps = false;\n for (const step of StepManager.getSteps()) {\n // Using match instead of equals as some clients have skipped the trailing slash\n if (step.getStepUrl().match(new RegExp(`${location.pathname}(/|)`, 'ig'))) {\n pathInLoadedSteps = true;\n break;\n }\n }\n\n // We're in /step/ but on a not recognized one.\n if (!pathInLoadedSteps) {\n historyConsistentPush(initialStep.getStepUrl());\n }\n }\n }\n }, [engineReady]);\n\n const workingContext: FullPageEngineContextType = { urlParameters, currentStep, setCurrentStep };\n\n const renderRouteHandler = () => {\n return <Redirect to={StepManager.getFirstStep().getStepUrl()} />;\n };\n\n return (\n <FullPageEngineContext.Provider value={workingContext}>\n <AuthenticationContextProvider>\n <ModalContextWrapper>\n <ScrollToTop />\n <Route exact path=\"/\" render={renderRouteHandler} />\n <header className=\"engine-header\">\n <Header />\n </header>\n {engineReady && (\n <>\n <div className=\"engine-page\">\n <React.Suspense fallback={<HotelInfoPlaceholder />}>\n <Route exact path=\"/hotel-info/\" component={HotelInfo} />\n </React.Suspense>\n <React.Suspense fallback={<div>Loading...</div>}>\n <Route\n exact\n path={`/:${QUERY_PARAM_NAME}(${Object.values(EFindReservationPath)\n .filter((path) => MemberPortalFeature.isActive() || path === EFindReservationPath.FindReservation)\n .join('|')})`}\n component={FindReservation}\n />\n <Route path=\"/find-reservation/:ref/:email\" component={FindReservationResults} />\n </React.Suspense>\n\n <PrivateRoute path=\"/account\">\n {MemberPortalFeature.isActive() && (\n <React.Suspense\n fallback={\n <div>\n <LargeLoader />\n </div>\n }\n >\n <AccountRouter />\n </React.Suspense>\n )}\n </PrivateRoute>\n </div>\n <div className=\"engine-body\">\n <AvailableUpgradesModal />\n {StepManager.getSteps().map((step: Step) => (\n <StepRoute key={step.getName()} step={step} />\n ))}\n <Route path=\"*\" component={PageColorComponent} />\n </div>\n </>\n )}\n <RoomstayMark />\n </ModalContextWrapper>\n </AuthenticationContextProvider>\n </FullPageEngineContext.Provider>\n );\n}\n"]}
@@ -47,6 +47,9 @@ const useHotelOverrides = () => {
47
47
  const phoneNumberInSummary = (0, react_2.useMemo)(() => {
48
48
  return overrides === null || overrides === void 0 ? void 0 : overrides.phoneNumberInSummary;
49
49
  }, [overrides === null || overrides === void 0 ? void 0 : overrides.phoneNumberInSummary]);
50
+ const enabledEventIds = (0, react_2.useMemo)(() => {
51
+ return overrides === null || overrides === void 0 ? void 0 : overrides.enabledEventIds;
52
+ }, [overrides === null || overrides === void 0 ? void 0 : overrides.enabledEventIds]);
50
53
  (0, react_2.useEffect)(() => {
51
54
  fetchApiData();
52
55
  }, [fetchApiData]);
@@ -56,6 +59,7 @@ const useHotelOverrides = () => {
56
59
  distanceUnitType,
57
60
  transportDistances,
58
61
  phoneNumberInSummary,
62
+ enabledEventIds,
59
63
  };
60
64
  };
61
65
  const HotelOverridesContextWrapper = ({ children }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"HotelOverridesContext.js","sourceRoot":"/","sources":["src/contexts/HotelOverridesContext.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';\nimport API from '@/api/BookingAPI';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { HotelOverrideDTO } from '@/models/Api/HotelOverrideDTO';\nimport { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport { CompanyContext } from '@frontend/contexts';\n\ninterface IHotelOverridesContext extends Omit<HotelOverrideDTO, 'overrideDistanceUnitType'> {\n loading: boolean;\n}\n\nexport const HotelOverridesContext = createContext<IHotelOverridesContext>({} as IHotelOverridesContext);\n\nconst useHotelOverrides = (): IHotelOverridesContext => {\n const companyContext = useContext(CompanyContext);\n const { hotel } = useCurrentHotel();\n\n const [loading, loadingSet] = useState<boolean>(false);\n const [overrides, overridesSet] = useState<HotelOverrideDTO>({});\n\n const fetchApiData = useCallback(async () => {\n if (companyContext.selectedHotelID) {\n loadingSet(true);\n const apiData = await API.Hotel.fetchOverrides(companyContext.selectedHotelID);\n loadingSet(false);\n overridesSet(apiData);\n }\n }, [companyContext.selectedHotelID]);\n\n const hideByLine: boolean = useMemo(() => {\n return !!overrides?.hideByLine || !!hotel?.hideByLine;\n }, [overrides?.hideByLine]);\n\n const distanceUnitType: DistanceUnitType = useMemo(() => {\n // Metric by default\n return (overrides.overrideDistanceUnitType && overrides?.distanceUnitType) || hotel?.distanceUnitType || DistanceUnitType.Metric;\n }, [overrides?.distanceUnitType, hotel?.distanceUnitType, hotel?.hasLoadedDetails]);\n\n const transportDistances = useMemo(() => {\n return overrides?.transportDistances ?? hotel?.transportDistances;\n }, [overrides?.transportDistances]);\n\n const phoneNumberInSummary = useMemo(() => {\n return overrides?.phoneNumberInSummary;\n }, [overrides?.phoneNumberInSummary]);\n\n useEffect(() => {\n fetchApiData();\n }, [fetchApiData]);\n\n return {\n loading,\n hideByLine,\n distanceUnitType,\n transportDistances,\n phoneNumberInSummary,\n };\n};\n\nexport const HotelOverridesContextWrapper = ({ children }: { children?: React.ReactNode }) => {\n const hotelOverrides = useHotelOverrides();\n return <HotelOverridesContext.Provider value={hotelOverrides}>{children}</HotelOverridesContext.Provider>;\n};\n"]}
1
+ {"version":3,"file":"HotelOverridesContext.js","sourceRoot":"/","sources":["src/contexts/HotelOverridesContext.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';\nimport API from '@/api/BookingAPI';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { HotelOverrideDTO } from '@/models/Api/HotelOverrideDTO';\nimport { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport { CompanyContext } from '@frontend/contexts';\n\ninterface IHotelOverridesContext extends Omit<HotelOverrideDTO, 'overrideDistanceUnitType'> {\n loading: boolean;\n}\n\nexport const HotelOverridesContext = createContext<IHotelOverridesContext>({} as IHotelOverridesContext);\n\nconst useHotelOverrides = (): IHotelOverridesContext => {\n const companyContext = useContext(CompanyContext);\n const { hotel } = useCurrentHotel();\n\n const [loading, loadingSet] = useState<boolean>(false);\n const [overrides, overridesSet] = useState<HotelOverrideDTO>({});\n\n const fetchApiData = useCallback(async () => {\n if (companyContext.selectedHotelID) {\n loadingSet(true);\n const apiData = await API.Hotel.fetchOverrides(companyContext.selectedHotelID);\n loadingSet(false);\n overridesSet(apiData);\n }\n }, [companyContext.selectedHotelID]);\n\n const hideByLine: boolean = useMemo(() => {\n return !!overrides?.hideByLine || !!hotel?.hideByLine;\n }, [overrides?.hideByLine]);\n\n const distanceUnitType: DistanceUnitType = useMemo(() => {\n // Metric by default\n return (overrides.overrideDistanceUnitType && overrides?.distanceUnitType) || hotel?.distanceUnitType || DistanceUnitType.Metric;\n }, [overrides?.distanceUnitType, hotel?.distanceUnitType, hotel?.hasLoadedDetails]);\n\n const transportDistances = useMemo(() => {\n return overrides?.transportDistances ?? hotel?.transportDistances;\n }, [overrides?.transportDistances]);\n\n const phoneNumberInSummary = useMemo(() => {\n return overrides?.phoneNumberInSummary;\n }, [overrides?.phoneNumberInSummary]);\n\n const enabledEventIds = useMemo(() => {\n return overrides?.enabledEventIds;\n }, [overrides?.enabledEventIds]);\n\n useEffect(() => {\n fetchApiData();\n }, [fetchApiData]);\n\n return {\n loading,\n hideByLine,\n distanceUnitType,\n transportDistances,\n phoneNumberInSummary,\n enabledEventIds,\n };\n};\n\nexport const HotelOverridesContextWrapper = ({ children }: { children?: React.ReactNode }) => {\n const hotelOverrides = useHotelOverrides();\n return <HotelOverridesContext.Provider value={hotelOverrides}>{children}</HotelOverridesContext.Provider>;\n};\n"]}
@@ -1,16 +1,20 @@
1
1
  /// <reference types="react" />
2
2
  import { CognitoUser } from '@aws-amplify/auth';
3
+ import { Hotel } from '../../../models/Client/Hotel/Hotel';
4
+ export interface ExtraClientMetadataParams {
5
+ hotel?: Hotel;
6
+ }
3
7
  export interface IAuthenticationContext {
4
8
  loading?: boolean;
5
9
  cognitoUser?: CognitoUser;
6
10
  cognitoLoginState?: CognitoLoginState;
7
11
  error?: Error;
8
- login: (email: string, password: string) => Promise<CognitoLoginState | undefined>;
9
- register: (email: string, password: string, additionalAttributes?: any) => Promise<CognitoLoginState | undefined>;
10
- confirmAccount: (email: string, code: string, password: string) => Promise<CognitoLoginState | undefined>;
11
- forgotPassword: (email: string) => Promise<CognitoLoginState | undefined>;
12
- resetPassword: (email: string, code: string, password: string) => Promise<CognitoLoginState | undefined>;
13
- changePassword: (currentPassword: string, newPassword: string) => Promise<CognitoLoginState | undefined>;
12
+ login: (email: string, password: string, extraClientMetadataParams?: ExtraClientMetadataParams) => Promise<CognitoLoginState | undefined>;
13
+ register: (email: string, password: string, additionalAttributes?: any, extraClientMetadataParams?: ExtraClientMetadataParams) => Promise<CognitoLoginState | undefined>;
14
+ confirmAccount: (email: string, code: string, password: string, extraClientMetadataParams?: ExtraClientMetadataParams) => Promise<CognitoLoginState | undefined>;
15
+ forgotPassword: (email: string, extraClientMetadataParams?: ExtraClientMetadataParams) => Promise<CognitoLoginState | undefined>;
16
+ resetPassword: (email: string, code: string, password: string, extraClientMetadataParams?: ExtraClientMetadataParams) => Promise<CognitoLoginState | undefined>;
17
+ changePassword: (currentPassword: string, newPassword: string, extraClientMetadataParams?: ExtraClientMetadataParams) => Promise<CognitoLoginState | undefined>;
14
18
  logout: () => Promise<CognitoLoginState | undefined>;
15
19
  reset: () => void;
16
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AuthenticationContext.js","sourceRoot":"/","sources":["src/contexts/Members/AuthenticationContext/AuthenticationContext.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iCAAkD;AAElD,gDAA2C;AAyB3C,IAAY,iBAYX;AAZD,WAAY,iBAAiB;IACzB,oCAAe,CAAA;IACf,kEAA6C,CAAA;IAC7C,+DAA0C,CAAA;IAC1C,2CAAsB,CAAA;IACtB,sDAAiC,CAAA;IACjC,iEAA4C,CAAA;IAC5C,wCAAmB,CAAA;IACnB,6DAAwC,CAAA;IACxC,kDAA6B,CAAA;IAC7B,kDAA6B,CAAA;IAC7B,sDAAiC,CAAA;AACrC,CAAC,EAZW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAY5B;AAID,CAAC,GAAS,EAAE;IACR,MAAM,IAAI,GAAG,MAAM,IAAA,mBAAO,GAAE,CAAC;IAC7B,IAAI,CAAC,SAAS,CAAC;QACX,MAAM,EAAE,gBAAgB;QACxB,iBAAiB,EAAE,gBAAgB;QACnC,4BAA4B,EAAE,oBAAoB;KACrD,CAAC,CAAC;AACP,CAAC,CAAA,CAAC,EAAE,CAAC;AAEQ,QAAA,qBAAqB,GAAG,IAAA,qBAAa,EAAC,EAA4B,CAAC,CAAC;AAE1E,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,IAAA,kBAAU,EAAC,6BAAqB,CAAC,CAAC;AAA5D,QAAA,iBAAiB,qBAA2C","sourcesContent":["import { createContext, useContext } from 'react';\nimport { CognitoUser } from '@aws-amplify/auth';\nimport { getAuth } from '@/util/AsyncAuth';\n\nexport interface IAuthenticationContext {\n loading?: boolean;\n cognitoUser?: CognitoUser;\n cognitoLoginState?: CognitoLoginState;\n error?: Error;\n\n login: (email: string, password: string) => Promise<CognitoLoginState | undefined>;\n\n register: (email: string, password: string, additionalAttributes?: any) => Promise<CognitoLoginState | undefined>;\n confirmAccount: (email: string, code: string, password: string) => Promise<CognitoLoginState | undefined>;\n forgotPassword: (email: string) => Promise<CognitoLoginState | undefined>;\n resetPassword: (email: string, code: string, password: string) => Promise<CognitoLoginState | undefined>;\n changePassword: (currentPassword: string, newPassword: string) => Promise<CognitoLoginState | undefined>;\n logout: () => Promise<CognitoLoginState | undefined>;\n reset: () => void;\n}\n\nexport interface IChangePassword {\n currentPassword?: string;\n newPassword?: string;\n confirmPassword?: string;\n}\n\nexport enum CognitoLoginState {\n Login = 'Login',\n RequiresPasswordReset = 'Reset your password',\n RequiresConfirmation = 'Verify your email',\n SetupMFA = 'Setup MFA',\n VerifyMFA = 'Enter your MFA code',\n RequiresNewPassword = 'Set up your password',\n Success = 'Success',\n ForgotPassword = 'Create a new password',\n CodeMismatch = 'CodeMismatch',\n UserNotFound = 'UserNotFound',\n UsernameExists = 'UsernameExists',\n}\n\ndeclare const AWS_USER_POOL_ID: string;\ndeclare const AWS_USER_POOL_WEB_ID: string;\n(async () => {\n const Auth = await getAuth();\n Auth.configure({\n region: 'ap-southeast-2',\n aws_user_pools_id: AWS_USER_POOL_ID,\n aws_user_pools_web_client_id: AWS_USER_POOL_WEB_ID,\n });\n})();\n\nexport const AuthenticationContext = createContext({} as IAuthenticationContext);\n\nexport const useAuthentication = () => useContext(AuthenticationContext);\n"]}
1
+ {"version":3,"file":"AuthenticationContext.js","sourceRoot":"/","sources":["src/contexts/Members/AuthenticationContext/AuthenticationContext.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iCAAkD;AAElD,gDAA2C;AA8B3C,IAAY,iBAYX;AAZD,WAAY,iBAAiB;IACzB,oCAAe,CAAA;IACf,kEAA6C,CAAA;IAC7C,+DAA0C,CAAA;IAC1C,2CAAsB,CAAA;IACtB,sDAAiC,CAAA;IACjC,iEAA4C,CAAA;IAC5C,wCAAmB,CAAA;IACnB,6DAAwC,CAAA;IACxC,kDAA6B,CAAA;IAC7B,kDAA6B,CAAA;IAC7B,sDAAiC,CAAA;AACrC,CAAC,EAZW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAY5B;AAID,CAAC,GAAS,EAAE;IACR,MAAM,IAAI,GAAG,MAAM,IAAA,mBAAO,GAAE,CAAC;IAC7B,IAAI,CAAC,SAAS,CAAC;QACX,MAAM,EAAE,gBAAgB;QACxB,iBAAiB,EAAE,gBAAgB;QACnC,4BAA4B,EAAE,oBAAoB;KACrD,CAAC,CAAC;AACP,CAAC,CAAA,CAAC,EAAE,CAAC;AAEQ,QAAA,qBAAqB,GAAG,IAAA,qBAAa,EAAC,EAA4B,CAAC,CAAC;AAE1E,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,IAAA,kBAAU,EAAC,6BAAqB,CAAC,CAAC;AAA5D,QAAA,iBAAiB,qBAA2C","sourcesContent":["import { createContext, useContext } from 'react';\nimport { CognitoUser } from '@aws-amplify/auth';\nimport { getAuth } from '@/util/AsyncAuth';\nimport { Hotel } from '@/models/Client/Hotel/Hotel';\n\nexport interface ExtraClientMetadataParams {\n hotel?: Hotel;\n}\n\nexport interface IAuthenticationContext {\n loading?: boolean;\n cognitoUser?: CognitoUser;\n cognitoLoginState?: CognitoLoginState;\n error?: Error;\n\n login: (email: string, password: string, extraClientMetadataParams?: ExtraClientMetadataParams) => Promise<CognitoLoginState | undefined>;\n\n register: (email: string, password: string, additionalAttributes?: any, extraClientMetadataParams?: ExtraClientMetadataParams) => Promise<CognitoLoginState | undefined>;\n confirmAccount: (email: string, code: string, password: string, extraClientMetadataParams?: ExtraClientMetadataParams) => Promise<CognitoLoginState | undefined>;\n forgotPassword: (email: string, extraClientMetadataParams?: ExtraClientMetadataParams) => Promise<CognitoLoginState | undefined>;\n resetPassword: (email: string, code: string, password: string, extraClientMetadataParams?: ExtraClientMetadataParams) => Promise<CognitoLoginState | undefined>;\n changePassword: (currentPassword: string, newPassword: string, extraClientMetadataParams?: ExtraClientMetadataParams) => Promise<CognitoLoginState | undefined>;\n logout: () => Promise<CognitoLoginState | undefined>;\n reset: () => void;\n}\n\nexport interface IChangePassword {\n currentPassword?: string;\n newPassword?: string;\n confirmPassword?: string;\n}\n\nexport enum CognitoLoginState {\n Login = 'Login',\n RequiresPasswordReset = 'Reset your password',\n RequiresConfirmation = 'Verify your email',\n SetupMFA = 'Setup MFA',\n VerifyMFA = 'Enter your MFA code',\n RequiresNewPassword = 'Set up your password',\n Success = 'Success',\n ForgotPassword = 'Create a new password',\n CodeMismatch = 'CodeMismatch',\n UserNotFound = 'UserNotFound',\n UsernameExists = 'UsernameExists',\n}\n\ndeclare const AWS_USER_POOL_ID: string;\ndeclare const AWS_USER_POOL_WEB_ID: string;\n(async () => {\n const Auth = await getAuth();\n Auth.configure({\n region: 'ap-southeast-2',\n aws_user_pools_id: AWS_USER_POOL_ID,\n aws_user_pools_web_client_id: AWS_USER_POOL_WEB_ID,\n });\n})();\n\nexport const AuthenticationContext = createContext({} as IAuthenticationContext);\n\nexport const useAuthentication = () => useContext(AuthenticationContext);\n"]}
@@ -1,4 +1,27 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
26
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
27
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -13,30 +36,29 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
36
  };
14
37
  Object.defineProperty(exports, "__esModule", { value: true });
15
38
  exports.AuthenticationContextProvider = void 0;
16
- const react_1 = __importDefault(require("react"));
17
- const react_2 = require("react");
39
+ const react_1 = __importStar(require("react"));
18
40
  const base_64_1 = __importDefault(require("base-64"));
19
41
  const contexts_1 = require("../../index.js");
20
42
  const MemberPortalFeature_1 = __importDefault(require("../../../providers/feature/MemberPortalFeature"));
21
43
  const AsyncAuth_1 = require("../../../util/AsyncAuth");
22
44
  const useAuthenticationContext = () => {
23
- const { companyShort, selectedHotelID } = (0, react_2.useContext)(contexts_1.CompanyContext);
24
- const clientMetadata = (0, react_2.useMemo)(() => ({
45
+ const { companyShort, selectedHotelID, colors, logoLink = '' } = (0, react_1.useContext)(contexts_1.CompanyContext);
46
+ const clientMetadata = (0, react_1.useMemo)(() => ({
25
47
  hotelId: selectedHotelID,
26
48
  companyShort: companyShort,
27
49
  }), [selectedHotelID, companyShort]);
28
- const [finishedInitializingContext, finishedInitializingContextSet] = (0, react_2.useState)(false);
29
- const [isFetching, isFetchingSet] = (0, react_2.useState)(true);
30
- const loading = (0, react_2.useMemo)(() => {
50
+ const [finishedInitializingContext, finishedInitializingContextSet] = (0, react_1.useState)(false);
51
+ const [isFetching, isFetchingSet] = (0, react_1.useState)(true);
52
+ const loading = (0, react_1.useMemo)(() => {
31
53
  return !finishedInitializingContext || isFetching;
32
54
  }, [finishedInitializingContext, isFetching]);
33
- const [cognitoUser, cognitoUserSet] = (0, react_2.useState)(null);
34
- const [cognitoLoginState, cognitoLoginStateSet] = (0, react_2.useState)(contexts_1.CognitoLoginState.Login);
35
- const [error, errorSet] = (0, react_2.useState)();
55
+ const [cognitoUser, cognitoUserSet] = (0, react_1.useState)(null);
56
+ const [cognitoLoginState, cognitoLoginStateSet] = (0, react_1.useState)(contexts_1.CognitoLoginState.Login);
57
+ const [error, errorSet] = (0, react_1.useState)();
36
58
  /**
37
59
  * Set up the context, and try and immediately log in the user in the event that they're here
38
60
  */
39
- const initialiseContext = (0, react_2.useCallback)(() => __awaiter(void 0, void 0, void 0, function* () {
61
+ const initialiseContext = (0, react_1.useCallback)(() => __awaiter(void 0, void 0, void 0, function* () {
40
62
  const Auth = yield (0, AsyncAuth_1.getAuth)();
41
63
  yield Auth.currentAuthenticatedUser()
42
64
  .then((user) => {
@@ -53,7 +75,7 @@ const useAuthenticationContext = () => {
53
75
  finishedInitializingContextSet(true);
54
76
  isFetchingSet(false);
55
77
  }), []);
56
- (0, react_2.useEffect)(() => {
78
+ (0, react_1.useEffect)(() => {
57
79
  if (MemberPortalFeature_1.default.isActive()) {
58
80
  initialiseContext();
59
81
  }
@@ -74,10 +96,10 @@ const useAuthenticationContext = () => {
74
96
  isFetchingSet(false);
75
97
  }
76
98
  });
77
- const transformUsername = (0, react_2.useCallback)((username) => {
99
+ const transformUsername = (0, react_1.useCallback)((username) => {
78
100
  return base_64_1.default.encode(`${companyShort}-${username.toLowerCase()}`);
79
101
  }, [companyShort]);
80
- const login = (email, password) => __awaiter(void 0, void 0, void 0, function* () {
102
+ const login = (email, password, extraClientMetadataParams) => __awaiter(void 0, void 0, void 0, function* () {
81
103
  const Auth = yield (0, AsyncAuth_1.getAuth)();
82
104
  let cState;
83
105
  const username = transformUsername(email);
@@ -109,7 +131,9 @@ const useAuthenticationContext = () => {
109
131
  cState = contexts_1.CognitoLoginState.RequiresPasswordReset;
110
132
  }
111
133
  else if (e.code === 'UserNotConfirmedException') {
112
- yield Auth.resendSignUp(username, clientMetadata);
134
+ const { hotel } = extraClientMetadataParams || {};
135
+ const additionalMetadata = getExtraClientMetadata({ hotel });
136
+ yield Auth.resendSignUp(username, Object.assign(Object.assign({}, clientMetadata), (additionalMetadata || {})));
113
137
  cState = contexts_1.CognitoLoginState.RequiresConfirmation;
114
138
  }
115
139
  else {
@@ -121,15 +145,17 @@ const useAuthenticationContext = () => {
121
145
  return cState;
122
146
  }
123
147
  });
124
- const register = (email, password, additionalAttributes) => __awaiter(void 0, void 0, void 0, function* () {
148
+ const register = (email, password, additionalAttributes, extraClientMetadataParams) => __awaiter(void 0, void 0, void 0, function* () {
125
149
  const Auth = yield (0, AsyncAuth_1.getAuth)();
126
150
  let cState;
127
151
  try {
152
+ const { hotel } = extraClientMetadataParams || {};
153
+ const additionalMetadata = getExtraClientMetadata({ hotel });
128
154
  const signUpResult = yield Auth.signUp({
129
155
  username: transformUsername(email),
130
156
  password,
131
157
  attributes: Object.assign({ email }, additionalAttributes),
132
- clientMetadata,
158
+ clientMetadata: Object.assign(Object.assign({}, clientMetadata), (additionalMetadata || {})),
133
159
  });
134
160
  if (!signUpResult.userConfirmed) {
135
161
  cState = contexts_1.CognitoLoginState.RequiresConfirmation;
@@ -155,17 +181,23 @@ const useAuthenticationContext = () => {
155
181
  return cState;
156
182
  }
157
183
  });
158
- const confirmAccount = (email, code, password) => __awaiter(void 0, void 0, void 0, function* () {
184
+ const confirmAccount = (email, code, password, extraClientMetadataParams) => __awaiter(void 0, void 0, void 0, function* () {
159
185
  const Auth = yield (0, AsyncAuth_1.getAuth)();
160
186
  const username = transformUsername(email);
161
- yield Auth.confirmSignUp(username, code);
162
- return yield login(email, password);
187
+ const { hotel } = extraClientMetadataParams || {};
188
+ const additionalMetadata = getExtraClientMetadata({ hotel });
189
+ yield Auth.confirmSignUp(username, code, {
190
+ clientMetadata: additionalMetadata,
191
+ });
192
+ return yield login(email, password, extraClientMetadataParams);
163
193
  });
164
- const forgotPassword = (email) => __awaiter(void 0, void 0, void 0, function* () {
194
+ const forgotPassword = (email, extraClientMetadataParams) => __awaiter(void 0, void 0, void 0, function* () {
165
195
  const Auth = yield (0, AsyncAuth_1.getAuth)();
166
196
  const username = transformUsername(email);
167
197
  try {
168
- yield Auth.forgotPassword(username, clientMetadata);
198
+ const { hotel } = extraClientMetadataParams || {};
199
+ const additionalMetadata = getExtraClientMetadata({ hotel });
200
+ yield Auth.forgotPassword(username, Object.assign(Object.assign({}, clientMetadata), (additionalMetadata || {})));
169
201
  }
170
202
  catch (e) {
171
203
  switch (e.code) {
@@ -179,11 +211,13 @@ const useAuthenticationContext = () => {
179
211
  cognitoLoginStateSet(contexts_1.CognitoLoginState.ForgotPassword);
180
212
  return contexts_1.CognitoLoginState.ForgotPassword;
181
213
  });
182
- const resetPassword = (email, code, password) => __awaiter(void 0, void 0, void 0, function* () {
214
+ const resetPassword = (email, code, password, extraClientMetadataParams) => __awaiter(void 0, void 0, void 0, function* () {
183
215
  const Auth = yield (0, AsyncAuth_1.getAuth)();
184
216
  const username = transformUsername(email);
185
217
  try {
186
- yield Auth.forgotPasswordSubmit(username, code, password);
218
+ const { hotel } = extraClientMetadataParams || {};
219
+ const additionalMetadata = getExtraClientMetadata({ hotel });
220
+ yield Auth.forgotPasswordSubmit(username, code, password, additionalMetadata);
187
221
  yield login(email, password);
188
222
  }
189
223
  catch (e) {
@@ -198,9 +232,11 @@ const useAuthenticationContext = () => {
198
232
  cognitoLoginStateSet(contexts_1.CognitoLoginState.Success);
199
233
  return contexts_1.CognitoLoginState.Success;
200
234
  });
201
- const changePassword = (currentPassword, newPassword) => __awaiter(void 0, void 0, void 0, function* () {
235
+ const changePassword = (currentPassword, newPassword, extraClientMetadataParams) => __awaiter(void 0, void 0, void 0, function* () {
202
236
  const Auth = yield (0, AsyncAuth_1.getAuth)();
203
- yield Auth.changePassword(cognitoUser, currentPassword, newPassword);
237
+ const { hotel } = extraClientMetadataParams || {};
238
+ const additionalMetadata = getExtraClientMetadata({ hotel });
239
+ yield Auth.changePassword(cognitoUser, currentPassword, newPassword, additionalMetadata);
204
240
  return contexts_1.CognitoLoginState.Success;
205
241
  });
206
242
  const logout = () => __awaiter(void 0, void 0, void 0, function* () {
@@ -214,6 +250,20 @@ const useAuthenticationContext = () => {
214
250
  cognitoLoginStateSet(contexts_1.CognitoLoginState.Login);
215
251
  errorSet(undefined);
216
252
  };
253
+ const getExtraClientMetadata = ({ hotel }) => {
254
+ const { colors: hoteColor = colors, email, logo } = hotel || {};
255
+ return {
256
+ companyShort,
257
+ hotelName: (hotel === null || hotel === void 0 ? void 0 : hotel.name) || '',
258
+ hotelUrl: (hotel === null || hotel === void 0 ? void 0 : hotel.hotelUrl) || '',
259
+ colorAccent: hoteColor.accent,
260
+ colorAccent2: hoteColor.accent2,
261
+ colorAccent3: hoteColor.accent3,
262
+ hotelLogo: typeof logo === 'string' ? logo : logoLink || '',
263
+ hotelEmail: email || '',
264
+ hotelPhone: (hotel === null || hotel === void 0 ? void 0 : hotel.phone) || '',
265
+ };
266
+ };
217
267
  return {
218
268
  loading,
219
269
  cognitoUser: cognitoUser,
@@ -1 +1 @@
1
- {"version":3,"file":"AuthenticationContextProvider.js","sourceRoot":"/","sources":["src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { useCallback, useContext, useEffect, useMemo, useState } from 'react';\n\nimport base64 from 'base-64';\nimport { AuthenticationContext, CognitoLoginState, CompanyContext, IAuthenticationContext, RoomstayMemberContextProvider } from '@frontend/contexts';\nimport { CognitoUser } from '@aws-amplify/auth';\nimport MemberPortalFeature from '@/providers/feature/MemberPortalFeature';\nimport { getAuth } from '@/util/AsyncAuth';\n\nconst useAuthenticationContext = (): IAuthenticationContext => {\n const { companyShort, selectedHotelID } = useContext(CompanyContext);\n\n const clientMetadata = useMemo(\n () => ({\n hotelId: selectedHotelID,\n companyShort: companyShort,\n }),\n [selectedHotelID, companyShort]\n );\n\n const [finishedInitializingContext, finishedInitializingContextSet] = useState<boolean>(false);\n const [isFetching, isFetchingSet] = useState<boolean>(true);\n const loading = useMemo(() => {\n return !finishedInitializingContext || isFetching;\n }, [finishedInitializingContext, isFetching]);\n\n const [cognitoUser, cognitoUserSet] = useState<CognitoUser | null>(null);\n const [cognitoLoginState, cognitoLoginStateSet] = useState<CognitoLoginState>(CognitoLoginState.Login);\n\n const [error, errorSet] = useState<Error>();\n\n /**\n * Set up the context, and try and immediately log in the user in the event that they're here\n */\n const initialiseContext = useCallback(async () => {\n const Auth = await getAuth();\n await Auth.currentAuthenticatedUser()\n .then((user) => {\n if (user) {\n cognitoUserSet(user);\n cognitoLoginStateSet(CognitoLoginState.Success);\n }\n })\n .catch((e) => {\n if (e !== 'The user is not authenticated') {\n errorSet(e);\n }\n });\n\n finishedInitializingContextSet(true);\n isFetchingSet(false);\n }, []);\n\n useEffect(() => {\n if (MemberPortalFeature.isActive()) {\n initialiseContext();\n }\n }, [initialiseContext, MemberPortalFeature.isActive()]);\n\n /**\n * Wrapper for our async calls to handle the `isFetching` and `error` state\n */\n const asyncWrapper: (func: (...params: any[]) => Promise<CognitoLoginState | undefined>, ...parameters: any[]) => Promise<CognitoLoginState | undefined> = async (\n func: (...params: any[]) => Promise<CognitoLoginState | undefined>,\n ...parameters: any[]\n ) => {\n isFetchingSet(true);\n errorSet(undefined);\n\n try {\n return await func(...parameters);\n } catch (e: any) {\n errorSet(e);\n } finally {\n isFetchingSet(false);\n }\n };\n\n const transformUsername = useCallback(\n (username: string) => {\n return base64.encode(`${companyShort}-${username.toLowerCase()}`);\n },\n [companyShort]\n );\n\n const login = async (email: string, password: string) => {\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 await Auth.resendSignUp(username, clientMetadata);\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) => {\n const Auth = await getAuth();\n let cState: CognitoLoginState;\n\n try {\n const signUpResult = await Auth.signUp({\n username: transformUsername(email),\n password,\n attributes: {\n email,\n ...additionalAttributes,\n },\n clientMetadata,\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) => {\n const Auth = await getAuth();\n const username = transformUsername(email);\n await Auth.confirmSignUp(username, code);\n\n return await login(email, password);\n };\n\n const forgotPassword = async (email: string): Promise<CognitoLoginState> => {\n const Auth = await getAuth();\n const username = transformUsername(email);\n try {\n await Auth.forgotPassword(username, clientMetadata);\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): Promise<CognitoLoginState> => {\n const Auth = await getAuth();\n const username = transformUsername(email);\n try {\n await Auth.forgotPasswordSubmit(username, code, password);\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) => {\n const Auth = await getAuth();\n await Auth.changePassword(cognitoUser, currentPassword, newPassword);\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 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAqF;AAGrF,sDAA6B;AAC7B,iDAAgL;AAEhL,kGAA0E;AAC1E,gDAA2C;AAE3C,MAAM,wBAAwB,GAAG,GAA2B,EAAE;IAC1D,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,IAAA,kBAAU,EAAC,yBAAc,CAAC,CAAC;IAE5F,MAAM,cAAc,GAAG,IAAA,eAAO,EAC1B,GAAG,EAAE,CAAC,CAAC;QACH,OAAO,EAAE,eAAe;QACxB,YAAY,EAAE,YAAY;KAC7B,CAAC,EACF,CAAC,eAAe,EAAE,YAAY,CAAC,CAClC,CAAC;IAEF,MAAM,CAAC,2BAA2B,EAAE,8BAA8B,CAAC,GAAG,IAAA,gBAAQ,EAAU,KAAK,CAAC,CAAC;IAC/F,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAU,IAAI,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QACzB,OAAO,CAAC,2BAA2B,IAAI,UAAU,CAAC;IACtD,CAAC,EAAE,CAAC,2BAA2B,EAAE,UAAU,CAAC,CAAC,CAAC;IAE9C,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAqB,IAAI,CAAC,CAAC;IACzE,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,IAAA,gBAAQ,EAAoB,4BAAiB,CAAC,KAAK,CAAC,CAAC;IAEvG,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,GAAS,CAAC;IAE5C;;OAEG;IACH,MAAM,iBAAiB,GAAG,IAAA,mBAAW,EAAC,GAAS,EAAE;QAC7C,MAAM,IAAI,GAAG,MAAM,IAAA,mBAAO,GAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,wBAAwB,EAAE;aAChC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACX,IAAI,IAAI,EAAE;gBACN,cAAc,CAAC,IAAI,CAAC,CAAC;gBACrB,oBAAoB,CAAC,4BAAiB,CAAC,OAAO,CAAC,CAAC;aACnD;QACL,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,IAAI,CAAC,KAAK,+BAA+B,EAAE;gBACvC,QAAQ,CAAC,CAAC,CAAC,CAAC;aACf;QACL,CAAC,CAAC,CAAC;QAEP,8BAA8B,CAAC,IAAI,CAAC,CAAC;QACrC,aAAa,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC,CAAA,EAAE,EAAE,CAAC,CAAC;IAEP,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,6BAAmB,CAAC,QAAQ,EAAE,EAAE;YAChC,iBAAiB,EAAE,CAAC;SACvB;IACL,CAAC,EAAE,CAAC,iBAAiB,EAAE,6BAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAExD;;OAEG;IACH,MAAM,YAAY,GAAyI,CACvJ,IAAkE,EAClE,GAAG,UAAiB,EACtB,EAAE;QACA,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEpB,IAAI;YACA,OAAO,MAAM,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;SACpC;QAAC,OAAO,CAAM,EAAE;YACb,QAAQ,CAAC,CAAC,CAAC,CAAC;SACf;gBAAS;YACN,aAAa,CAAC,KAAK,CAAC,CAAC;SACxB;IACL,CAAC,CAAA,CAAC;IAEF,MAAM,iBAAiB,GAAG,IAAA,mBAAW,EACjC,CAAC,QAAgB,EAAE,EAAE;QACjB,OAAO,iBAAM,CAAC,MAAM,CAAC,GAAG,YAAY,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACtE,CAAC,EACD,CAAC,YAAY,CAAC,CACjB,CAAC;IAEF,MAAM,KAAK,GAAG,CAAO,KAAa,EAAE,QAAgB,EAAE,yBAAqD,EAAE,EAAE;QAC3G,MAAM,IAAI,GAAG,MAAM,IAAA,mBAAO,GAAE,CAAC;QAC7B,IAAI,MAAM,CAAC;QAEX,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI;YACA,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;gBACzB,QAAQ;gBACR,QAAQ;aACX,CAAC,CAAC;YAEH,IAAI,EAAE,CAAC,aAAa,KAAK,SAAS,IAAI,EAAE,CAAC,aAAa,KAAK,oBAAoB,EAAE;gBAC7E,mBAAmB;gBACnB,MAAM,GAAG,4BAAiB,CAAC,SAAS,CAAC;aACxC;iBAAM,IAAI,EAAE,CAAC,aAAa,KAAK,uBAAuB,EAAE;gBACrD,wBAAwB;gBACxB,MAAM,GAAG,4BAAiB,CAAC,mBAAmB,CAAC;aAClD;iBAAM,IAAI,EAAE,CAAC,aAAa,KAAK,WAAW,EAAE;gBACzC,kBAAkB;gBAClB,MAAM,GAAG,4BAAiB,CAAC,QAAQ,CAAC;aACvC;iBAAM;gBACH,aAAa;gBACb,cAAc,CAAC,EAAE,CAAC,CAAC;gBACnB,MAAM,GAAG,4BAAiB,CAAC,OAAO,CAAC;aACtC;SACJ;QAAC,OAAO,CAAM,EAAE;YACb,IAAI,CAAC,CAAC,IAAI,KAAK,gCAAgC,EAAE;gBAC7C,MAAM,GAAG,4BAAiB,CAAC,qBAAqB,CAAC;aACpD;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,2BAA2B,EAAE;gBAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,yBAAyB,IAAI,EAAE,CAAC;gBAClD,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC7D,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,kCAAO,cAAc,GAAK,CAAC,kBAAkB,IAAI,EAAE,CAAC,EAAG,CAAC;gBACxF,MAAM,GAAG,4BAAiB,CAAC,oBAAoB,CAAC;aACnD;iBAAM;gBACH,MAAM,CAAC,CAAC;aACX;SACJ;QAED,IAAI,MAAM,EAAE;YACR,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAE7B,OAAO,MAAM,CAAC;SACjB;IACL,CAAC,CAAA,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAO,KAAa,EAAE,QAAgB,EAAE,oBAA0B,EAAE,yBAAqD,EAAE,EAAE;QAC1I,MAAM,IAAI,GAAG,MAAM,IAAA,mBAAO,GAAE,CAAC;QAC7B,IAAI,MAAyB,CAAC;QAE9B,IAAI;YACA,MAAM,EAAE,KAAK,EAAE,GAAG,yBAAyB,IAAI,EAAE,CAAC;YAClD,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;gBACnC,QAAQ,EAAE,iBAAiB,CAAC,KAAK,CAAC;gBAClC,QAAQ;gBACR,UAAU,kBACN,KAAK,IACF,oBAAoB,CAC1B;gBACD,cAAc,kCAAO,cAAc,GAAK,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAE;aACvE,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;gBAC7B,MAAM,GAAG,4BAAiB,CAAC,oBAAoB,CAAC;aACnD;iBAAM;gBACH,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBAClC,MAAM,GAAG,4BAAiB,CAAC,OAAO,CAAC;aACtC;SACJ;QAAC,OAAO,CAAM,EAAE;YACb,QAAQ,CAAC,CAAC,IAAI,EAAE;gBACZ,KAAK,yBAAyB,CAAC,CAAC;oBAC5B,MAAM,GAAG,4BAAiB,CAAC,cAAc,CAAC;oBAC1C,MAAM;iBACT;gBACD,OAAO,CAAC,CAAC;oBACL,MAAM,CAAC,CAAC;iBACX;aACJ;SACJ;QAED,IAAI,MAAM,EAAE;YACR,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAC7B,OAAO,MAAM,CAAC;SACjB;IACL,CAAC,CAAA,CAAC;IAEF,MAAM,cAAc,GAAG,CAAO,KAAa,EAAE,IAAY,EAAE,QAAgB,EAAE,yBAAqD,EAAE,EAAE;QAClI,MAAM,IAAI,GAAG,MAAM,IAAA,mBAAO,GAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,EAAE,KAAK,EAAE,GAAG,yBAAyB,IAAI,EAAE,CAAC;QAClD,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE;YACrC,cAAc,EAAE,kBAAkB;SACrC,CAAC,CAAC;QAEH,OAAO,MAAM,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,yBAAyB,CAAC,CAAC;IACnE,CAAC,CAAA,CAAC;IAEF,MAAM,cAAc,GAAG,CAAO,KAAa,EAAE,yBAAqD,EAA8B,EAAE;QAC9H,MAAM,IAAI,GAAG,MAAM,IAAA,mBAAO,GAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI;YACA,MAAM,EAAE,KAAK,EAAE,GAAG,yBAAyB,IAAI,EAAE,CAAC;YAClD,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7D,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,kCAAO,cAAc,GAAK,CAAC,kBAAkB,IAAI,EAAE,CAAC,EAAG,CAAC;SAC7F;QAAC,OAAO,CAAM,EAAE;YACb,QAAQ,CAAC,CAAC,IAAI,EAAE;gBACZ,KAAK,uBAAuB;oBACxB,oBAAoB,CAAC,4BAAiB,CAAC,YAAY,CAAC,CAAC;oBACrD,OAAO,4BAAiB,CAAC,YAAY,CAAC;gBAC1C;oBACI,MAAM,CAAC,CAAC;aACf;SACJ;QACD,oBAAoB,CAAC,4BAAiB,CAAC,cAAc,CAAC,CAAC;QACvD,OAAO,4BAAiB,CAAC,cAAc,CAAC;IAC5C,CAAC,CAAA,CAAC;IAEF,MAAM,aAAa,GAAG,CAAO,KAAa,EAAE,IAAY,EAAE,QAAgB,EAAE,yBAAqD,EAA8B,EAAE;QAC7J,MAAM,IAAI,GAAG,MAAM,IAAA,mBAAO,GAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI;YACA,MAAM,EAAE,KAAK,EAAE,GAAG,yBAAyB,IAAI,EAAE,CAAC;YAClD,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7D,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YAC9E,MAAM,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;SAChC;QAAC,OAAO,CAAM,EAAE;YACb,QAAQ,CAAC,CAAC,IAAI,EAAE;gBACZ,KAAK,uBAAuB;oBACxB,oBAAoB,CAAC,4BAAiB,CAAC,YAAY,CAAC,CAAC;oBACrD,OAAO,4BAAiB,CAAC,YAAY,CAAC;gBAC1C;oBACI,MAAM,CAAC,CAAC;aACf;SACJ;QACD,oBAAoB,CAAC,4BAAiB,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO,4BAAiB,CAAC,OAAO,CAAC;IACrC,CAAC,CAAA,CAAC;IAEF,MAAM,cAAc,GAAG,CAAO,eAAuB,EAAE,WAAmB,EAAE,yBAAqD,EAAE,EAAE;QACjI,MAAM,IAAI,GAAG,MAAM,IAAA,mBAAO,GAAE,CAAC;QAC7B,MAAM,EAAE,KAAK,EAAE,GAAG,yBAAyB,IAAI,EAAE,CAAC;QAClD,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAEzF,OAAO,4BAAiB,CAAC,OAAO,CAAC;IACrC,CAAC,CAAA,CAAC;IAEF,MAAM,MAAM,GAAG,GAAS,EAAE;QACtB,MAAM,IAAI,GAAG,MAAM,IAAA,mBAAO,GAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,oBAAoB,CAAC,4BAAiB,CAAC,KAAK,CAAC,CAAC;QAE9C,OAAO,4BAAiB,CAAC,KAAK,CAAC;IACnC,CAAC,CAAA,CAAC;IAEF,MAAM,KAAK,GAAG,GAAG,EAAE;QACf,oBAAoB,CAAC,4BAAiB,CAAC,KAAK,CAAC,CAAC;QAC9C,QAAQ,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,sBAAsB,GAAG,CAAC,EAAE,KAAK,EAA6B,EAAkB,EAAE;QACpF,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC;QAEhE,OAAO;YACH,YAAY;YACZ,SAAS,EAAE,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,KAAI,EAAE;YAC5B,QAAQ,EAAE,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,KAAI,EAAE;YAC/B,WAAW,EAAE,SAAS,CAAC,MAAM;YAC7B,YAAY,EAAE,SAAS,CAAC,OAAO;YAC/B,YAAY,EAAE,SAAS,CAAC,OAAO;YAC/B,SAAS,EAAE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE;YAC3D,UAAU,EAAE,KAAK,IAAI,EAAE;YACvB,UAAU,EAAE,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,KAAI,EAAE;SACjC,CAAC;IACN,CAAC,CAAC;IAEF,OAAO;QACH,OAAO;QAEP,WAAW,EAAE,WAA0B;QACvC,iBAAiB;QAEjB,KAAK;QAEL,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC;QAChD,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;QACtD,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC;QAClE,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC;QAClE,aAAa,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC;QAChE,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC;QAClE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;QAClD,KAAK;KACR,CAAC;AACN,CAAC,CAAC;AAEK,MAAM,6BAA6B,GAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IACpE,MAAM,KAAK,GAAG,wBAAwB,EAAE,CAAC;IACzC,OAAO,CACH,8BAAC,gCAAqB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK;QACxC,8BAAC,wCAA6B,QAAE,QAAQ,CAAiC,CAC5C,CACpC,CAAC;AACN,CAAC,CAAC;AAPW,QAAA,6BAA6B,iCAOxC","sourcesContent":["import React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';\nimport { ClientMetaData } from '@aws-amplify/auth/lib-esm/types';\n\nimport base64 from 'base-64';\nimport { AuthenticationContext, CognitoLoginState, CompanyContext, ExtraClientMetadataParams, IAuthenticationContext, RoomstayMemberContextProvider } from '@frontend/contexts';\nimport { CognitoUser } from '@aws-amplify/auth';\nimport MemberPortalFeature from '@/providers/feature/MemberPortalFeature';\nimport { getAuth } from '@/util/AsyncAuth';\n\nconst useAuthenticationContext = (): IAuthenticationContext => {\n const { companyShort, selectedHotelID, colors, logoLink = '' } = useContext(CompanyContext);\n\n const clientMetadata = useMemo(\n () => ({\n hotelId: selectedHotelID,\n companyShort: companyShort,\n }),\n [selectedHotelID, companyShort]\n );\n\n const [finishedInitializingContext, finishedInitializingContextSet] = useState<boolean>(false);\n const [isFetching, isFetchingSet] = useState<boolean>(true);\n const loading = useMemo(() => {\n return !finishedInitializingContext || isFetching;\n }, [finishedInitializingContext, isFetching]);\n\n const [cognitoUser, cognitoUserSet] = useState<CognitoUser | null>(null);\n const [cognitoLoginState, cognitoLoginStateSet] = useState<CognitoLoginState>(CognitoLoginState.Login);\n\n const [error, errorSet] = useState<Error>();\n\n /**\n * Set up the context, and try and immediately log in the user in the event that they're here\n */\n const initialiseContext = useCallback(async () => {\n const Auth = await getAuth();\n await Auth.currentAuthenticatedUser()\n .then((user) => {\n if (user) {\n cognitoUserSet(user);\n cognitoLoginStateSet(CognitoLoginState.Success);\n }\n })\n .catch((e) => {\n if (e !== 'The user is not authenticated') {\n errorSet(e);\n }\n });\n\n finishedInitializingContextSet(true);\n isFetchingSet(false);\n }, []);\n\n useEffect(() => {\n if (MemberPortalFeature.isActive()) {\n initialiseContext();\n }\n }, [initialiseContext, MemberPortalFeature.isActive()]);\n\n /**\n * Wrapper for our async calls to handle the `isFetching` and `error` state\n */\n const asyncWrapper: (func: (...params: any[]) => Promise<CognitoLoginState | undefined>, ...parameters: any[]) => Promise<CognitoLoginState | undefined> = async (\n func: (...params: any[]) => Promise<CognitoLoginState | undefined>,\n ...parameters: any[]\n ) => {\n isFetchingSet(true);\n errorSet(undefined);\n\n try {\n return await func(...parameters);\n } catch (e: any) {\n errorSet(e);\n } finally {\n isFetchingSet(false);\n }\n };\n\n const transformUsername = useCallback(\n (username: string) => {\n return base64.encode(`${companyShort}-${username.toLowerCase()}`);\n },\n [companyShort]\n );\n\n const login = async (email: string, password: string, extraClientMetadataParams?: ExtraClientMetadataParams) => {\n const Auth = await getAuth();\n let cState;\n\n const username = transformUsername(email);\n try {\n const cu = await Auth.signIn({\n username,\n password,\n });\n\n if (cu.challengeName === 'SMS_MFA' || cu.challengeName === 'SOFTWARE_TOKEN_MFA') {\n // TODO: Handle 2FA\n cState = CognitoLoginState.VerifyMFA;\n } else if (cu.challengeName === 'NEW_PASSWORD_REQUIRED') {\n // TODO: Change Password\n cState = CognitoLoginState.RequiresNewPassword;\n } else if (cu.challengeName === 'MFA_SETUP') {\n // TODO: SetUp MFA\n cState = CognitoLoginState.SetupMFA;\n } else {\n // Success???\n cognitoUserSet(cu);\n cState = CognitoLoginState.Success;\n }\n } catch (e: any) {\n if (e.code === 'PasswordResetRequiredException') {\n cState = CognitoLoginState.RequiresPasswordReset;\n } else if (e.code === 'UserNotConfirmedException') {\n const { hotel } = extraClientMetadataParams || {};\n const additionalMetadata = getExtraClientMetadata({ hotel });\n await Auth.resendSignUp(username, { ...clientMetadata, ...(additionalMetadata || {}) });\n cState = CognitoLoginState.RequiresConfirmation;\n } else {\n throw e;\n }\n }\n\n if (cState) {\n cognitoLoginStateSet(cState);\n\n return cState;\n }\n };\n\n const register = async (email: string, password: string, additionalAttributes?: any, extraClientMetadataParams?: ExtraClientMetadataParams) => {\n const Auth = await getAuth();\n let cState: CognitoLoginState;\n\n try {\n const { hotel } = extraClientMetadataParams || {};\n const additionalMetadata = getExtraClientMetadata({ hotel });\n const signUpResult = await Auth.signUp({\n username: transformUsername(email),\n password,\n attributes: {\n email,\n ...additionalAttributes,\n },\n clientMetadata: { ...clientMetadata, ...(additionalMetadata || {}) },\n });\n\n if (!signUpResult.userConfirmed) {\n cState = CognitoLoginState.RequiresConfirmation;\n } else {\n cognitoUserSet(signUpResult.user);\n cState = CognitoLoginState.Success;\n }\n } catch (e: any) {\n switch (e.code) {\n case 'UsernameExistsException': {\n cState = CognitoLoginState.UsernameExists;\n break;\n }\n default: {\n throw e;\n }\n }\n }\n\n if (cState) {\n cognitoLoginStateSet(cState);\n return cState;\n }\n };\n\n const confirmAccount = async (email: string, code: string, password: string, extraClientMetadataParams?: ExtraClientMetadataParams) => {\n const Auth = await getAuth();\n const username = transformUsername(email);\n const { hotel } = extraClientMetadataParams || {};\n const additionalMetadata = getExtraClientMetadata({ hotel });\n await Auth.confirmSignUp(username, code, {\n clientMetadata: additionalMetadata,\n });\n\n return await login(email, password, extraClientMetadataParams);\n };\n\n const forgotPassword = async (email: string, extraClientMetadataParams?: ExtraClientMetadataParams): Promise<CognitoLoginState> => {\n const Auth = await getAuth();\n const username = transformUsername(email);\n try {\n const { hotel } = extraClientMetadataParams || {};\n const additionalMetadata = getExtraClientMetadata({ hotel });\n await Auth.forgotPassword(username, { ...clientMetadata, ...(additionalMetadata || {}) });\n } catch (e: any) {\n switch (e.code) {\n case 'UserNotFoundException':\n cognitoLoginStateSet(CognitoLoginState.UserNotFound);\n return CognitoLoginState.UserNotFound;\n default:\n throw e;\n }\n }\n cognitoLoginStateSet(CognitoLoginState.ForgotPassword);\n return CognitoLoginState.ForgotPassword;\n };\n\n const resetPassword = async (email: string, code: string, password: string, extraClientMetadataParams?: ExtraClientMetadataParams): Promise<CognitoLoginState> => {\n const Auth = await getAuth();\n const username = transformUsername(email);\n try {\n const { hotel } = extraClientMetadataParams || {};\n const additionalMetadata = getExtraClientMetadata({ hotel });\n await Auth.forgotPasswordSubmit(username, code, password, additionalMetadata);\n await login(email, password);\n } catch (e: any) {\n switch (e.code) {\n case 'CodeMismatchException':\n cognitoLoginStateSet(CognitoLoginState.CodeMismatch);\n return CognitoLoginState.CodeMismatch;\n default:\n throw e;\n }\n }\n cognitoLoginStateSet(CognitoLoginState.Success);\n return CognitoLoginState.Success;\n };\n\n const changePassword = async (currentPassword: string, newPassword: string, extraClientMetadataParams?: ExtraClientMetadataParams) => {\n const Auth = await getAuth();\n const { hotel } = extraClientMetadataParams || {};\n const additionalMetadata = getExtraClientMetadata({ hotel });\n await Auth.changePassword(cognitoUser, currentPassword, newPassword, additionalMetadata);\n\n return CognitoLoginState.Success;\n };\n\n const logout = async () => {\n const Auth = await getAuth();\n await Auth.signOut();\n cognitoUserSet(null);\n cognitoLoginStateSet(CognitoLoginState.Login);\n\n return CognitoLoginState.Login;\n };\n\n const reset = () => {\n cognitoLoginStateSet(CognitoLoginState.Login);\n errorSet(undefined);\n };\n\n const getExtraClientMetadata = ({ hotel }: ExtraClientMetadataParams): ClientMetaData => {\n const { colors: hoteColor = colors, email, logo } = hotel || {};\n\n return {\n companyShort,\n hotelName: hotel?.name || '',\n hotelUrl: hotel?.hotelUrl || '',\n colorAccent: hoteColor.accent,\n colorAccent2: hoteColor.accent2,\n colorAccent3: hoteColor.accent3,\n hotelLogo: typeof logo === 'string' ? logo : logoLink || '',\n hotelEmail: email || '',\n hotelPhone: hotel?.phone || '',\n };\n };\n\n return {\n loading,\n\n cognitoUser: cognitoUser as CognitoUser,\n cognitoLoginState,\n\n error,\n\n login: (...args) => asyncWrapper(login, ...args),\n register: (...args) => asyncWrapper(register, ...args),\n confirmAccount: (...args) => asyncWrapper(confirmAccount, ...args),\n forgotPassword: (...args) => asyncWrapper(forgotPassword, ...args),\n resetPassword: (...args) => asyncWrapper(resetPassword, ...args),\n changePassword: (...args) => asyncWrapper(changePassword, ...args),\n logout: (...args) => asyncWrapper(logout, ...args),\n reset,\n };\n};\n\nexport const AuthenticationContextProvider: React.FC = ({ children }) => {\n const value = useAuthenticationContext();\n return (\n <AuthenticationContext.Provider value={value}>\n <RoomstayMemberContextProvider>{children}</RoomstayMemberContextProvider>\n </AuthenticationContext.Provider>\n );\n};\n"]}