@roomstay/frontend 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/201.bundle.js +1 -0
- package/dist/279.bundle.js +1 -0
- package/dist/370.bundle.js +1 -0
- package/dist/449.bundle.js +1 -0
- package/dist/625.bundle.js +1 -0
- package/dist/661.bundle.js +1 -0
- package/dist/7.bundle.js +1 -0
- package/dist/845.bundle.js +1 -0
- package/dist/873.bundle.js +1 -0
- package/dist/876.bundle.js +1 -0
- package/dist/972.bundle.js +1 -0
- package/dist/main.bundle.js +1 -0
- package/dist/src/api/AvailabilityAPI.js +90 -95
- package/dist/src/api/AvailabilityAPI.js.map +1 -1
- package/dist/src/api/BookingAPI.d.ts +2 -0
- package/dist/src/api/BookingAPI.js +2 -0
- package/dist/src/api/BookingAPI.js.map +1 -1
- package/dist/src/api/ErrorAPI.d.ts +9 -0
- package/dist/src/api/ErrorAPI.js +34 -0
- package/dist/src/api/ErrorAPI.js.map +1 -0
- package/dist/src/api/ExchangeRateAPI.d.ts +1 -0
- package/dist/src/api/ExchangeRateAPI.js +10 -2
- package/dist/src/api/ExchangeRateAPI.js.map +1 -1
- package/dist/src/components/generic/BackButton.d.ts +0 -1
- package/dist/src/components/generic/BookNowPayLaterInfoBlock.d.ts +0 -1
- package/dist/src/components/generic/Countdown.d.ts +0 -1
- package/dist/src/components/generic/Currency.d.ts +0 -1
- package/dist/src/components/generic/Distance.d.ts +0 -1
- package/dist/src/components/generic/Icon.d.ts +0 -1
- package/dist/src/components/generic/LineBreak.d.ts +0 -1
- package/dist/src/components/generic/NumberIncrement.d.ts +0 -1
- package/dist/src/components/generic/Placeholder.d.ts +0 -1
- package/dist/src/components/generic/PromoCodeInput.d.ts +0 -1
- package/dist/src/components/generic/RecentSearchesCard.d.ts +0 -1
- package/dist/src/components/generic/ScrollToTop.d.ts +1 -3
- package/dist/src/components/generic/Select.d.ts +0 -1
- package/dist/src/components/generic/badging/SSLSecureBadge.d.ts +0 -1
- package/dist/src/components/generic/buttons/NextStepButton.d.ts +0 -1
- package/dist/src/components/generic/date/DatePicker.d.ts +0 -1
- package/dist/src/components/generic/date/DatePickerDay.d.ts +0 -1
- package/dist/src/components/generic/date/DatePickerDays.d.ts +0 -1
- package/dist/src/components/generic/date/DatePickerMonth.d.ts +0 -1
- package/dist/src/components/generic/date/DatePickerWeek.d.ts +0 -1
- package/dist/src/components/generic/loader/LargeLoader.d.ts +0 -1
- package/dist/src/components/generic/loader/SmallSpinner.d.ts +0 -1
- package/dist/src/components/generic/map/HotelLocationMap.d.ts +0 -1
- package/dist/src/components/generic/modal/ConfirmationModal.d.ts +0 -1
- package/dist/src/components/generic/radio/RadioFields.d.ts +0 -1
- package/dist/src/components/iconComponents/BookNowPayLaterIcon.d.ts +0 -1
- package/dist/src/components/navigation/Header.d.ts +0 -1
- package/dist/src/components/navigation/StepSelector.d.ts +0 -1
- package/dist/src/components/navigation/StepSelectorModal.d.ts +0 -1
- package/dist/src/components/steps/DaysSelectedInformer.d.ts +0 -1
- package/dist/src/components/steps/MinimumNightStayPill.d.ts +0 -1
- package/dist/src/components/steps/addons/AddonCard.d.ts +0 -1
- package/dist/src/components/steps/addons/AddonList.d.ts +0 -1
- package/dist/src/components/steps/addons/AddonsNotFound.d.ts +0 -1
- package/dist/src/components/steps/common/CommonAddonSummary/CommonAddonSummary.d.ts +0 -1
- package/dist/src/components/steps/confirmation/AccountDetails.d.ts +0 -1
- package/dist/src/components/steps/confirmation/RoomContactDetails.d.ts +0 -1
- package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.d.ts +0 -1
- package/dist/src/components/steps/confirmation/StepConfirmationCommentsComponent.d.ts +0 -1
- package/dist/src/components/steps/confirmation/StepConfirmationForm.d.ts +0 -1
- package/dist/src/components/steps/confirmation/StepConfirmationLimitedOffer.d.ts +0 -1
- package/dist/src/components/steps/confirmation/StepConfirmationPoliciesSection.d.ts +0 -1
- package/dist/src/components/steps/confirmation/StepConfirmationPolicyBlock.d.ts +0 -1
- package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffers.d.ts +0 -1
- package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.d.ts +0 -1
- package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersModal.d.ts +0 -1
- package/dist/src/components/steps/date/PeoplePicker.d.ts +0 -1
- package/dist/src/components/steps/date/PeoplePickerRow.d.ts +0 -1
- package/dist/src/components/steps/date/StepDatePricePerRoom.d.ts +0 -1
- package/dist/src/components/steps/date/StepOneDateRange.d.ts +0 -1
- package/dist/src/components/steps/date/StepOneDateRangePicker.d.ts +0 -1
- package/dist/src/components/steps/date/StepOneDateRangePickerLegend.d.ts +0 -1
- package/dist/src/components/steps/date/StepOneNextStepButton.d.ts +0 -1
- package/dist/src/components/steps/date/StepOneStatusPeople.d.ts +0 -1
- package/dist/src/components/steps/hotel/HotelCard.d.ts +0 -1
- package/dist/src/components/steps/hotel/HotelCardList.d.ts +0 -1
- package/dist/src/components/steps/hotel/HotelSearchParameters.d.ts +0 -1
- package/dist/src/components/steps/hotel/NoHotelsAvailable.d.ts +0 -1
- package/dist/src/components/steps/room/AvailableUpgradesModal.d.ts +0 -1
- package/dist/src/components/steps/room/ImageGallerySlider.d.ts +0 -1
- package/dist/src/components/steps/room/InactivityWindow.d.ts +0 -1
- package/dist/src/components/steps/room/LargeRoomCard.d.ts +0 -1
- package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.d.ts +0 -1
- package/dist/src/components/steps/room/{RoomNotFound.d.ts → NoRoomsFoundBlock.d.ts} +0 -1
- package/dist/src/components/steps/room/{RoomNotFound.js → NoRoomsFoundBlock.js} +2 -2
- package/dist/src/components/steps/room/NoRoomsFoundBlock.js.map +1 -0
- package/dist/src/components/steps/room/RatesNotFound.d.ts +0 -1
- package/dist/src/components/steps/room/RoomList.d.ts +0 -1
- package/dist/src/components/steps/room/RoomList.js +17 -4
- package/dist/src/components/steps/room/RoomList.js.map +1 -1
- package/dist/src/components/steps/room/RoomListCrossSellBlock.d.ts +0 -1
- package/dist/src/components/steps/room/RoomModal.d.ts +0 -1
- package/dist/src/components/steps/room/StepRoomAlertBlocks.d.ts +0 -1
- package/dist/src/components/steps/room/StepRoomBestRateAlert.d.ts +0 -1
- package/dist/src/components/steps/room/StepRoomErrorForm.d.ts +1 -0
- package/dist/src/components/steps/room/StepRoomErrorForm.js +114 -0
- package/dist/src/components/steps/room/StepRoomErrorForm.js.map +1 -0
- package/dist/src/components/steps/room/StepRoomHotelDetails.d.ts +0 -1
- package/dist/src/components/steps/room/StepRoomNextStepButton.d.ts +0 -1
- package/dist/src/components/steps/room/StepRoomSortBy.d.ts +0 -1
- package/dist/src/components/steps/room/StepRoomSummaryAndButton.d.ts +0 -1
- package/dist/src/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker.d.ts +0 -1
- package/dist/src/components/steps/room/roomBuilderProgress/NumberOfChildrenPicker.d.ts +0 -1
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.d.ts +0 -1
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.d.ts +0 -1
- package/dist/src/components/steps/room/roomDetails/RoomDetails.d.ts +0 -1
- package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.d.ts +0 -1
- package/dist/src/components/steps/room/roomDetails/RoomDetailsPerkBlock.d.ts +0 -1
- package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.d.ts +0 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/BookNowButton.d.ts +0 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/MembersOnlyRow.d.ts +0 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.d.ts +0 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.d.ts +0 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal.d.ts +0 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.d.ts +0 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.d.ts +0 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js +3 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.d.ts +0 -1
- package/dist/src/components/steps/room/roomFilter/AppliedFiltersBlock.d.ts +0 -1
- package/dist/src/components/steps/room/roomFilter/RoomFilterOverlay.d.ts +0 -1
- package/dist/src/components/steps/room/roomFilter/RoomFilterPriceSlider.d.ts +0 -1
- package/dist/src/components/steps/room/roomFilter/RoomFilterRateType.d.ts +0 -1
- package/dist/src/components/steps/room/roomFilter/RoomFilterRoomType.d.ts +0 -1
- package/dist/src/components/summary/BEMobileSummary.d.ts +0 -1
- package/dist/src/components/summary/BEMobileSummaryModal.d.ts +0 -1
- package/dist/src/components/summary/BESummary.d.ts +0 -1
- package/dist/src/components/summary/BESummaryAddonRow.d.ts +0 -1
- package/dist/src/components/summary/BESummaryPerkBlock.d.ts +0 -1
- package/dist/src/components/summary/BESummaryPrivacyPolicy.d.ts +0 -1
- package/dist/src/components/summary/BESummaryRoomRow.d.ts +0 -1
- package/dist/src/components/summary/TransportDistanceFromHotelBlock.d.ts +0 -1
- package/dist/src/engines/BaseEngine.d.ts +7 -1
- package/dist/src/engines/BaseEngine.js +10 -1
- package/dist/src/engines/BaseEngine.js.map +1 -1
- package/dist/src/engines/FullPageBookingEngine/FullPageBookingEngine.js +1 -1
- package/dist/src/engines/FullPageBookingEngine/FullPageBookingEngine.js.map +1 -1
- package/dist/src/engines/FullPageBookingEngine/FullPageBookingEngineElement.d.ts +0 -1
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngine.js +1 -1
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngine.js.map +1 -1
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.d.ts +0 -1
- package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngine.js +1 -1
- package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngine.js.map +1 -1
- package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.d.ts +0 -1
- package/dist/src/icons/Check.d.ts +0 -1
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.js +4 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/pages/findReservation/FindReservation.d.ts +0 -1
- package/dist/src/pages/findReservation/FindReservationResults.d.ts +0 -1
- package/dist/src/pages/findReservation/ReservationRow.d.ts +0 -1
- package/dist/src/pages/findReservation/ReservationRowModal.d.ts +0 -1
- package/dist/src/pages/hotel/HotelInfo.d.ts +0 -1
- package/dist/src/pages/hotel/HotelInfoPlaceholder.d.ts +0 -1
- package/dist/src/pages/steps/StepAddon/StepAddonComponent.d.ts +0 -1
- package/dist/src/pages/steps/StepAddon/StepAddonLoader.d.ts +0 -1
- package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.d.ts +0 -1
- package/dist/src/pages/steps/StepConfirmation/StepConfirmationLoader.d.ts +0 -1
- package/dist/src/pages/steps/StepDate/StepDate.d.ts +1 -2
- package/dist/src/pages/steps/StepDate/StepDateComponent.d.ts +1 -2
- package/dist/src/pages/steps/StepHotel/StepHotelComponent.d.ts +0 -1
- package/dist/src/pages/steps/StepHotel/StepHotelLoader.d.ts +0 -1
- package/dist/src/pages/steps/StepRoom/StepRoomComponent.d.ts +0 -1
- package/dist/src/pages/steps/StepRoom/StepRoomLoader.d.ts +0 -1
- package/dist/src/pages/steps/StepThanks/StepThanksComponent.d.ts +0 -1
- package/dist/src/providers/DIProvider.d.ts +0 -1
- package/dist/src/routes/NaturallyProgressedStepRoute.d.ts +0 -1
- package/dist/src/translations/Translation.d.ts +12 -0
- package/dist/src/translations/Translation.js +12 -0
- package/dist/src/translations/Translation.js.map +1 -1
- package/dist/src/translations/languages/en-gb.js +12 -0
- package/dist/src/translations/languages/en-gb.js.map +1 -1
- package/dist/test.bundle.js +1 -0
- package/dist/tests/offline/RoomstayBestRateAlert.d.ts +0 -1
- package/dist/tests/offline/entry/ReactWrapper.d.ts +0 -1
- package/dist/tests/offline/entry/components/TestPicker.d.ts +0 -1
- package/dist/vendors.bundle.js +2 -0
- package/dist/vendors.bundle.js.LICENSE.txt +81 -0
- package/package.json +2 -2
- package/dist/src/components/steps/room/RoomNotFound.js.map +0 -1
|
@@ -15,11 +15,10 @@ const BaseAPI_1 = require("./BaseAPI");
|
|
|
15
15
|
const RoomRate_1 = require("../models/Room/RoomRate");
|
|
16
16
|
const RoomRateNight_1 = require("../models/Room/RoomRateNight");
|
|
17
17
|
const RoomstayThemeEngine_1 = require("../providers/RoomstayThemeEngine");
|
|
18
|
-
const NotificationContext_1 = require("../contexts/NotificationContext");
|
|
19
|
-
const Icon_1 = require("../components/generic/Icon");
|
|
20
18
|
const BasketContextErrorHandler_1 = require("../handlers/BasketContextErrorHandler");
|
|
21
19
|
const NoHotelSelectedError_1 = require("../errors/NoHotelSelectedError");
|
|
22
20
|
const GetAvailabilityError_1 = require("../errors/GetAvailabilityError");
|
|
21
|
+
const RoomstayError_1 = require("errors/RoomstayError");
|
|
23
22
|
class AvailabilityAPI extends BaseAPI_1.default {
|
|
24
23
|
constructor() {
|
|
25
24
|
super();
|
|
@@ -237,111 +236,107 @@ class AvailabilityAPI extends BaseAPI_1.default {
|
|
|
237
236
|
else {
|
|
238
237
|
this.fetchDataPromise[id] = new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
239
238
|
var _d;
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
}
|
|
259
|
-
if (json.cancelPolicies) {
|
|
260
|
-
Object.keys(json.cancelPolicies).map((code) => {
|
|
261
|
-
AvailabilityAPI.policyMappings.cancel[code] = json.cancelPolicies[code];
|
|
262
|
-
});
|
|
263
|
-
}
|
|
264
|
-
if (json.roomTypes) {
|
|
265
|
-
const allRoomsByKey = Object.keys(json.roomTypes);
|
|
266
|
-
if (allRoomsByKey.length) {
|
|
267
|
-
this.roomTypesData = dateToObject(json.roomTypes);
|
|
268
|
-
allRoomsByKey.forEach((roomCode) => {
|
|
269
|
-
this.roomTypesData[roomCode].code = roomCode;
|
|
270
|
-
this.rooms[roomCode] = Room_1.Room.fromData(this.roomTypesData[roomCode]);
|
|
239
|
+
try {
|
|
240
|
+
const json = yield this.get(BaseAPI_1.APIEndpoint.Availability, {
|
|
241
|
+
checkInDate: fromDate,
|
|
242
|
+
checkOutDate: toDate,
|
|
243
|
+
adults,
|
|
244
|
+
children,
|
|
245
|
+
promoCode,
|
|
246
|
+
promoOnly,
|
|
247
|
+
}, '', hotelId);
|
|
248
|
+
this.fetchDataPromise[id] = null;
|
|
249
|
+
const dateToObject = (data) => {
|
|
250
|
+
data.validUntil = dayjs(data.validUntil);
|
|
251
|
+
data.cachedSince = dayjs(data.cachedSince);
|
|
252
|
+
return data;
|
|
253
|
+
};
|
|
254
|
+
if (json.guaranteePolicies) {
|
|
255
|
+
Object.keys(json.guaranteePolicies).map((code) => {
|
|
256
|
+
AvailabilityAPI.policyMappings.guarantee[code] = json.guaranteePolicies[code];
|
|
271
257
|
});
|
|
272
258
|
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
if (allRatesByKey.length) {
|
|
277
|
-
this.ratePlansData = dateToObject(json.ratePlans);
|
|
278
|
-
allRatesByKey.forEach((rateCode) => {
|
|
279
|
-
this.ratePlansData[rateCode].code = rateCode;
|
|
280
|
-
this.rates[rateCode] = RoomRate_1.RoomRate.fromData(this.ratePlansData[rateCode]);
|
|
259
|
+
if (json.cancelPolicies) {
|
|
260
|
+
Object.keys(json.cancelPolicies).map((code) => {
|
|
261
|
+
AvailabilityAPI.policyMappings.cancel[code] = json.cancelPolicies[code];
|
|
281
262
|
});
|
|
282
263
|
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
264
|
+
if (json.roomTypes) {
|
|
265
|
+
const allRoomsByKey = Object.keys(json.roomTypes);
|
|
266
|
+
if (allRoomsByKey.length) {
|
|
267
|
+
this.roomTypesData = dateToObject(json.roomTypes);
|
|
268
|
+
allRoomsByKey.forEach((roomCode) => {
|
|
269
|
+
this.roomTypesData[roomCode].code = roomCode;
|
|
270
|
+
this.rooms[roomCode] = Room_1.Room.fromData(this.roomTypesData[roomCode]);
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
if (json.ratePlans) {
|
|
275
|
+
const allRatesByKey = Object.keys(json.ratePlans);
|
|
276
|
+
if (allRatesByKey.length) {
|
|
277
|
+
this.ratePlansData = dateToObject(json.ratePlans);
|
|
278
|
+
allRatesByKey.forEach((rateCode) => {
|
|
279
|
+
this.ratePlansData[rateCode].code = rateCode;
|
|
280
|
+
this.rates[rateCode] = RoomRate_1.RoomRate.fromData(this.ratePlansData[rateCode]);
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
if (json.roomNights) {
|
|
285
|
+
const roomNights = json.roomNights;
|
|
286
|
+
const rooms = {};
|
|
287
|
+
const allNightsByKey = Object.keys(roomNights);
|
|
288
|
+
let first = true;
|
|
289
|
+
if (allNightsByKey.length) {
|
|
290
|
+
allNightsByKey.forEach((date) => {
|
|
291
|
+
const day = dayjs(date);
|
|
292
|
+
Object.keys(roomNights[date]).forEach((roomCode) => {
|
|
300
293
|
if (first) {
|
|
301
|
-
const
|
|
302
|
-
|
|
303
|
-
rooms[roomCode]
|
|
304
|
-
}
|
|
305
|
-
if (oneNightStay && Object.keys(rooms[roomCode].getRate(rateKey).nightRates).length) {
|
|
306
|
-
return;
|
|
294
|
+
const room = Room_1.Room.fromData(this.roomTypesData[roomCode]);
|
|
295
|
+
room.code = roomCode;
|
|
296
|
+
rooms[roomCode] = room;
|
|
307
297
|
}
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
298
|
+
Object.keys(roomNights[date][roomCode].rates).forEach((rateKey) => {
|
|
299
|
+
const nightData = roomNights[date][roomCode].rates[rateKey];
|
|
300
|
+
if (first) {
|
|
301
|
+
const rate = RoomRate_1.RoomRate.fromData(this.ratePlansData[rateKey]);
|
|
302
|
+
rate.code = rateKey;
|
|
303
|
+
rooms[roomCode].addRate(rate);
|
|
304
|
+
}
|
|
305
|
+
if (oneNightStay && Object.keys(rooms[roomCode].getRate(rateKey).nightRates).length) {
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
const rateNight = new RoomRateNight_1.default();
|
|
309
|
+
rateNight.available = roomNights[date][roomCode].available;
|
|
310
|
+
rateNight.cost = nightData.cost;
|
|
311
|
+
rateNight.discount = nightData.discount;
|
|
312
|
+
rateNight.total = nightData.total;
|
|
313
|
+
rateNight.tax = nightData.tax;
|
|
314
|
+
rateNight.fee = nightData.fee;
|
|
315
|
+
rateNight.date = day;
|
|
316
|
+
rooms[roomCode].getRate(rateKey).nightRates[date] = rateNight;
|
|
317
|
+
});
|
|
317
318
|
});
|
|
319
|
+
first = false;
|
|
318
320
|
});
|
|
319
|
-
|
|
320
|
-
|
|
321
|
+
}
|
|
322
|
+
const roomArray = Object.values(rooms);
|
|
323
|
+
this.cachedAvailability[id] = roomArray;
|
|
324
|
+
resolve(roomArray);
|
|
325
|
+
}
|
|
326
|
+
if ((_d = json.warnings) === null || _d === void 0 ? void 0 : _d.length) {
|
|
327
|
+
this.availabilityWarnings[id] = json.warnings;
|
|
328
|
+
BasketContextErrorHandler_1.BasketContextErrorHandler.handleAvailabilityWarnings(json.warnings);
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
BasketContextErrorHandler_1.BasketContextErrorHandler.handlePromoSuccess(promoCode);
|
|
321
332
|
}
|
|
322
|
-
|
|
323
|
-
this.cachedAvailability[id] = roomArray;
|
|
324
|
-
resolve(roomArray);
|
|
333
|
+
resolve([]);
|
|
325
334
|
}
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
BasketContextErrorHandler_1.BasketContextErrorHandler.handleAvailabilityWarnings(json.warnings);
|
|
335
|
+
catch (ex) {
|
|
336
|
+
reject();
|
|
329
337
|
}
|
|
330
|
-
else {
|
|
331
|
-
BasketContextErrorHandler_1.BasketContextErrorHandler.handlePromoSuccess(promoCode);
|
|
332
|
-
}
|
|
333
|
-
resolve([]);
|
|
334
338
|
})).catch((reason) => {
|
|
335
|
-
|
|
336
|
-
// Don't parse warnings when we're making a cross-hotel availability request
|
|
337
|
-
if (!isCrossSell) {
|
|
338
|
-
NotificationContext_1.NotificationHandler.add({
|
|
339
|
-
ttl: 3000,
|
|
340
|
-
icon: Icon_1.IconType.Error,
|
|
341
|
-
children: (_a = reason === null || reason === void 0 ? void 0 : reason.Message) !== null && _a !== void 0 ? _a : 'Room request failed',
|
|
342
|
-
});
|
|
343
|
-
}
|
|
344
|
-
return [];
|
|
339
|
+
throw new RoomstayError_1.RoomstayError('Failed to load calendar availability');
|
|
345
340
|
});
|
|
346
341
|
return this.fetchDataPromise[id];
|
|
347
342
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AvailabilityAPI.js","sourceRoot":"/","sources":["src/api/AvailabilityAPI.ts"],"names":[],"mappings":"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","sourcesContent":["import * as dayjs from 'dayjs';\nimport { Room } from '../models/Room/Room';\nimport BaseAPI, { API_DATE_FORMAT, APIEndpoint } from './BaseAPI';\nimport { RoomRate } from '../models/Room/RoomRate';\nimport BasketRow from '../models/BasketRow';\nimport RoomRateNight from '../models/Room/RoomRateNight';\nimport RoomstayThemeEngine from '../providers/RoomstayThemeEngine';\nimport { NotificationHandler } from '../contexts/NotificationContext';\nimport { IconType } from '../components/generic/Icon';\nimport { BasketContextErrorHandler } from '../handlers/BasketContextErrorHandler';\nimport { NoHotelSelectedError } from '../errors/NoHotelSelectedError';\nimport GetAvailabilityError from '../errors/GetAvailabilityError';\n\nexport default class AvailabilityAPI extends BaseAPI {\n private roomTypesData: any = null;\n private ratePlansData: any = null;\n\n private cachedMinNightStay: { [id: string]: any } = {};\n private cachedAvailability: { [id: string]: Room[] };\n private calendar: { [id: string]: { range: { min: number; max: number }; prices: { [date: string]: number } } } = {};\n private crossSellHotelInfo: { [hotelId: string]: any } = {};\n\n private calendarWarnings: { [id: string]: string[] } = {};\n private availabilityWarnings: { [id: string]: string[] } = {};\n\n private rooms: { [code: string]: Room };\n private rates: { [code: string]: RoomRate };\n\n private fetchDataPromise: { [dateRange: string]: Promise<Room[]> } = {};\n\n private calendarPromises: { [id: string]: Promise<Response> } = {};\n\n private cachedMidNightStayPromises: { [id: string]: Promise<any> } = {};\n\n public static policyMappings: { guarantee: { [name: string]: string }; cancel: { [name: string]: string } } = { guarantee: {}, cancel: {} };\n\n public static maxNightPrice = 0;\n public static minNightPrice: number = null;\n\n public constructor() {\n super();\n\n this.rooms = {};\n this.rates = {};\n\n this.cachedAvailability = {};\n }\n\n public getCrossSellHotelInfo(hotelId: number | string) {\n return this.crossSellHotelInfo[String(hotelId)] ?? {};\n }\n\n public getCheapestPricePerDay = async (\n fromDate: dayjs.Dayjs,\n toDate: dayjs.Dayjs,\n adults: number,\n children: number,\n promoCode: string,\n hotelId: string,\n isCrossSell = false\n ): Promise<{ [date: string]: number }> => {\n let dayPricingData = null;\n if (fromDate === undefined) {\n return {};\n }\n\n try {\n dayPricingData = await this.fetchCalendar(fromDate, adults, children, promoCode, hotelId, undefined, isCrossSell);\n } catch (ex) {\n if (!(ex instanceof GetAvailabilityError)) {\n throw ex;\n } else {\n return {};\n }\n }\n\n if (!dayPricingData) {\n return {};\n }\n\n const daysBetween = toDate.diff(fromDate, 'day');\n const prices: any = {};\n\n for (let i = 0; i <= daysBetween; i++) {\n const currentDay = fromDate.add(i, 'day');\n prices[currentDay.format(API_DATE_FORMAT)] = dayPricingData[currentDay.format(API_DATE_FORMAT)];\n }\n\n return prices;\n };\n\n public getCheapestPriceForDay = async (day: dayjs.Dayjs, adults: number, children: number, promoCode: string, hotelID: string, parseErrors = true): Promise<any> => {\n if (day.isBefore(dayjs(), 'date')) return false;\n\n let dataForQuery = null;\n try {\n dataForQuery = await this.fetchCalendar(day, adults, children, promoCode, hotelID, parseErrors);\n } catch (ex) {\n console.log(ex);\n }\n\n if (!dataForQuery) {\n return false;\n }\n\n const priceForDay = dataForQuery[day.format(API_DATE_FORMAT)];\n\n return {\n price: priceForDay,\n perCent: 0,\n };\n };\n\n private getQueryID = (params: any[]) => {\n return params.map((param) => (param && param.format ? param.format(API_DATE_FORMAT) : param)).join('-');\n };\n\n public fetchCalendar = async (\n month: dayjs.Dayjs,\n adults: number,\n children: number,\n promoCode: string,\n hotelId: string,\n parseErrors = true,\n isCrossSell = false\n ): Promise<any> => {\n month = month ?? dayjs();\n\n let fromMonth = month.startOf('month');\n fromMonth = Number(fromMonth.format('M')) % 2 === 0 ? fromMonth.subtract(1, 'month') : (fromMonth = month);\n\n fromMonth = fromMonth.startOf('month');\n\n const now = dayjs();\n if (fromMonth.isBefore(now, 'date')) {\n fromMonth = now;\n }\n\n const toMonth = fromMonth.add(1, 'month').endOf('month');\n\n const fromDatePretty = fromMonth.format(API_DATE_FORMAT);\n const toDatePretty = toMonth.format(API_DATE_FORMAT);\n\n const targetHotel = hotelId;\n\n if (!targetHotel) {\n return null;\n }\n\n const id = this.getQueryID([targetHotel, fromDatePretty, toDatePretty, adults, children, promoCode, isCrossSell]);\n\n // Don't parse warnings when we're making a cross-hotel availability request\n if (this.calendar[id] && parseErrors) {\n if (this.calendarWarnings[id]) {\n BasketContextErrorHandler.handleAvailabilityWarnings(this.calendarWarnings[id]);\n } else {\n BasketContextErrorHandler.handlePromoSuccess(promoCode);\n }\n\n return this.calendar[id];\n }\n\n if (this.calendarPromises[id]) {\n return this.calendarPromises[id];\n }\n\n this.calendarPromises[id] = new Promise(async (resolve, reject) => {\n let response;\n\n response = await fetch(\n `${this.getApiPath()}availability/calendar/${targetHotel}?checkInDate=${fromDatePretty}&checkOutDate=${toDatePretty}&adults=${adults}&children=${children}&promoCode=${promoCode}&includeHotelInfo=${\n isCrossSell ? 0 : 1\n }`,\n {\n credentials: 'omit',\n }\n );\n\n if (response.ok) {\n const json = await response.json();\n\n // Don't parse warnings when we're making a cross-hotel availability request\n if (json.warnings && json.warnings.length) {\n BasketContextErrorHandler.handleAvailabilityWarnings(json.warnings);\n this.calendarWarnings[id] = json.warnings;\n } else {\n BasketContextErrorHandler.handlePromoSuccess(promoCode);\n }\n\n Object.values(json.prices).forEach((price: any) => {\n if (!AvailabilityAPI.minNightPrice || Number(price) < AvailabilityAPI.minNightPrice) {\n AvailabilityAPI.minNightPrice = Number(price);\n }\n\n if (AvailabilityAPI.maxNightPrice < Number(price)) {\n AvailabilityAPI.maxNightPrice = Number(price);\n }\n });\n\n if (hotelId) {\n this.crossSellHotelInfo[String(hotelId)] = json.hotel;\n }\n\n resolve((this.calendar[id] = json.prices));\n } else {\n reject(new GetAvailabilityError(fromMonth, toMonth));\n }\n });\n\n return this.calendarPromises[id];\n };\n\n public invalidateAvailability = async (basketRow: BasketRow, hotelId: string) => {\n const today = dayjs();\n\n const adults = basketRow.getAdults();\n const children = basketRow.getChildren();\n const promoCode = basketRow.getPromoCode();\n\n let toDate = basketRow.getEndDate();\n const fromDate = basketRow.getStartDate()?.isBefore(today, 'day') ? today : basketRow.getStartDate();\n\n let oneNightStay = false;\n if (fromDate.isSameOrAfter(toDate, 'date')) {\n oneNightStay = true;\n toDate = fromDate.add(1, 'day');\n }\n\n const id = this.getQueryID([hotelId, fromDate, toDate, adults, children, promoCode, RoomstayThemeEngine.selectedLang, oneNightStay]);\n delete this.cachedAvailability[id];\n };\n\n public fetchMinNightStayData = async (basketRow: BasketRow, hotelID: string) => {\n // TODO: refactor this breakdown.\n\n if (!basketRow) {\n return;\n }\n\n if (!hotelID) {\n throw new NoHotelSelectedError();\n }\n\n const today = dayjs();\n\n const adults = basketRow.getAdults();\n const children = basketRow.getChildren();\n const promoCode = basketRow.getPromoCode();\n\n let toDate = basketRow.getEndDate();\n const fromDate = basketRow.getStartDate()?.isBefore(today, 'day') ? today : basketRow.getStartDate();\n\n let oneNightStay = false;\n if (fromDate.isSameOrAfter(toDate, 'date')) {\n oneNightStay = true;\n toDate = fromDate.add(1, 'day');\n }\n\n const id = this.getQueryID([hotelID, fromDate, toDate, adults, children, promoCode, RoomstayThemeEngine.selectedLang, oneNightStay]);\n\n if (this.cachedMinNightStay[id]) {\n return this.cachedMinNightStay[id];\n }\n\n if (this.cachedMidNightStayPromises[id]) {\n return this.cachedMidNightStayPromises[id];\n }\n\n this.cachedMidNightStayPromises[id] = new Promise(async (resolve) => {\n const json = await this.get(\n APIEndpoint.MinNightStay,\n {\n checkInDate: fromDate,\n checkOutDate: toDate,\n\n adults,\n children,\n promoCode,\n },\n '',\n hotelID\n );\n\n delete this.cachedMidNightStayPromises[id];\n this.cachedMinNightStay[id] = json;\n\n resolve(this.cachedMinNightStay[id]);\n });\n\n return this.cachedMidNightStayPromises[id];\n };\n\n public fetchAvailabilityData = async (basketRow: BasketRow, hotelId: string, isCrossSell = false) => {\n const today = dayjs();\n\n if (!basketRow) {\n return;\n }\n\n const adults = basketRow.getAdults();\n const children = basketRow.getChildren();\n const promoCode = basketRow.getPromoCode();\n const promoOnly = basketRow.getPromoOnly();\n\n let toDate = basketRow.getEndDate();\n const fromDate = basketRow.getStartDate()?.isBefore(today, 'day') ? today : basketRow.getStartDate();\n\n let oneNightStay = false;\n if (fromDate.isSameOrAfter(toDate, 'date')) {\n oneNightStay = true;\n toDate = fromDate.add(1, 'day');\n }\n\n const id = this.getQueryID([hotelId, fromDate, toDate, adults, children, promoCode, RoomstayThemeEngine.selectedLang, oneNightStay]);\n\n // Don't parse warnings when we're making a cross-hotel availability request\n if (this.cachedAvailability[id]) {\n if (this.availabilityWarnings[id]) {\n BasketContextErrorHandler.handleAvailabilityWarnings(this.availabilityWarnings[id]);\n } else {\n BasketContextErrorHandler.handlePromoSuccess(promoCode);\n }\n\n return this.cachedAvailability[id];\n }\n\n if (this.fetchDataPromise[id]) {\n return this.fetchDataPromise[id];\n } else {\n this.fetchDataPromise[id] = new Promise<Room[]>(async (resolve, reject) => {\n const json = await this.get(\n APIEndpoint.Availability,\n {\n checkInDate: fromDate,\n checkOutDate: toDate,\n\n adults,\n children,\n promoCode,\n promoOnly,\n },\n '',\n hotelId\n );\n\n this.fetchDataPromise[id] = null;\n\n const dateToObject = (data: any) => {\n data.validUntil = dayjs(data.validUntil);\n data.cachedSince = dayjs(data.cachedSince);\n\n return data;\n };\n\n if (json.guaranteePolicies) {\n Object.keys(json.guaranteePolicies).map((code) => {\n AvailabilityAPI.policyMappings.guarantee[code] = json.guaranteePolicies[code];\n });\n }\n\n if (json.cancelPolicies) {\n Object.keys(json.cancelPolicies).map((code) => {\n AvailabilityAPI.policyMappings.cancel[code] = json.cancelPolicies[code];\n });\n }\n\n if (json.roomTypes) {\n const allRoomsByKey = Object.keys(json.roomTypes);\n if (allRoomsByKey.length) {\n this.roomTypesData = dateToObject(json.roomTypes);\n\n allRoomsByKey.forEach((roomCode: any) => {\n this.roomTypesData[roomCode].code = roomCode;\n this.rooms[roomCode] = Room.fromData(this.roomTypesData[roomCode]);\n });\n }\n }\n\n if (json.ratePlans) {\n const allRatesByKey = Object.keys(json.ratePlans);\n if (allRatesByKey.length) {\n this.ratePlansData = dateToObject(json.ratePlans);\n\n allRatesByKey.forEach((rateCode: any) => {\n this.ratePlansData[rateCode].code = rateCode;\n\n this.rates[rateCode] = RoomRate.fromData(this.ratePlansData[rateCode]);\n });\n }\n }\n\n if (json.roomNights) {\n const roomNights = json.roomNights;\n\n const rooms: { [rate: string]: Room } = {};\n\n const allNightsByKey = Object.keys(roomNights);\n\n let first = true;\n if (allNightsByKey.length) {\n allNightsByKey.forEach((date: string) => {\n const day = dayjs(date);\n Object.keys(roomNights[date]).forEach((roomCode: string) => {\n if (first) {\n const room = Room.fromData(this.roomTypesData[roomCode]);\n room.code = roomCode;\n rooms[roomCode] = room;\n }\n\n Object.keys(roomNights[date][roomCode].rates).forEach((rateKey) => {\n const nightData = roomNights[date][roomCode].rates[rateKey];\n\n if (first) {\n const rate = RoomRate.fromData(this.ratePlansData[rateKey]);\n rate.code = rateKey;\n rooms[roomCode].addRate(rate);\n }\n\n if (oneNightStay && Object.keys(rooms[roomCode].getRate(rateKey).nightRates).length) {\n return;\n }\n\n const rateNight = new RoomRateNight();\n rateNight.available = roomNights[date][roomCode].available;\n rateNight.cost = nightData.cost;\n rateNight.discount = nightData.discount;\n rateNight.total = nightData.total;\n rateNight.tax = nightData.tax;\n rateNight.fee = nightData.fee;\n rateNight.date = day;\n\n rooms[roomCode].getRate(rateKey).nightRates[date] = rateNight;\n });\n });\n\n first = false;\n });\n }\n\n const roomArray = Object.values(rooms);\n\n this.cachedAvailability[id] = roomArray;\n resolve(roomArray);\n }\n\n if (json.warnings?.length) {\n this.availabilityWarnings[id] = json.warnings;\n BasketContextErrorHandler.handleAvailabilityWarnings(json.warnings);\n } else {\n BasketContextErrorHandler.handlePromoSuccess(promoCode);\n }\n\n resolve([]);\n }).catch((reason) => {\n // Don't parse warnings when we're making a cross-hotel availability request\n if (!isCrossSell) {\n NotificationHandler.add({\n ttl: 3000,\n icon: IconType.Error,\n children: reason?.Message ?? 'Room request failed',\n });\n }\n return [];\n });\n\n return this.fetchDataPromise[id];\n }\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"AvailabilityAPI.js","sourceRoot":"/","sources":["src/api/AvailabilityAPI.ts"],"names":[],"mappings":"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","sourcesContent":["import * as dayjs from 'dayjs';\nimport { Room } from '../models/Room/Room';\nimport BaseAPI, { API_DATE_FORMAT, APIEndpoint } from './BaseAPI';\nimport { RoomRate } from '../models/Room/RoomRate';\nimport BasketRow from '../models/BasketRow';\nimport RoomRateNight from '../models/Room/RoomRateNight';\nimport RoomstayThemeEngine from '../providers/RoomstayThemeEngine';\nimport { NotificationHandler } from '../contexts/NotificationContext';\nimport { IconType } from '../components/generic/Icon';\nimport { BasketContextErrorHandler } from '../handlers/BasketContextErrorHandler';\nimport { NoHotelSelectedError } from '../errors/NoHotelSelectedError';\nimport GetAvailabilityError from '../errors/GetAvailabilityError';\nimport { RoomstayError } from 'errors/RoomstayError';\n\nexport default class AvailabilityAPI extends BaseAPI {\n private roomTypesData: any = null;\n private ratePlansData: any = null;\n\n private cachedMinNightStay: { [id: string]: any } = {};\n private cachedAvailability: { [id: string]: Room[] };\n private calendar: { [id: string]: { range: { min: number; max: number }; prices: { [date: string]: number } } } = {};\n private crossSellHotelInfo: { [hotelId: string]: any } = {};\n\n private calendarWarnings: { [id: string]: string[] } = {};\n private availabilityWarnings: { [id: string]: string[] } = {};\n\n private rooms: { [code: string]: Room };\n private rates: { [code: string]: RoomRate };\n\n private fetchDataPromise: { [dateRange: string]: Promise<Room[]> } = {};\n\n private calendarPromises: { [id: string]: Promise<Response> } = {};\n\n private cachedMidNightStayPromises: { [id: string]: Promise<any> } = {};\n\n public static policyMappings: { guarantee: { [name: string]: string }; cancel: { [name: string]: string } } = { guarantee: {}, cancel: {} };\n\n public static maxNightPrice = 0;\n public static minNightPrice: number = null;\n\n public constructor() {\n super();\n\n this.rooms = {};\n this.rates = {};\n\n this.cachedAvailability = {};\n }\n\n public getCrossSellHotelInfo(hotelId: number | string) {\n return this.crossSellHotelInfo[String(hotelId)] ?? {};\n }\n\n public getCheapestPricePerDay = async (\n fromDate: dayjs.Dayjs,\n toDate: dayjs.Dayjs,\n adults: number,\n children: number,\n promoCode: string,\n hotelId: string,\n isCrossSell = false\n ): Promise<{ [date: string]: number }> => {\n let dayPricingData = null;\n if (fromDate === undefined) {\n return {};\n }\n\n try {\n dayPricingData = await this.fetchCalendar(fromDate, adults, children, promoCode, hotelId, undefined, isCrossSell);\n } catch (ex) {\n if (!(ex instanceof GetAvailabilityError)) {\n throw ex;\n } else {\n return {};\n }\n }\n\n if (!dayPricingData) {\n return {};\n }\n\n const daysBetween = toDate.diff(fromDate, 'day');\n const prices: any = {};\n\n for (let i = 0; i <= daysBetween; i++) {\n const currentDay = fromDate.add(i, 'day');\n prices[currentDay.format(API_DATE_FORMAT)] = dayPricingData[currentDay.format(API_DATE_FORMAT)];\n }\n\n return prices;\n };\n\n public getCheapestPriceForDay = async (day: dayjs.Dayjs, adults: number, children: number, promoCode: string, hotelID: string, parseErrors = true): Promise<any> => {\n if (day.isBefore(dayjs(), 'date')) return false;\n\n let dataForQuery = null;\n try {\n dataForQuery = await this.fetchCalendar(day, adults, children, promoCode, hotelID, parseErrors);\n } catch (ex) {\n console.log(ex);\n }\n\n if (!dataForQuery) {\n return false;\n }\n\n const priceForDay = dataForQuery[day.format(API_DATE_FORMAT)];\n\n return {\n price: priceForDay,\n perCent: 0,\n };\n };\n\n private getQueryID = (params: any[]) => {\n return params.map((param) => (param && param.format ? param.format(API_DATE_FORMAT) : param)).join('-');\n };\n\n public fetchCalendar = async (\n month: dayjs.Dayjs,\n adults: number,\n children: number,\n promoCode: string,\n hotelId: string,\n parseErrors = true,\n isCrossSell = false\n ): Promise<any> => {\n month = month ?? dayjs();\n\n let fromMonth = month.startOf('month');\n fromMonth = Number(fromMonth.format('M')) % 2 === 0 ? fromMonth.subtract(1, 'month') : (fromMonth = month);\n\n fromMonth = fromMonth.startOf('month');\n\n const now = dayjs();\n if (fromMonth.isBefore(now, 'date')) {\n fromMonth = now;\n }\n\n const toMonth = fromMonth.add(1, 'month').endOf('month');\n\n const fromDatePretty = fromMonth.format(API_DATE_FORMAT);\n const toDatePretty = toMonth.format(API_DATE_FORMAT);\n\n const targetHotel = hotelId;\n\n if (!targetHotel) {\n return null;\n }\n\n const id = this.getQueryID([targetHotel, fromDatePretty, toDatePretty, adults, children, promoCode, isCrossSell]);\n\n // Don't parse warnings when we're making a cross-hotel availability request\n if (this.calendar[id] && parseErrors) {\n if (this.calendarWarnings[id]) {\n BasketContextErrorHandler.handleAvailabilityWarnings(this.calendarWarnings[id]);\n } else {\n BasketContextErrorHandler.handlePromoSuccess(promoCode);\n }\n\n return this.calendar[id];\n }\n\n if (this.calendarPromises[id]) {\n return this.calendarPromises[id];\n }\n\n this.calendarPromises[id] = new Promise(async (resolve, reject) => {\n let response;\n\n response = await fetch(\n `${this.getApiPath()}availability/calendar/${targetHotel}?checkInDate=${fromDatePretty}&checkOutDate=${toDatePretty}&adults=${adults}&children=${children}&promoCode=${promoCode}&includeHotelInfo=${\n isCrossSell ? 0 : 1\n }`,\n {\n credentials: 'omit',\n }\n );\n\n if (response.ok) {\n const json = await response.json();\n\n // Don't parse warnings when we're making a cross-hotel availability request\n if (json.warnings && json.warnings.length) {\n BasketContextErrorHandler.handleAvailabilityWarnings(json.warnings);\n this.calendarWarnings[id] = json.warnings;\n } else {\n BasketContextErrorHandler.handlePromoSuccess(promoCode);\n }\n\n Object.values(json.prices).forEach((price: any) => {\n if (!AvailabilityAPI.minNightPrice || Number(price) < AvailabilityAPI.minNightPrice) {\n AvailabilityAPI.minNightPrice = Number(price);\n }\n\n if (AvailabilityAPI.maxNightPrice < Number(price)) {\n AvailabilityAPI.maxNightPrice = Number(price);\n }\n });\n\n if (hotelId) {\n this.crossSellHotelInfo[String(hotelId)] = json.hotel;\n }\n\n resolve((this.calendar[id] = json.prices));\n } else {\n reject(new GetAvailabilityError(fromMonth, toMonth));\n }\n });\n\n return this.calendarPromises[id];\n };\n\n public invalidateAvailability = async (basketRow: BasketRow, hotelId: string) => {\n const today = dayjs();\n\n const adults = basketRow.getAdults();\n const children = basketRow.getChildren();\n const promoCode = basketRow.getPromoCode();\n\n let toDate = basketRow.getEndDate();\n const fromDate = basketRow.getStartDate()?.isBefore(today, 'day') ? today : basketRow.getStartDate();\n\n let oneNightStay = false;\n if (fromDate.isSameOrAfter(toDate, 'date')) {\n oneNightStay = true;\n toDate = fromDate.add(1, 'day');\n }\n\n const id = this.getQueryID([hotelId, fromDate, toDate, adults, children, promoCode, RoomstayThemeEngine.selectedLang, oneNightStay]);\n delete this.cachedAvailability[id];\n };\n\n public fetchMinNightStayData = async (basketRow: BasketRow, hotelID: string) => {\n // TODO: refactor this breakdown.\n\n if (!basketRow) {\n return;\n }\n\n if (!hotelID) {\n throw new NoHotelSelectedError();\n }\n\n const today = dayjs();\n\n const adults = basketRow.getAdults();\n const children = basketRow.getChildren();\n const promoCode = basketRow.getPromoCode();\n\n let toDate = basketRow.getEndDate();\n const fromDate = basketRow.getStartDate()?.isBefore(today, 'day') ? today : basketRow.getStartDate();\n\n let oneNightStay = false;\n if (fromDate.isSameOrAfter(toDate, 'date')) {\n oneNightStay = true;\n toDate = fromDate.add(1, 'day');\n }\n\n const id = this.getQueryID([hotelID, fromDate, toDate, adults, children, promoCode, RoomstayThemeEngine.selectedLang, oneNightStay]);\n\n if (this.cachedMinNightStay[id]) {\n return this.cachedMinNightStay[id];\n }\n\n if (this.cachedMidNightStayPromises[id]) {\n return this.cachedMidNightStayPromises[id];\n }\n\n this.cachedMidNightStayPromises[id] = new Promise(async (resolve) => {\n const json = await this.get(\n APIEndpoint.MinNightStay,\n {\n checkInDate: fromDate,\n checkOutDate: toDate,\n\n adults,\n children,\n promoCode,\n },\n '',\n hotelID\n );\n\n delete this.cachedMidNightStayPromises[id];\n this.cachedMinNightStay[id] = json;\n\n resolve(this.cachedMinNightStay[id]);\n });\n\n return this.cachedMidNightStayPromises[id];\n };\n\n public fetchAvailabilityData = async (basketRow: BasketRow, hotelId: string, isCrossSell = false) => {\n const today = dayjs();\n\n if (!basketRow) {\n return;\n }\n\n const adults = basketRow.getAdults();\n const children = basketRow.getChildren();\n const promoCode = basketRow.getPromoCode();\n const promoOnly = basketRow.getPromoOnly();\n\n let toDate = basketRow.getEndDate();\n const fromDate = basketRow.getStartDate()?.isBefore(today, 'day') ? today : basketRow.getStartDate();\n\n let oneNightStay = false;\n if (fromDate.isSameOrAfter(toDate, 'date')) {\n oneNightStay = true;\n toDate = fromDate.add(1, 'day');\n }\n\n const id = this.getQueryID([hotelId, fromDate, toDate, adults, children, promoCode, RoomstayThemeEngine.selectedLang, oneNightStay]);\n\n // Don't parse warnings when we're making a cross-hotel availability request\n if (this.cachedAvailability[id]) {\n if (this.availabilityWarnings[id]) {\n BasketContextErrorHandler.handleAvailabilityWarnings(this.availabilityWarnings[id]);\n } else {\n BasketContextErrorHandler.handlePromoSuccess(promoCode);\n }\n\n return this.cachedAvailability[id];\n }\n\n if (this.fetchDataPromise[id]) {\n return this.fetchDataPromise[id];\n } else {\n this.fetchDataPromise[id] = new Promise<Room[]>(async (resolve, reject) => {\n try {\n const json = await this.get(\n APIEndpoint.Availability,\n {\n checkInDate: fromDate,\n checkOutDate: toDate,\n\n adults,\n children,\n promoCode,\n promoOnly,\n },\n '',\n hotelId\n );\n\n this.fetchDataPromise[id] = null;\n\n const dateToObject = (data: any) => {\n data.validUntil = dayjs(data.validUntil);\n data.cachedSince = dayjs(data.cachedSince);\n\n return data;\n };\n\n if (json.guaranteePolicies) {\n Object.keys(json.guaranteePolicies).map((code) => {\n AvailabilityAPI.policyMappings.guarantee[code] = json.guaranteePolicies[code];\n });\n }\n\n if (json.cancelPolicies) {\n Object.keys(json.cancelPolicies).map((code) => {\n AvailabilityAPI.policyMappings.cancel[code] = json.cancelPolicies[code];\n });\n }\n\n if (json.roomTypes) {\n const allRoomsByKey = Object.keys(json.roomTypes);\n if (allRoomsByKey.length) {\n this.roomTypesData = dateToObject(json.roomTypes);\n\n allRoomsByKey.forEach((roomCode: any) => {\n this.roomTypesData[roomCode].code = roomCode;\n this.rooms[roomCode] = Room.fromData(this.roomTypesData[roomCode]);\n });\n }\n }\n\n if (json.ratePlans) {\n const allRatesByKey = Object.keys(json.ratePlans);\n if (allRatesByKey.length) {\n this.ratePlansData = dateToObject(json.ratePlans);\n\n allRatesByKey.forEach((rateCode: any) => {\n this.ratePlansData[rateCode].code = rateCode;\n\n this.rates[rateCode] = RoomRate.fromData(this.ratePlansData[rateCode]);\n });\n }\n }\n\n if (json.roomNights) {\n const roomNights = json.roomNights;\n\n const rooms: { [rate: string]: Room } = {};\n\n const allNightsByKey = Object.keys(roomNights);\n\n let first = true;\n if (allNightsByKey.length) {\n allNightsByKey.forEach((date: string) => {\n const day = dayjs(date);\n Object.keys(roomNights[date]).forEach((roomCode: string) => {\n if (first) {\n const room = Room.fromData(this.roomTypesData[roomCode]);\n room.code = roomCode;\n rooms[roomCode] = room;\n }\n\n Object.keys(roomNights[date][roomCode].rates).forEach((rateKey) => {\n const nightData = roomNights[date][roomCode].rates[rateKey];\n\n if (first) {\n const rate = RoomRate.fromData(this.ratePlansData[rateKey]);\n rate.code = rateKey;\n rooms[roomCode].addRate(rate);\n }\n\n if (oneNightStay && Object.keys(rooms[roomCode].getRate(rateKey).nightRates).length) {\n return;\n }\n\n const rateNight = new RoomRateNight();\n rateNight.available = roomNights[date][roomCode].available;\n rateNight.cost = nightData.cost;\n rateNight.discount = nightData.discount;\n rateNight.total = nightData.total;\n rateNight.tax = nightData.tax;\n rateNight.fee = nightData.fee;\n rateNight.date = day;\n\n rooms[roomCode].getRate(rateKey).nightRates[date] = rateNight;\n });\n });\n\n first = false;\n });\n }\n\n const roomArray = Object.values(rooms);\n\n this.cachedAvailability[id] = roomArray;\n resolve(roomArray);\n }\n\n if (json.warnings?.length) {\n this.availabilityWarnings[id] = json.warnings;\n BasketContextErrorHandler.handleAvailabilityWarnings(json.warnings);\n } else {\n BasketContextErrorHandler.handlePromoSuccess(promoCode);\n }\n\n resolve([]);\n } catch (ex) {\n reject();\n }\n }).catch((reason) => {\n throw new RoomstayError('Failed to load calendar availability');\n });\n\n return this.fetchDataPromise[id];\n }\n };\n}\n"]}
|
|
@@ -5,6 +5,7 @@ import AddonAPI from './AddonAPI';
|
|
|
5
5
|
import MockAddonAPI from '../mockApi/AddonAPI';
|
|
6
6
|
import ExchangeRateAPI from './ExchangeRateAPI';
|
|
7
7
|
import MemberAPI from './MemberAPI';
|
|
8
|
+
import ErrorAPI from './ErrorAPI';
|
|
8
9
|
declare const API: {
|
|
9
10
|
Availability: AvailabilityAPI;
|
|
10
11
|
Reservation: ReservationAPI;
|
|
@@ -12,6 +13,7 @@ declare const API: {
|
|
|
12
13
|
Addons: AddonAPI | MockAddonAPI;
|
|
13
14
|
Member: MemberAPI;
|
|
14
15
|
Hotel: HotelAPI;
|
|
16
|
+
Error: ErrorAPI;
|
|
15
17
|
enableMocks: () => void;
|
|
16
18
|
};
|
|
17
19
|
export default API;
|
|
@@ -7,6 +7,7 @@ const AddonAPI_1 = require("./AddonAPI");
|
|
|
7
7
|
const ExchangeRateAPI_1 = require("./ExchangeRateAPI");
|
|
8
8
|
const MemberAPI_1 = require("./MemberAPI");
|
|
9
9
|
const BookingAPI_1 = require("../mockApi/BookingAPI");
|
|
10
|
+
const ErrorAPI_1 = require("./ErrorAPI");
|
|
10
11
|
const API = {
|
|
11
12
|
Availability: new AvailabilityAPI_1.default(),
|
|
12
13
|
Hotel: new HotelAPI_1.default(),
|
|
@@ -14,6 +15,7 @@ const API = {
|
|
|
14
15
|
Addons: new AddonAPI_1.default(),
|
|
15
16
|
ExchangeRate: new ExchangeRateAPI_1.default(),
|
|
16
17
|
Member: new MemberAPI_1.default(),
|
|
18
|
+
Error: new ErrorAPI_1.default(),
|
|
17
19
|
enableMocks: () => {
|
|
18
20
|
API.Addons = BookingAPI_1.default.Addons;
|
|
19
21
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BookingAPI.js","sourceRoot":"/","sources":["src/api/BookingAPI.ts"],"names":[],"mappings":";;AAAA,uDAAgD;AAChD,yCAAkC;AAClC,qDAA8C;AAC9C,yCAAkC;AAElC,uDAAgD;AAChD,2CAAoC;AACpC,sDAA4C;
|
|
1
|
+
{"version":3,"file":"BookingAPI.js","sourceRoot":"/","sources":["src/api/BookingAPI.ts"],"names":[],"mappings":";;AAAA,uDAAgD;AAChD,yCAAkC;AAClC,qDAA8C;AAC9C,yCAAkC;AAElC,uDAAgD;AAChD,2CAAoC;AACpC,sDAA4C;AAC5C,yCAAkC;AAElC,MAAM,GAAG,GASL;IACA,YAAY,EAAE,IAAI,yBAAe,EAAE;IACnC,KAAK,EAAE,IAAI,kBAAQ,EAAE;IACrB,WAAW,EAAE,IAAI,wBAAc,EAAE;IACjC,MAAM,EAAE,IAAI,kBAAQ,EAAE;IACtB,YAAY,EAAE,IAAI,yBAAe,EAAE;IACnC,MAAM,EAAE,IAAI,mBAAS,EAAE;IACvB,KAAK,EAAE,IAAI,kBAAQ,EAAE;IACrB,WAAW,EAAE,GAAG,EAAE;QACd,GAAG,CAAC,MAAM,GAAG,oBAAO,CAAC,MAAM,CAAC;IAChC,CAAC;CACJ,CAAC;AAEF,kBAAe,GAAG,CAAC","sourcesContent":["import AvailabilityAPI from './AvailabilityAPI';\nimport HotelAPI from './HotelAPI';\nimport ReservationAPI from './ReservationAPI';\nimport AddonAPI from './AddonAPI';\nimport MockAddonAPI from '../mockApi/AddonAPI';\nimport ExchangeRateAPI from './ExchangeRateAPI';\nimport MemberAPI from './MemberAPI';\nimport MockAPI from '../mockApi/BookingAPI';\nimport ErrorAPI from './ErrorAPI';\n\nconst API: {\n Availability: AvailabilityAPI;\n Reservation: ReservationAPI;\n ExchangeRate: ExchangeRateAPI;\n Addons: AddonAPI | MockAddonAPI;\n Member: MemberAPI;\n Hotel: HotelAPI;\n Error: ErrorAPI;\n enableMocks: () => void;\n} = {\n Availability: new AvailabilityAPI(),\n Hotel: new HotelAPI(),\n Reservation: new ReservationAPI(),\n Addons: new AddonAPI(),\n ExchangeRate: new ExchangeRateAPI(),\n Member: new MemberAPI(),\n Error: new ErrorAPI(),\n enableMocks: () => {\n API.Addons = MockAPI.Addons;\n },\n};\n\nexport default API;\n"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const RoomstayError_1 = require("errors/RoomstayError");
|
|
13
|
+
const BaseAPI_1 = require("./BaseAPI");
|
|
14
|
+
class ErrorAPI extends BaseAPI_1.default {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
this.sendRoomFallbackForm = (hotelId, object) => __awaiter(this, void 0, void 0, function* () {
|
|
18
|
+
try {
|
|
19
|
+
const response = yield fetch(this.getApiPath() + `error/${hotelId}/rate-fallback-form`, {
|
|
20
|
+
method: 'POST',
|
|
21
|
+
body: JSON.stringify(object),
|
|
22
|
+
});
|
|
23
|
+
if (response.status !== 200) {
|
|
24
|
+
throw new RoomstayError_1.RoomstayError('Failed to post details');
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
catch (ex) {
|
|
28
|
+
throw new RoomstayError_1.RoomstayError('Failed to post details');
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.default = ErrorAPI;
|
|
34
|
+
//# sourceMappingURL=ErrorAPI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorAPI.js","sourceRoot":"/","sources":["src/api/ErrorAPI.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,wDAAqD;AACrD,uCAAgC;AAEhC,MAAqB,QAAS,SAAQ,iBAAO;IAA7C;;QACW,yBAAoB,GAAG,CAAO,OAAe,EAAE,MAA+E,EAAiB,EAAE;YACpJ,IAAI;gBACA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,SAAS,OAAO,qBAAqB,EAAE;oBACpF,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;iBAC/B,CAAC,CAAC;gBAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;oBACzB,MAAM,IAAI,6BAAa,CAAC,wBAAwB,CAAC,CAAC;iBACrD;aACJ;YAAC,OAAO,EAAE,EAAE;gBACT,MAAM,IAAI,6BAAa,CAAC,wBAAwB,CAAC,CAAC;aACrD;QACL,CAAC,CAAA,CAAC;IACN,CAAC;CAAA;AAfD,2BAeC","sourcesContent":["import { RoomstayError } from 'errors/RoomstayError';\nimport BaseAPI from './BaseAPI';\n\nexport default class ErrorAPI extends BaseAPI {\n public sendRoomFallbackForm = async (hotelId: string, object: { name: string; telephone: string; email: string; searchQuery: string }): Promise<void> => {\n try {\n const response = await fetch(this.getApiPath() + `error/${hotelId}/rate-fallback-form`, {\n method: 'POST',\n body: JSON.stringify(object),\n });\n\n if (response.status !== 200) {\n throw new RoomstayError('Failed to post details');\n }\n } catch (ex) {\n throw new RoomstayError('Failed to post details');\n }\n };\n}\n"]}
|
|
@@ -13,9 +13,17 @@ const BaseAPI_1 = require("./BaseAPI");
|
|
|
13
13
|
class ExchangeRateAPI extends BaseAPI_1.default {
|
|
14
14
|
constructor() {
|
|
15
15
|
super(...arguments);
|
|
16
|
+
this.cache = {};
|
|
16
17
|
this.fetchData = (currencyCode) => __awaiter(this, void 0, void 0, function* () {
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
if (this.cache[currencyCode]) {
|
|
19
|
+
return yield this.cache[currencyCode];
|
|
20
|
+
}
|
|
21
|
+
const responseObject = (() => __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
const response = yield fetch(this.getApiPath() + `exchange-rates/${currencyCode}`);
|
|
23
|
+
return response.json();
|
|
24
|
+
}))();
|
|
25
|
+
this.cache[currencyCode] = responseObject;
|
|
26
|
+
return yield this.cache[currencyCode];
|
|
19
27
|
});
|
|
20
28
|
}
|
|
21
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExchangeRateAPI.js","sourceRoot":"/","sources":["src/api/ExchangeRateAPI.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,uCAAgC;AAGhC,MAAqB,eAAgB,SAAQ,iBAAO;IAApD;;
|
|
1
|
+
{"version":3,"file":"ExchangeRateAPI.js","sourceRoot":"/","sources":["src/api/ExchangeRateAPI.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,uCAAgC;AAGhC,MAAqB,eAAgB,SAAQ,iBAAO;IAApD;;QACY,UAAK,GAAmE,EAAE,CAAC;QAE5E,cAAS,GAAG,CAAO,YAAoB,EAA4B,EAAE;YACxE,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;gBAC1B,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;aACzC;YAED,MAAM,cAAc,GAA6B,CAAC,GAAS,EAAE;gBACzD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,kBAAkB,YAAY,EAAE,CAAC,CAAC;gBAEnF,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC3B,CAAC,CAAA,CAAC,EAAE,CAAC;YAEL,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,cAAc,CAAC;YAE1C,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC1C,CAAC,CAAA,CAAC;IACN,CAAC;CAAA;AAlBD,kCAkBC","sourcesContent":["import BaseAPI from './BaseAPI';\nimport { ExchangeRateDTO } from '../models/Api/ExchangeRateDTO';\n\nexport default class ExchangeRateAPI extends BaseAPI {\n private cache: { [name: string]: Promise<ExchangeRateDTO> | ExchangeRateDTO } = {};\n\n public fetchData = async (currencyCode: string): Promise<ExchangeRateDTO> => {\n if (this.cache[currencyCode]) {\n return await this.cache[currencyCode];\n }\n\n const responseObject: Promise<ExchangeRateDTO> = (async () => {\n const response = await fetch(this.getApiPath() + `exchange-rates/${currencyCode}`);\n\n return response.json();\n })();\n\n this.cache[currencyCode] = responseObject;\n\n return await this.cache[currencyCode];\n };\n}\n"]}
|
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
declare function ScrollToTop(props: any): null;
|
|
3
|
-
declare const _default: import("react").ComponentClass<Pick<any, string | number | symbol>, any> & import("react-router").WithRouterStatics<typeof ScrollToTop>;
|
|
1
|
+
declare const _default: any;
|
|
4
2
|
export default _default;
|