@roomstay/frontend 1.5.8 → 1.6.0-1
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/661.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js +13 -10
- package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js.map +1 -1
- package/dist/src/components/steps/room/RoomList.js +1 -1
- package/dist/src/components/steps/room/RoomList.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/MembersOnlyRow.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.d.ts +7 -0
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.js +30 -0
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.js.map +1 -0
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js +5 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextType.d.ts +2 -0
- package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js +12 -8
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
- package/dist/src/contexts/CompanyContext/CompanyContextType.type.d.ts +3 -1
- package/dist/src/contexts/CompanyContext/CompanyContextType.type.js.map +1 -1
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +9 -1
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
- package/dist/src/events/RoomstayEventManager.d.ts +1 -1
- package/dist/src/events/RoomstayEventManager.js +23 -4
- package/dist/src/events/RoomstayEventManager.js.map +1 -1
- package/dist/src/events/actions/MemberOnlyFence/MemberOnlyFenceSignUp.d.ts +7 -0
- package/dist/src/events/actions/MemberOnlyFence/MemberOnlyFenceSignUp.js +15 -0
- package/dist/src/events/actions/MemberOnlyFence/MemberOnlyFenceSignUp.js.map +1 -0
- package/dist/src/events/actions/Promotion/PromotionAddedEvent.d.ts +7 -0
- package/dist/src/events/actions/Promotion/PromotionAddedEvent.js +15 -0
- package/dist/src/events/actions/Promotion/PromotionAddedEvent.js.map +1 -0
- package/dist/src/events/actions/Promotion/PromotionClickedEvent.d.ts +7 -0
- package/dist/src/events/actions/Promotion/PromotionClickedEvent.js +15 -0
- package/dist/src/events/actions/Promotion/PromotionClickedEvent.js.map +1 -0
- package/dist/src/events/actions/Promotion/PromotionRemovedEvent.d.ts +7 -0
- package/dist/src/events/actions/Promotion/PromotionRemovedEvent.js +15 -0
- package/dist/src/events/actions/Promotion/PromotionRemovedEvent.js.map +1 -0
- package/dist/src/events/index.d.ts +1 -0
- package/dist/src/events/index.js +1 -0
- package/dist/src/events/index.js.map +1 -1
- package/dist/src/hooks/EventHook.d.ts +1 -1
- package/dist/src/hooks/EventHook.js +2 -2
- package/dist/src/hooks/EventHook.js.map +1 -1
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/Promotion/IPromotion.type.d.ts +26 -0
- package/dist/src/models/Promotion/IPromotion.type.js +3 -0
- package/dist/src/models/Promotion/IPromotion.type.js.map +1 -0
- package/dist/src/providers/PromotionProvider.d.ts +14 -0
- package/dist/src/providers/PromotionProvider.js +210 -0
- package/dist/src/providers/PromotionProvider.js.map +1 -0
- package/dist/test.bundle.js +1 -1
- package/dist/tests/offline/entry/RSCompany.js +39 -0
- package/dist/tests/offline/entry/RSCompany.js.map +1 -1
- package/dist/vendors.bundle.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BasketContextWrapper.js","sourceRoot":"/","sources":["src/contexts/BasketContext/BasketContextWrapper.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as dayjs from 'dayjs';\nimport * as React from 'react';\nimport { useContext, useReducer, useState, useEffect } from 'react';\n\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router';\n\nimport { BasketContext, FullPageEngineContext } from '@frontend/contexts';\nimport type { BasketContextType } from '@frontend/contexts';\n\nimport { BookingEngineContext, CompanyContext, ErrorHandler } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport NotificationContext from '../NotificationContext';\nimport { BasketReducer } from '../../reducers/BasketReducer';\nimport API from '../../api/BookingAPI';\nimport { IconType } from '../../components/generic/Icon';\nimport MemberSignInModal from '../../components/steps/room/MemberSignInModal/MemberSignInModal';\nimport { BasketContextErrorHandler } from '../../handlers/BasketContextErrorHandler';\nimport { Addon } from '../../models/Addon/Addon';\nimport ReservationsDTO from '../../models/Api/ReservationsDTO';\nimport BasketAddonRow from '../../models/BasketAddonRow';\nimport BasketRow from '../../models/BasketRow';\nimport { RoomRate } from '../../models/Room/RoomRate';\nimport StepAddon from '../../pages/steps/StepAddon/StepAddon';\nimport StepRoom from '../../pages/steps/StepRoom/StepRoom';\nimport StepThanks from '../../pages/steps/StepThanks/StepThanks';\nimport InlineAddonStepFeature from '../../providers/feature/InlineAddonStepFeature';\nimport DataLayer from '../../util/DataLayer';\nimport StepManager from '../../util/StepManager';\nimport StringHelper from '../../util/StringHelper';\nimport { Translation } from '../../translations/Translation';\nimport Text from '../../components/generic/Text';\n\nexport interface BasketContextWrapperProps {\n children: React.ReactNode;\n}\n\nexport function BasketContextWrapper(props: BasketContextWrapperProps) {\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n\n const notifications = useContext(NotificationContext);\n const beContext = useContext(BookingEngineContext);\n const ccx = useContext(CompanyContext);\n const fullPageContext = useContext(FullPageEngineContext);\n\n const initialSession = beContext?.engine?.getInitialSession();\n\n const [currentBasketRows, basketRowReducer] = useReducer(BasketReducer, initialSession?.basketRows ?? []);\n\n const [selectedBasketRow, setSelectedBasketRow] = useState<BasketRow>(null);\n const [basketAddonRows, setBasketAddonRows] = useState<BasketAddonRow[]>([]);\n\n let loadedStartDate: dayjs.Dayjs;\n let loadedEndDate: dayjs.Dayjs;\n\n if (initialSession?.basketRows?.length) {\n loadedStartDate = initialSession.basketRows[0].getStartDate();\n loadedEndDate = initialSession.basketRows[0].getEndDate();\n } else {\n if (initialSession?.startDate) {\n loadedStartDate = initialSession.startDate;\n }\n\n if (initialSession?.endDate) {\n loadedEndDate = initialSession.endDate;\n }\n }\n\n const [startDate, setStartDate] = useState<dayjs.Dayjs>(loadedStartDate ?? null);\n const [endDate, setEndDate] = useState<dayjs.Dayjs>(loadedEndDate ?? null);\n\n const [hasCheckedOut, setHasCheckedOut] = useState(false);\n const [reservationData, setReservationData] = useState<ReservationsDTO>(null);\n\n const [knownErrorPromoCodes, setKnownErrorPromoCodes] = useState<string[]>([]);\n\n const history = useHistory();\n\n BasketContextErrorHandler.handleAvailabilityWarnings = (warnings: string[]) => {\n warnings.map((warning) => {\n if (warning.toLowerCase().startsWith('invalid promo code')) {\n const promoCode = warning.substr(20);\n\n currentBasketRows.forEach((row) => {\n if (promoCode.toLowerCase() === row.getPromoCode().toLowerCase()) {\n row.setPromoCodeStatus('invalid');\n workingContext.updateBasketRow(row, false);\n }\n });\n\n if (!knownErrorPromoCodes.includes(promoCode.toUpperCase())) {\n setKnownErrorPromoCodes((oldCodes) => {\n return [...oldCodes, promoCode.toUpperCase()];\n });\n }\n } else {\n ErrorHandler.add({\n message: warning,\n });\n }\n });\n };\n\n BasketContextErrorHandler.handlePromoSuccess = (promo: string) => {\n currentBasketRows.forEach((row) => {\n if (row.getPromoCode() === promo && row.getPromoCode() && row.getPromoCodeStatus() !== 'valid') {\n row.setPromoCodeStatus('valid');\n workingContext.updateBasketRow(row, false);\n }\n });\n };\n\n useEffect(() => {\n if (!startDate || !endDate) {\n return;\n }\n\n beContext.sessionProvider?.updateSession({\n startDate,\n endDate,\n });\n\n // TODO re-visit this as we don't want to set dates for everything constantly\n workingContext.getAllDatelessRows().forEach((row: BasketRow) => {\n row.setStartDate(startDate);\n row.setEndDate(endDate);\n\n workingContext.updateBasketRow(row);\n });\n\n if (selectedBasketRow) {\n selectedBasketRow.setStartDate(startDate);\n selectedBasketRow.setEndDate(endDate);\n\n workingContext.updateBasketRow(selectedBasketRow, false);\n } else if (currentBasketRows.length === 1) {\n const onlyBasketRow = currentBasketRows[0];\n onlyBasketRow.setStartDate(startDate);\n onlyBasketRow.setEndDate(endDate);\n\n workingContext.updateBasketRow(onlyBasketRow, false);\n }\n }, [startDate, endDate]);\n\n useEffect(() => {\n beContext.sessionProvider?.updateSession({ basketRows: currentBasketRows, step: fullPageContext?.currentStep?.getName() });\n }, [currentBasketRows, fullPageContext?.currentStep, selectedBasketRow]);\n\n const checkAndApplyMemberOnlyPromo = (row: BasketRow) => {\n if (hotel?.memberOnlyPromoCode && localStorage.getItem('hotel' + hotel?.hotelID + 'user') && !row.getPromoCode()) {\n row.setPromoCode(hotel?.memberOnlyPromoCode);\n workingContext.updateBasketRow(row);\n }\n };\n\n /**\n * This is necessary as when we're adding our first row, hotel might not be set.\n */\n useEffect(() => {\n checkAndApplyMemberOnlyPromo(selectedBasketRow);\n }, [hotel]);\n\n const returnAggregationAndTranslation = (reduction: ((row: BasketRow) => number) | number, translation?: string) => {\n let count;\n count = typeof reduction === 'number' ? reduction : currentBasketRows.reduce((total, row) => total + reduction(row), 0);\n\n if (translation) {\n return StringHelper.pluralWithDictAndCount(count, translation, t);\n } else {\n return count;\n }\n };\n\n const getNextAvailableBasketRow = (exclude?: BasketRow): BasketRow => {\n const arrayLength = currentBasketRows.length;\n for (let i = 0; i < arrayLength; i++) {\n if ((!exclude || (exclude && exclude.getID() !== currentBasketRows[i].getID())) && !currentBasketRows[i].getRate()) {\n return currentBasketRows[i];\n }\n }\n\n return null;\n };\n\n const workingContext: BasketContextType = {\n startDate,\n endDate,\n\n selectedBasketRow,\n currentBasketRows,\n basketAddonRows,\n\n hasCheckedOut,\n reservationData,\n\n /**\n * When adding a basket row, will check if there is a `selectedBasketRow`\n * if one is already set, row will simply get added, otherwise selectedBasketRow\n * gets set\n */\n addBasketRow: (row: BasketRow, selectThisRate = false, neverSelectThisRate = false) => {\n if ((!row.getStartDate() || !row.getEndDate()) && startDate && endDate) {\n row.setStartDate(startDate);\n row.setEndDate(endDate);\n } else if (!startDate && !endDate && row.getStartDate() && row.getEndDate()) {\n setStartDate(row.getStartDate());\n setEndDate(row.getEndDate());\n }\n\n checkAndApplyMemberOnlyPromo(row);\n\n if (\n (!selectedBasketRow && (!row.isValid() || !currentBasketRows.length || currentBasketRows.length - workingContext.getAllValidRows().length === 0)) ||\n selectThisRate\n ) {\n if (!neverSelectThisRate) {\n setSelectedBasketRow(row);\n }\n }\n\n basketRowReducer({ method: 'Add', row });\n },\n\n //TODO: This function needs to be refactored to simplify a lot of this logic, and move notification raising to use the Event Manager instead\n addRate: async (rate: RoomRate, notify = true) => {\n let basketRow: BasketRow = null;\n let translationString: string;\n\n let addons = [];\n\n if (selectedBasketRow) {\n basketRow = selectedBasketRow;\n if (selectedBasketRow.getRate()) {\n translationString = Translation.Misc.RoomUpdatedNotification;\n } else {\n if (!selectedBasketRow.getStartDate() && selectedBasketRow.getEndDate()) {\n selectedBasketRow.setStartDate(startDate);\n selectedBasketRow.setEndDate(endDate);\n }\n\n translationString = Translation.Misc.RoomAddedNotification;\n }\n } else {\n if (!startDate || !endDate) {\n console.error('room selected with no date values.');\n return;\n }\n\n basketRow = new BasketRow(rate);\n\n basketRow.setStartDate(startDate);\n basketRow.setEndDate(endDate);\n\n translationString = Translation.Misc.RoomAddedNotification;\n }\n\n if (InlineAddonStepFeature.isActive()) {\n basketRow.setRate(rate); // TODO: Fix quick hack to make the Addons load\n addons = await API.Addons.findAddons([basketRow], hotel.hotelID);\n }\n\n basketRowReducer({ method: 'AddRate', rate, row: basketRow });\n\n try {\n DataLayer.instance.sendRoomRateAddToCart(rate, basketRow.getNumberOfDays(), startDate ?? basketRow.getStartDate(), endDate ?? basketRow.getEndDate());\n } catch (ex) {\n console.log('Failed recording basket Add event');\n }\n\n if (notify) {\n notifications.addNotification({\n icon: IconType.Bed,\n children: (\n <Text inline={true}>\n {t(translationString)} <strong className=\"u-marg-left--light\">{rate.getRoom().name}</strong>\n </Text>\n ),\n ttl: 3000,\n });\n }\n\n const nextAvailable = getNextAvailableBasketRow(basketRow);\n\n if (nextAvailable) {\n setSelectedBasketRow(nextAvailable);\n } else {\n setSelectedBasketRow(null);\n const isNextStepAddon = StepManager.getNextStepUrl(StepRoom) === StepAddon.getStepUrl();\n\n if (isNextStepAddon) {\n if (addons.length) {\n history.push(StepAddon.getStepUrl());\n } else {\n history.push(StepManager.getNextStepUrl(StepAddon));\n }\n } else {\n history.push(StepManager.getNextStepUrl(StepRoom));\n }\n }\n },\n\n /**\n * Filter global list of rooms based on their validity.\n *\n * Useful for getting a complete summary of all the rooms.\n */\n getAllValidRows: () => {\n return currentBasketRows.filter((item) => item.isValid());\n },\n getAllDatelessRows: () => {\n return currentBasketRows.filter((item) => !item.getStartDate() || !item.getEndDate());\n },\n\n getNumberOfAdults: (withTranslation = false) => {\n return returnAggregationAndTranslation((row) => row.getAdults(), withTranslation ? Translation.Step.Date.Adult : null);\n },\n\n getNumberOfChildren: (withTranslation = false) => {\n return returnAggregationAndTranslation((row) => row.getChildren(), withTranslation ? Translation.Step.Date.Child : null);\n },\n\n getNumberOfRooms: (withTranslation = false) => {\n return returnAggregationAndTranslation(currentBasketRows.length, withTranslation ? Translation.Step.Date.Room : null);\n },\n\n getTotalPrice: () => {\n let totalPrice = returnAggregationAndTranslation((row) => (row.isValid() ? row.getRate().getTotalPrice() : 0)) as number;\n\n basketAddonRows.forEach((row) => {\n totalPrice += row.getTotalPrice();\n });\n\n return totalPrice;\n },\n\n /**\n * Pops the provided row from the current basket array\n */\n removeBasketRow: (row: BasketRow) => {\n const rowsBeforeRemoval = currentBasketRows.length;\n\n basketRowReducer({ method: 'Remove', row });\n\n if (selectedBasketRow && row.getID() === selectedBasketRow.getID()) {\n setSelectedBasketRow(getNextAvailableBasketRow(row));\n }\n\n if (rowsBeforeRemoval === 1) {\n workingContext.addBasketRow(new BasketRow(), true);\n }\n },\n\n clearBasketRows: (confirm: boolean) => {\n if (confirm) {\n basketRowReducer({ method: 'Clear' });\n }\n },\n\n updateBasketRow: (row: BasketRow, updateGlobalDates = true) => {\n if (updateGlobalDates && row.getID() === selectedBasketRow?.getID()) {\n setStartDate(row.getStartDate());\n setEndDate(row.getEndDate());\n }\n\n basketRowReducer({ method: 'Update', row });\n },\n\n /**\n * Select passed basket row, and update all inputs (like start date)\n */\n selectBasketRow: async (row: BasketRow) => {\n if (row && row.isValid()) {\n setStartDate(row.getStartDate());\n setEndDate(row.getEndDate());\n\n setSelectedBasketRow(row);\n } else {\n setSelectedBasketRow(getNextAvailableBasketRow());\n }\n },\n\n setStartDate,\n setEndDate,\n\n checkedOut: (data: ReservationsDTO) => {\n setHasCheckedOut(true);\n setReservationData(data);\n\n setSelectedBasketRow(null);\n basketRowReducer({ method: 'Clear' });\n\n const row = new BasketRow();\n row.setStartDate(dayjs().add(1, 'day'));\n row.setEndDate(dayjs().add(2, 'day'));\n\n basketRowReducer({ method: 'Add', row });\n setBasketAddonRows([]);\n\n beContext?.engine?.getSessionProvider().deleteSession();\n history.push(StepThanks.getStepUrl());\n },\n\n clearSelectedRates: () => {\n setSelectedBasketRow(null);\n },\n\n getRowForAddon: (selectedAddon) => {\n if (selectedAddon === undefined) {\n return;\n }\n return basketAddonRows.find((r) => r.getAddon()?.code === selectedAddon?.code);\n },\n\n setAddonQuantities: (addon: Addon, quantities: { quantity: number; adult: number; child: number }, selectedDate: string, selectedTime: string) => {\n let addonRow = basketAddonRows.find((r) => r.getAddon()?.code === addon.code);\n if (addonRow === undefined) {\n addonRow = new BasketAddonRow(addon);\n basketAddonRows.push(addonRow);\n }\n\n addonRow.setQuantity(quantities.quantity ?? 0);\n addonRow.setAdultQuantity(quantities.adult ?? 0);\n addonRow.setChildQuantity(quantities.child ?? 0);\n addonRow.setSelectedDate(selectedDate);\n addonRow.setSelectedTime(addon.availability[selectedDate].selectorTimes ? selectedTime : undefined);\n\n setBasketAddonRows([...basketAddonRows]);\n },\n\n removeBasketAddonRow: (row: BasketAddonRow) => {\n setBasketAddonRows((oldRows) => oldRows.filter((item) => item.getID() !== row.getID()));\n },\n\n attemptSelectUnfilledRow: () => {\n const row = getNextAvailableBasketRow();\n\n if (row) {\n setSelectedBasketRow(row);\n return row;\n }\n },\n };\n\n return (\n <BasketContext.Provider value={workingContext}>\n {props.children}\n <MemberSignInModal isOpen={ccx.isSigningIn} onClose={ccx.closeMemberSignupModal} />\n </BasketContext.Provider>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BasketContextWrapper.js","sourceRoot":"/","sources":["src/contexts/BasketContext/BasketContextWrapper.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as dayjs from 'dayjs';\nimport * as React from 'react';\nimport { useContext, useReducer, useState, useEffect } from 'react';\n\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router';\n\nimport { BasketContext, FullPageEngineContext } from '@frontend/contexts';\nimport type { BasketContextType } from '@frontend/contexts';\n\nimport { BookingEngineContext, CompanyContext, ErrorHandler } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport NotificationContext from '../NotificationContext';\nimport { BasketReducer } from '../../reducers/BasketReducer';\nimport API from '../../api/BookingAPI';\nimport { IconType } from '../../components/generic/Icon';\nimport MemberSignInModal from '../../components/steps/room/MemberSignInModal/MemberSignInModal';\nimport { BasketContextErrorHandler } from '../../handlers/BasketContextErrorHandler';\nimport { Addon } from '../../models/Addon/Addon';\nimport ReservationsDTO from '../../models/Api/ReservationsDTO';\nimport BasketAddonRow from '../../models/BasketAddonRow';\nimport BasketRow from '../../models/BasketRow';\nimport { RoomRate } from '../../models/Room/RoomRate';\nimport StepAddon from '../../pages/steps/StepAddon/StepAddon';\nimport StepRoom from '../../pages/steps/StepRoom/StepRoom';\nimport StepThanks from '../../pages/steps/StepThanks/StepThanks';\nimport InlineAddonStepFeature from '../../providers/feature/InlineAddonStepFeature';\nimport DataLayer from '../../util/DataLayer';\nimport StepManager from '../../util/StepManager';\nimport StringHelper from '../../util/StringHelper';\nimport { Translation } from '../../translations/Translation';\nimport Text from '../../components/generic/Text';\nimport { usePromotionContainer } from 'providers/PromotionProvider';\n\nexport interface BasketContextWrapperProps {\n children: React.ReactNode;\n}\n\nexport function BasketContextWrapper(props: BasketContextWrapperProps) {\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n\n const notifications = useContext(NotificationContext);\n const beContext = useContext(BookingEngineContext);\n const ccx = useContext(CompanyContext);\n const fullPageContext = useContext(FullPageEngineContext);\n\n const initialSession = beContext?.engine?.getInitialSession();\n\n const [currentBasketRows, basketRowReducer] = useReducer(BasketReducer, initialSession?.basketRows ?? []);\n\n const [selectedBasketRow, setSelectedBasketRow] = useState<BasketRow>(null);\n const [basketAddonRows, setBasketAddonRows] = useState<BasketAddonRow[]>([]);\n\n let loadedStartDate: dayjs.Dayjs;\n let loadedEndDate: dayjs.Dayjs;\n\n if (initialSession?.basketRows?.length) {\n loadedStartDate = initialSession.basketRows[0].getStartDate();\n loadedEndDate = initialSession.basketRows[0].getEndDate();\n } else {\n if (initialSession?.startDate) {\n loadedStartDate = initialSession.startDate;\n }\n\n if (initialSession?.endDate) {\n loadedEndDate = initialSession.endDate;\n }\n }\n\n const [startDate, setStartDate] = useState<dayjs.Dayjs>(loadedStartDate ?? null);\n const [endDate, setEndDate] = useState<dayjs.Dayjs>(loadedEndDate ?? null);\n\n const [hasCheckedOut, setHasCheckedOut] = useState(false);\n const [reservationData, setReservationData] = useState<ReservationsDTO>(null);\n\n const [knownErrorPromoCodes, setKnownErrorPromoCodes] = useState<string[]>([]);\n\n const history = useHistory();\n\n BasketContextErrorHandler.handleAvailabilityWarnings = (warnings: string[]) => {\n warnings.map((warning) => {\n if (warning.toLowerCase().startsWith('invalid promo code')) {\n const promoCode = warning.substr(20);\n\n currentBasketRows.forEach((row) => {\n if (promoCode.toLowerCase() === row.getPromoCode().toLowerCase()) {\n row.setPromoCodeStatus('invalid');\n workingContext.updateBasketRow(row, false);\n }\n });\n\n if (!knownErrorPromoCodes.includes(promoCode.toUpperCase())) {\n setKnownErrorPromoCodes((oldCodes) => {\n return [...oldCodes, promoCode.toUpperCase()];\n });\n }\n } else {\n ErrorHandler.add({\n message: warning,\n });\n }\n });\n };\n\n BasketContextErrorHandler.handlePromoSuccess = (promo: string) => {\n currentBasketRows.forEach((row) => {\n if (row.getPromoCode() === promo && row.getPromoCode() && row.getPromoCodeStatus() !== 'valid') {\n row.setPromoCodeStatus('valid');\n workingContext.updateBasketRow(row, false);\n }\n });\n };\n\n useEffect(() => {\n if (!startDate || !endDate) {\n return;\n }\n\n beContext.sessionProvider?.updateSession({\n startDate,\n endDate,\n });\n\n // TODO re-visit this as we don't want to set dates for everything constantly\n workingContext.getAllDatelessRows().forEach((row: BasketRow) => {\n row.setStartDate(startDate);\n row.setEndDate(endDate);\n\n workingContext.updateBasketRow(row);\n });\n\n if (selectedBasketRow) {\n selectedBasketRow.setStartDate(startDate);\n selectedBasketRow.setEndDate(endDate);\n\n workingContext.updateBasketRow(selectedBasketRow, false);\n } else if (currentBasketRows.length === 1) {\n const onlyBasketRow = currentBasketRows[0];\n onlyBasketRow.setStartDate(startDate);\n onlyBasketRow.setEndDate(endDate);\n\n workingContext.updateBasketRow(onlyBasketRow, false);\n }\n }, [startDate, endDate]);\n\n useEffect(() => {\n beContext.sessionProvider?.updateSession({ basketRows: currentBasketRows, step: fullPageContext?.currentStep?.getName() });\n }, [currentBasketRows, fullPageContext?.currentStep, selectedBasketRow]);\n\n const checkAndApplyMemberOnlyPromo = (row: BasketRow) => {\n if (hotel?.memberOnlyPromoCode && localStorage.getItem('hotel' + hotel?.hotelID + 'user') && !row?.getPromoCode()) {\n row.setPromoCode(hotel?.memberOnlyPromoCode);\n workingContext.updateBasketRow(row);\n }\n };\n\n /**\n * This is necessary as when we're adding our first row, hotel might not be set.\n */\n useEffect(() => {\n checkAndApplyMemberOnlyPromo(selectedBasketRow);\n }, [hotel]);\n\n const returnAggregationAndTranslation = (reduction: ((row: BasketRow) => number) | number, translation?: string) => {\n let count;\n count = typeof reduction === 'number' ? reduction : currentBasketRows.reduce((total, row) => total + reduction(row), 0);\n\n if (translation) {\n return StringHelper.pluralWithDictAndCount(count, translation, t);\n } else {\n return count;\n }\n };\n\n const getNextAvailableBasketRow = (exclude?: BasketRow): BasketRow => {\n const arrayLength = currentBasketRows.length;\n for (let i = 0; i < arrayLength; i++) {\n if ((!exclude || (exclude && exclude.getID() !== currentBasketRows[i].getID())) && !currentBasketRows[i].getRate()) {\n return currentBasketRows[i];\n }\n }\n\n return null;\n };\n\n const updateBasketRow = (row: BasketRow, updateGlobalDates = true) => {\n if (updateGlobalDates && row.getID() === selectedBasketRow?.getID()) {\n setStartDate(row.getStartDate());\n setEndDate(row.getEndDate());\n }\n\n basketRowReducer({ method: 'Update', row });\n };\n\n const { loadedPromotion } = usePromotionContainer({ selectedBasketRow, updateBasketRow });\n\n const workingContext: BasketContextType = {\n startDate,\n endDate,\n\n selectedBasketRow,\n currentBasketRows,\n basketAddonRows,\n\n hasCheckedOut,\n reservationData,\n\n loadedPromotion,\n\n /**\n * When adding a basket row, will check if there is a `selectedBasketRow`\n * if one is already set, row will simply get added, otherwise selectedBasketRow\n * gets set\n */\n addBasketRow: (row: BasketRow, selectThisRate = false, neverSelectThisRate = false) => {\n if ((!row.getStartDate() || !row.getEndDate()) && startDate && endDate) {\n row.setStartDate(startDate);\n row.setEndDate(endDate);\n } else if (!startDate && !endDate && row.getStartDate() && row.getEndDate()) {\n setStartDate(row.getStartDate());\n setEndDate(row.getEndDate());\n }\n\n checkAndApplyMemberOnlyPromo(row);\n\n if (\n (!selectedBasketRow && (!row.isValid() || !currentBasketRows.length || currentBasketRows.length - workingContext.getAllValidRows().length === 0)) ||\n selectThisRate\n ) {\n if (!neverSelectThisRate) {\n setSelectedBasketRow(row);\n }\n }\n\n basketRowReducer({ method: 'Add', row });\n },\n\n //TODO: This function needs to be refactored to simplify a lot of this logic, and move notification raising to use the Event Manager instead\n addRate: async (rate: RoomRate, notify = true) => {\n let basketRow: BasketRow = null;\n let translationString: string;\n\n let addons = [];\n\n if (selectedBasketRow) {\n basketRow = selectedBasketRow;\n if (selectedBasketRow.getRate()) {\n translationString = Translation.Misc.RoomUpdatedNotification;\n } else {\n if (!selectedBasketRow.getStartDate() && selectedBasketRow.getEndDate()) {\n selectedBasketRow.setStartDate(startDate);\n selectedBasketRow.setEndDate(endDate);\n }\n\n translationString = Translation.Misc.RoomAddedNotification;\n }\n } else {\n if (!startDate || !endDate) {\n console.error('room selected with no date values.');\n return;\n }\n\n basketRow = new BasketRow(rate);\n\n basketRow.setStartDate(startDate);\n basketRow.setEndDate(endDate);\n\n translationString = Translation.Misc.RoomAddedNotification;\n }\n\n if (InlineAddonStepFeature.isActive()) {\n basketRow.setRate(rate); // TODO: Fix quick hack to make the Addons load\n addons = await API.Addons.findAddons([basketRow], hotel.hotelID);\n }\n\n basketRowReducer({ method: 'AddRate', rate, row: basketRow });\n\n try {\n DataLayer.instance.sendRoomRateAddToCart(rate, basketRow.getNumberOfDays(), startDate ?? basketRow.getStartDate(), endDate ?? basketRow.getEndDate());\n } catch (ex) {\n console.log('Failed recording basket Add event');\n }\n\n if (notify) {\n notifications.addNotification({\n icon: IconType.Bed,\n children: (\n <Text inline={true}>\n {t(translationString)} <strong className=\"u-marg-left--light\">{rate.getRoom().name}</strong>\n </Text>\n ),\n ttl: 3000,\n });\n }\n\n const nextAvailable = getNextAvailableBasketRow(basketRow);\n\n if (nextAvailable) {\n setSelectedBasketRow(nextAvailable);\n } else {\n setSelectedBasketRow(null);\n const isNextStepAddon = StepManager.getNextStepUrl(StepRoom) === StepAddon.getStepUrl();\n\n if (isNextStepAddon) {\n if (addons.length) {\n history.push(StepAddon.getStepUrl());\n } else {\n history.push(StepManager.getNextStepUrl(StepAddon));\n }\n } else {\n history.push(StepManager.getNextStepUrl(StepRoom));\n }\n }\n },\n\n /**\n * Filter global list of rooms based on their validity.\n *\n * Useful for getting a complete summary of all the rooms.\n */\n getAllValidRows: () => {\n return currentBasketRows.filter((item) => item.isValid());\n },\n getAllDatelessRows: () => {\n return currentBasketRows.filter((item) => !item.getStartDate() || !item.getEndDate());\n },\n\n getNumberOfAdults: (withTranslation = false) => {\n return returnAggregationAndTranslation((row) => row.getAdults(), withTranslation ? Translation.Step.Date.Adult : null);\n },\n\n getNumberOfChildren: (withTranslation = false) => {\n return returnAggregationAndTranslation((row) => row.getChildren(), withTranslation ? Translation.Step.Date.Child : null);\n },\n\n getNumberOfRooms: (withTranslation = false) => {\n return returnAggregationAndTranslation(currentBasketRows.length, withTranslation ? Translation.Step.Date.Room : null);\n },\n\n getTotalPrice: () => {\n let totalPrice = returnAggregationAndTranslation((row) => (row.isValid() ? row.getRate().getTotalPrice() : 0)) as number;\n\n basketAddonRows.forEach((row) => {\n totalPrice += row.getTotalPrice();\n });\n\n return totalPrice;\n },\n\n /**\n * Pops the provided row from the current basket array\n */\n removeBasketRow: (row: BasketRow) => {\n const rowsBeforeRemoval = currentBasketRows.length;\n\n basketRowReducer({ method: 'Remove', row });\n\n if (selectedBasketRow && row.getID() === selectedBasketRow.getID()) {\n setSelectedBasketRow(getNextAvailableBasketRow(row));\n }\n\n if (rowsBeforeRemoval === 1) {\n workingContext.addBasketRow(new BasketRow(), true);\n }\n },\n\n clearBasketRows: (confirm: boolean) => {\n if (confirm) {\n basketRowReducer({ method: 'Clear' });\n }\n },\n\n updateBasketRow,\n\n /**\n * Select passed basket row, and update all inputs (like start date)\n */\n selectBasketRow: async (row: BasketRow) => {\n if (row && row.isValid()) {\n setStartDate(row.getStartDate());\n setEndDate(row.getEndDate());\n\n setSelectedBasketRow(row);\n } else {\n setSelectedBasketRow(getNextAvailableBasketRow());\n }\n },\n\n setStartDate,\n setEndDate,\n\n checkedOut: (data: ReservationsDTO) => {\n setHasCheckedOut(true);\n setReservationData(data);\n\n setSelectedBasketRow(null);\n basketRowReducer({ method: 'Clear' });\n\n const row = new BasketRow();\n row.setStartDate(dayjs().add(1, 'day'));\n row.setEndDate(dayjs().add(2, 'day'));\n\n basketRowReducer({ method: 'Add', row });\n setBasketAddonRows([]);\n\n beContext?.engine?.getSessionProvider().deleteSession();\n history.push(StepThanks.getStepUrl());\n },\n\n clearSelectedRates: () => {\n setSelectedBasketRow(null);\n },\n\n getRowForAddon: (selectedAddon) => {\n if (selectedAddon === undefined) {\n return;\n }\n return basketAddonRows.find((r) => r.getAddon()?.code === selectedAddon?.code);\n },\n\n setAddonQuantities: (addon: Addon, quantities: { quantity: number; adult: number; child: number }, selectedDate: string, selectedTime: string) => {\n let addonRow = basketAddonRows.find((r) => r.getAddon()?.code === addon.code);\n if (addonRow === undefined) {\n addonRow = new BasketAddonRow(addon);\n basketAddonRows.push(addonRow);\n }\n\n addonRow.setQuantity(quantities.quantity ?? 0);\n addonRow.setAdultQuantity(quantities.adult ?? 0);\n addonRow.setChildQuantity(quantities.child ?? 0);\n addonRow.setSelectedDate(selectedDate);\n addonRow.setSelectedTime(addon.availability[selectedDate].selectorTimes ? selectedTime : undefined);\n\n setBasketAddonRows([...basketAddonRows]);\n },\n\n removeBasketAddonRow: (row: BasketAddonRow) => {\n setBasketAddonRows((oldRows) => oldRows.filter((item) => item.getID() !== row.getID()));\n },\n\n attemptSelectUnfilledRow: () => {\n const row = getNextAvailableBasketRow();\n\n if (row) {\n setSelectedBasketRow(row);\n return row;\n }\n },\n };\n\n return (\n <BasketContext.Provider value={workingContext}>\n {props.children}\n <MemberSignInModal isOpen={ccx.isSigningIn} onClose={ccx.closeMemberSignupModal} />\n </BasketContext.Provider>\n );\n}\n"]}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { IPromotion } from 'models/Promotion/IPromotion.type';
|
|
1
2
|
import type BasketRow from '../../models/BasketRow';
|
|
2
3
|
import type { Company } from '../../models/Client/Hotel/Company';
|
|
3
4
|
import type { Hotel } from '../../models/Client/Hotel/Hotel';
|
|
4
5
|
import type { Language } from '../../providers/LanguageProvider';
|
|
5
6
|
export declare type CompanyContextType = Company & {
|
|
6
7
|
selectedHotelID: string;
|
|
8
|
+
memberOnlyModalPromotion: IPromotion | null;
|
|
7
9
|
currentCurrency: string;
|
|
8
10
|
currentLanguage: Language;
|
|
9
11
|
signedInUser: string;
|
|
@@ -13,7 +15,7 @@ export declare type CompanyContextType = Company & {
|
|
|
13
15
|
setCurrentCurrency: (currency: string) => void;
|
|
14
16
|
setCurrentLanguage: (lang: Language) => void;
|
|
15
17
|
closeMemberSignupModal: () => void;
|
|
16
|
-
openMemberSignupModal: () => void;
|
|
18
|
+
openMemberSignupModal: (promotion?: IPromotion) => void;
|
|
17
19
|
signUserIn: (user: string) => void;
|
|
18
20
|
refreshHotelFromApi: (hotelId: string) => void;
|
|
19
21
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompanyContextType.type.js","sourceRoot":"/","sources":["src/contexts/CompanyContext/CompanyContextType.type.ts"],"names":[],"mappings":"","sourcesContent":["import type BasketRow from '../../models/BasketRow';\nimport type { Company } from '../../models/Client/Hotel/Company';\nimport type { Hotel } from '../../models/Client/Hotel/Hotel';\nimport type { Language } from '../../providers/LanguageProvider';\n\nexport type CompanyContextType = Company & {\n selectedHotelID: string;\n\n currentCurrency: string;\n currentLanguage: Language;\n\n signedInUser: string;\n isSigningIn: boolean;\n\n updateLowestPricePerNight: (hotelId: string | Hotel, row: BasketRow) => void;\n changeHotel: (hotel: string | Hotel) => boolean;\n\n setCurrentCurrency: (currency: string) => void;\n setCurrentLanguage: (lang: Language) => void;\n\n closeMemberSignupModal: () => void;\n openMemberSignupModal: () => void;\n signUserIn: (user: string) => void;\n\n refreshHotelFromApi: (hotelId: string) => void;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"CompanyContextType.type.js","sourceRoot":"/","sources":["src/contexts/CompanyContext/CompanyContextType.type.ts"],"names":[],"mappings":"","sourcesContent":["import { IPromotion } from 'models/Promotion/IPromotion.type';\nimport type BasketRow from '../../models/BasketRow';\nimport type { Company } from '../../models/Client/Hotel/Company';\nimport type { Hotel } from '../../models/Client/Hotel/Hotel';\nimport type { Language } from '../../providers/LanguageProvider';\n\nexport type CompanyContextType = Company & {\n selectedHotelID: string;\n\n memberOnlyModalPromotion: IPromotion | null;\n\n currentCurrency: string;\n currentLanguage: Language;\n\n signedInUser: string;\n isSigningIn: boolean;\n\n updateLowestPricePerNight: (hotelId: string | Hotel, row: BasketRow) => void;\n changeHotel: (hotel: string | Hotel) => boolean;\n\n setCurrentCurrency: (currency: string) => void;\n setCurrentLanguage: (lang: Language) => void;\n\n closeMemberSignupModal: () => void;\n openMemberSignupModal: (promotion?: IPromotion) => void;\n signUserIn: (user: string) => void;\n\n refreshHotelFromApi: (hotelId: string) => void;\n};\n"]}
|
|
@@ -24,6 +24,7 @@ const StepManager_1 = require("../../util/StepManager");
|
|
|
24
24
|
const StepHotel_1 = require("../../pages/steps/StepHotel/StepHotel");
|
|
25
25
|
const hooks_1 = require("@frontend/hooks");
|
|
26
26
|
const events_1 = require("../../events");
|
|
27
|
+
const MemberOnlyFenceSignUp_1 = require("events/actions/MemberOnlyFence/MemberOnlyFenceSignUp");
|
|
27
28
|
exports.CompanyContextWrapper = ({ configCompany: company, children }) => {
|
|
28
29
|
var _a, _b, _c, _d;
|
|
29
30
|
const beContext = react_1.useContext(contexts_1.BookingEngineContext);
|
|
@@ -44,6 +45,7 @@ exports.CompanyContextWrapper = ({ configCompany: company, children }) => {
|
|
|
44
45
|
const [selectedHotelID, setSelectedHotelID] = react_1.useState();
|
|
45
46
|
const [currentCurrency, setCurrentCurrency] = react_1.useState((_b = (_a = getSelectedHotel()) === null || _a === void 0 ? void 0 : _a.defaultCurrency) !== null && _b !== void 0 ? _b : 'AUD');
|
|
46
47
|
const [currentLanguage, setCurrentLanguage] = react_1.useState((_d = (_c = getSelectedHotel()) === null || _c === void 0 ? void 0 : _c.defaultLanguage) !== null && _d !== void 0 ? _d : LanguageProvider_1.Language.en_us);
|
|
48
|
+
const [memberOnlyModalPromotion, setMemberOnlyModalPromotion] = react_1.useState(null);
|
|
47
49
|
const [signedInUser, setSignedInUser] = react_1.useState(null);
|
|
48
50
|
const [isSigningIn, setIsSigningIn] = react_1.useState(false);
|
|
49
51
|
const { raise } = hooks_1.useEvent();
|
|
@@ -216,6 +218,7 @@ exports.CompanyContextWrapper = ({ configCompany: company, children }) => {
|
|
|
216
218
|
const workingContext = {
|
|
217
219
|
currentLanguage,
|
|
218
220
|
currentCurrency,
|
|
221
|
+
memberOnlyModalPromotion,
|
|
219
222
|
name,
|
|
220
223
|
companyShort,
|
|
221
224
|
logo,
|
|
@@ -264,11 +267,16 @@ exports.CompanyContextWrapper = ({ configCompany: company, children }) => {
|
|
|
264
267
|
},
|
|
265
268
|
closeMemberSignupModal: () => {
|
|
266
269
|
setIsSigningIn(false);
|
|
270
|
+
setMemberOnlyModalPromotion(null);
|
|
267
271
|
},
|
|
268
|
-
openMemberSignupModal: () => {
|
|
272
|
+
openMemberSignupModal: (promotion) => {
|
|
269
273
|
setIsSigningIn(true);
|
|
274
|
+
if (promotion) {
|
|
275
|
+
setMemberOnlyModalPromotion(promotion);
|
|
276
|
+
}
|
|
270
277
|
},
|
|
271
278
|
signUserIn: (user) => {
|
|
279
|
+
raise(new MemberOnlyFenceSignUp_1.MemberOnlyFenceSignUp(memberOnlyModalPromotion));
|
|
272
280
|
DataLayer_1.default.instance.sendMemberSignUp();
|
|
273
281
|
workingContext.closeMemberSignupModal();
|
|
274
282
|
localStorage.setItem('hotel' + selectedHotelID + 'user', user);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompanyContextWrapper.js","sourceRoot":"/","sources":["src/contexts/CompanyContext/CompanyContextWrapper.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { useState, useEffect, useContext, ReactChild } from 'react';\n\nimport { BookingEngineContext, CompanyContext } from '@frontend/contexts';\nimport type { ConfigCompany } from '../../models/Client/Hotel/Company';\nimport type { ConfigHotel, Hotel, InitialHotelDetailsEventPayload } from '../../models/Client/Hotel/Hotel';\nimport { Language } from '../../providers/LanguageProvider';\nimport { HotelDataSource } from '../../models/Client/Hotel/HotelDataSource.types';\nimport TimeHelper from '../../util/TimeHelper';\nimport API from '../../api/BookingAPI';\nimport BasketRow from '../../models/BasketRow';\nimport ColorProfile from '../../models/Client/Hotel/ColorProfile';\nimport CurrencyProvider from '../../providers/CurrencyProvider';\nimport StaticContextProvider from '../../providers/StaticContextProvider';\nimport DataLayer from '../../util/DataLayer';\nimport StepManager from '../../util/StepManager';\nimport { CompanyContextType } from './CompanyContextType.type';\nimport StepHotel from '../../pages/steps/StepHotel/StepHotel';\nimport { useEvent } from '@frontend/hooks';\nimport { InitialHotelDetailsEvent } from '../../events';\n\ninterface CompanyContextWrapperProps {\n children: ReactChild;\n configCompany: ConfigCompany;\n}\n\nexport const CompanyContextWrapper = ({ configCompany: company, children }: CompanyContextWrapperProps) => {\n const beContext = useContext(BookingEngineContext);\n\n const getSelectedHotel = () => {\n for (const hotel of hotels) {\n if (selectedHotelID + '' === hotel.hotelID + '') {\n return hotel;\n }\n }\n };\n\n const [name, setName] = useState(company.name);\n const [companyShort, setCompanyShort] = useState(company.companyShort);\n const [logo, setLogo] = useState(company.logo);\n const [colors, setColors] = useState(company.colors);\n const [hotels, setHotels] = useState<Hotel[]>(company.hotels as Hotel[]);\n const [logoLink, setLogoLink] = useState(company.logoLink);\n const [brandSuffix, setBrandSuffix] = useState(company.brandSuffix);\n\n const [selectedHotelID, setSelectedHotelID] = useState<string>();\n\n const [currentCurrency, setCurrentCurrency] = useState<string>(getSelectedHotel()?.defaultCurrency ?? 'AUD');\n const [currentLanguage, setCurrentLanguage] = useState<Language>(getSelectedHotel()?.defaultLanguage ?? Language.en_us);\n\n const [signedInUser, setSignedInUser] = useState(null);\n const [isSigningIn, setIsSigningIn] = useState(false);\n\n const { raise } = useEvent();\n\n const getHotelFromArrayWithId = (id: string, arrayOfHotels: Hotel[] | ConfigHotel[]) => {\n for (const nextHotel of arrayOfHotels) {\n if (nextHotel.hotelID + '' === id + '') {\n return nextHotel;\n }\n }\n };\n const getHotelFromID = (id: string): Hotel => {\n return getHotelFromArrayWithId(id, hotels) as Hotel;\n };\n\n const updateHotel = (newHotel: Hotel, callback?: (hotel: Hotel) => Hotel) => {\n setHotels((oldHotels) => {\n let modified = false;\n const newHotelArray = oldHotels.map((mappingHotel) => {\n if (mappingHotel.hotelID + '' === newHotel.hotelID + '') {\n modified = true;\n\n const hotelDetails: InitialHotelDetailsEventPayload = {\n name: newHotel.name,\n hotelID: newHotel.hotelID,\n hotelUrl: newHotel.hotelUrl,\n currency: newHotel.defaultCurrency,\n language: newHotel.defaultLanguage,\n address: newHotel.address,\n };\n\n const event = new InitialHotelDetailsEvent(hotelDetails);\n raise(event);\n\n if (callback) {\n return callback(mappingHotel);\n }\n\n return newHotel;\n }\n\n return mappingHotel;\n });\n\n if (!modified) {\n newHotelArray.push(newHotel);\n }\n\n return newHotelArray;\n });\n };\n\n const refreshHotelFromApi = React.useCallback(async (hotelId: string): Promise<Hotel> => {\n const currentHotelVersion: Hotel = getHotelFromID(hotelId) as Hotel;\n const newHotel: Hotel = {\n ...currentHotelVersion,\n };\n\n const details = await API.Hotel.fetchData(currentLanguage, newHotel);\n\n updateHotel(newHotel, (updatedHotel) => {\n updatedHotel.name = details.name;\n updatedHotel.address = details.address;\n\n updatedHotel.latitude = Number(details.latitude);\n updatedHotel.longitude = Number(details.longitude);\n updatedHotel.phone = details.phone;\n\n updatedHotel.checkInTime = TimeHelper.convert24To12hr(details.checkInTime);\n updatedHotel.checkOutTime = TimeHelper.convert24To12hr(details.checkOutTime);\n\n updatedHotel.paymentCardTypes = details.paymentCardTypes;\n updatedHotel.description = details.description;\n updatedHotel.locationDescription = details.locationDescription;\n updatedHotel.policies = details.policies;\n\n updatedHotel.hotelServices = details.hotelServices;\n updatedHotel.businessServices = details.businessServices;\n updatedHotel.rooms = details.rooms;\n\n updatedHotel.hasLoadedDetails = true;\n updatedHotel.dataSource = details.dataSource;\n\n updatedHotel.defaultCurrency = details.currencyCode;\n\n if (updatedHotel.dataSource === HotelDataSource.Roomstay) {\n if (details.logo) {\n updatedHotel.logo = details.logo;\n }\n\n if (details.colors) {\n updatedHotel.colors = details.colors as ColorProfile;\n }\n\n if (details.distanceUnitType) {\n updatedHotel.distanceUnitType = details.distanceUnitType;\n }\n\n if (details.weekdayStartsOn) {\n updatedHotel.startsWeekOnDay = details.weekdayStartsOn;\n }\n\n if (details.crossSellHotelIds) {\n updatedHotel.crossSellHotelIds = details.crossSellHotelIds;\n }\n }\n\n if (details.rooms) {\n const roomArray = Object.values(details.rooms);\n if (roomArray.length) {\n updatedHotel.maxOccupancy = roomArray.reduce((previousMax, current) => {\n return Math.max(previousMax, current.maxOccupancy);\n }, 0);\n }\n }\n\n return updatedHotel;\n });\n return newHotel;\n }, []);\n\n useEffect(() => {\n setName(company.name);\n setCompanyShort(company.companyShort);\n setLogo(company.logo);\n setColors(company.colors);\n setLogoLink(company.logoLink);\n setBrandSuffix(company.brandSuffix);\n\n DataLayer.instance.setBrandSuffix(company.brandSuffix);\n\n const configHotels = company.hotels.map((hotel: ConfigHotel) => {\n return { ...hotel, hasLoadedDetails: false, hotelID: `${hotel.hotelID}` } as Hotel;\n });\n setHotels(configHotels);\n\n if (company.selectedHotel) {\n const hotelId = typeof company.selectedHotel === 'string' ? company.selectedHotel : company.selectedHotel.hotelID + '';\n const targetHotel: ConfigHotel = getHotelFromArrayWithId(hotelId, configHotels);\n if (targetHotel) {\n setSelectedHotelID(hotelId);\n } else {\n // TODO: add centralized error logging\n console.log(`Unable to set selected hotel automatically. No Hotel found with ID: ${company.selectedHotel}`);\n }\n } else {\n /*\n We need to check if for some reason HotelStep isn't set as the first step,\n to automatically select a hotel, so engine doesn't fall over\n\n Possible TODO: We might need to do this on a new Step level, instead of here, as dynamically checking if StepHotel\n is first is probably not a great idea...\n */\n\n if (StepManager.getFirstStep() !== StepHotel) {\n setSelectedHotelID(configHotels[0].hotelID);\n console.log(`No selected hotel found - defaulting to ${configHotels[0].name}`);\n }\n }\n }, [company]);\n\n const onSelectedHotelIDChanged = React.useCallback(async () => {\n if (selectedHotelID) {\n const selectedHotel = await refreshHotelFromApi(selectedHotelID);\n\n if (selectedHotel) {\n CurrencyProvider.loadExchangeRates(selectedHotel.defaultCurrency ?? 'AUD');\n\n StaticContextProvider.MemberOnlyRateCodes = selectedHotel.memberOnlyRates ?? [];\n\n DataLayer.instance.setProviderHotelID(selectedHotel.providerHotelID);\n DataLayer.instance.setHotelName(selectedHotel.name);\n\n if (selectedHotel.datalayer?.gtmIds.length) {\n DataLayer.initialiseGTM(selectedHotel);\n }\n\n beContext.engine.getSessionProvider().setHotelID(selectedHotelID);\n\n setCurrentCurrency(selectedHotel.defaultCurrency);\n\n const existingUser = localStorage.getItem('hotel' + selectedHotel.hotelID + 'user');\n if (existingUser) {\n setSignedInUser(existingUser);\n }\n\n selectedHotel?.onLoad?.();\n }\n } else {\n DataLayer.instance.setProviderHotelID('');\n DataLayer.instance.setHotelName(name);\n if (company?.datalayer?.gtmIds.length) {\n DataLayer.initialiseGTM(company);\n }\n }\n }, [selectedHotelID]);\n\n useEffect(() => {\n onSelectedHotelIDChanged();\n }, [onSelectedHotelIDChanged]);\n\n useEffect(() => {\n const selectedHotel = getSelectedHotel();\n\n DataLayer.instance.setCurrencyCodes(currentCurrency, selectedHotel?.defaultCurrency ?? currentCurrency);\n }, [currentCurrency, selectedHotelID]);\n\n // TODO: Add Hotel Details fetch\n // TODO: re-do fetch on language change\n\n const workingContext: CompanyContextType = {\n currentLanguage,\n currentCurrency,\n\n name,\n companyShort,\n logo,\n logoLink,\n brandSuffix,\n\n colors,\n hotels,\n\n signedInUser,\n isSigningIn,\n\n selectedHotelID,\n\n updateLowestPricePerNight: (hotel: string | Hotel, row: BasketRow) => {\n const targetHotel = getHotelFromID(typeof hotel === 'string' ? hotel : hotel.hotelID + '');\n\n if (targetHotel && row) {\n const resetPriceToZero = (isLoading = false) => {\n updateHotel(targetHotel, (updatingHotel) => ({ ...updatingHotel, lowestPrice: { value: 0, isLoading } }));\n };\n\n resetPriceToZero(true);\n\n API.Availability.getCheapestPricePerDay(row.getStartDate(), row.getEndDate(), row.getAdults(), row.getChildren(), row.getPromoCode(), targetHotel.hotelID).then(\n (prices) => {\n let wasSet = false;\n if (prices) {\n let lowest = 0;\n const allPrices = Object.values(prices);\n if (allPrices?.length > 0) {\n lowest = Object.values(prices).reduce((prevValue, newValue) => (prevValue > newValue ? newValue : prevValue));\n\n wasSet = true;\n updateHotel(targetHotel, (updatingHotel) => ({ ...updatingHotel, lowestPrice: { value: lowest, isLoading: false } }));\n }\n }\n\n if (!wasSet) {\n resetPriceToZero();\n }\n }\n );\n }\n },\n\n changeHotel: (hotel: string | Hotel) => {\n const targetHotel = getHotelFromID(typeof hotel === 'string' ? hotel : hotel.hotelID + '');\n\n if (targetHotel) {\n setSelectedHotelID(targetHotel.hotelID);\n return true;\n } else {\n // TODO: add centralized error logging\n console.log(`Unable to set selected hotel automatically. No Hotel found with ID: ${company.selectedHotel}`);\n return false;\n }\n },\n\n closeMemberSignupModal: () => {\n setIsSigningIn(false);\n },\n openMemberSignupModal: () => {\n setIsSigningIn(true);\n },\n signUserIn: (user: string) => {\n DataLayer.instance.sendMemberSignUp();\n workingContext.closeMemberSignupModal();\n localStorage.setItem('hotel' + selectedHotelID + 'user', user);\n setSignedInUser(user);\n },\n\n setCurrentCurrency,\n setCurrentLanguage,\n\n refreshHotelFromApi,\n };\n\n return <CompanyContext.Provider value={workingContext}>{children}</CompanyContext.Provider>;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"CompanyContextWrapper.js","sourceRoot":"/","sources":["src/contexts/CompanyContext/CompanyContextWrapper.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { useState, useEffect, useContext, ReactChild } from 'react';\n\nimport { BookingEngineContext, CompanyContext } from '@frontend/contexts';\nimport type { ConfigCompany } from '../../models/Client/Hotel/Company';\nimport type { ConfigHotel, Hotel, InitialHotelDetailsEventPayload } from '../../models/Client/Hotel/Hotel';\nimport { Language } from '../../providers/LanguageProvider';\nimport { HotelDataSource } from '../../models/Client/Hotel/HotelDataSource.types';\nimport TimeHelper from '../../util/TimeHelper';\nimport API from '../../api/BookingAPI';\nimport BasketRow from '../../models/BasketRow';\nimport ColorProfile from '../../models/Client/Hotel/ColorProfile';\nimport CurrencyProvider from '../../providers/CurrencyProvider';\nimport StaticContextProvider from '../../providers/StaticContextProvider';\nimport DataLayer from '../../util/DataLayer';\nimport StepManager from '../../util/StepManager';\nimport { CompanyContextType } from './CompanyContextType.type';\nimport StepHotel from '../../pages/steps/StepHotel/StepHotel';\nimport { useEvent } from '@frontend/hooks';\nimport { InitialHotelDetailsEvent } from '../../events';\nimport { IPromotion } from 'models/Promotion/IPromotion.type';\nimport { MemberOnlyFenceSignUp } from 'events/actions/MemberOnlyFence/MemberOnlyFenceSignUp';\n\ninterface CompanyContextWrapperProps {\n children: ReactChild;\n configCompany: ConfigCompany;\n}\n\nexport const CompanyContextWrapper = ({ configCompany: company, children }: CompanyContextWrapperProps) => {\n const beContext = useContext(BookingEngineContext);\n\n const getSelectedHotel = () => {\n for (const hotel of hotels) {\n if (selectedHotelID + '' === hotel.hotelID + '') {\n return hotel;\n }\n }\n };\n\n const [name, setName] = useState(company.name);\n const [companyShort, setCompanyShort] = useState(company.companyShort);\n const [logo, setLogo] = useState(company.logo);\n const [colors, setColors] = useState(company.colors);\n const [hotels, setHotels] = useState<Hotel[]>(company.hotels as Hotel[]);\n const [logoLink, setLogoLink] = useState(company.logoLink);\n const [brandSuffix, setBrandSuffix] = useState(company.brandSuffix);\n\n const [selectedHotelID, setSelectedHotelID] = useState<string>();\n\n const [currentCurrency, setCurrentCurrency] = useState<string>(getSelectedHotel()?.defaultCurrency ?? 'AUD');\n const [currentLanguage, setCurrentLanguage] = useState<Language>(getSelectedHotel()?.defaultLanguage ?? Language.en_us);\n\n const [memberOnlyModalPromotion, setMemberOnlyModalPromotion] = useState<IPromotion>(null);\n\n const [signedInUser, setSignedInUser] = useState(null);\n const [isSigningIn, setIsSigningIn] = useState(false);\n\n const { raise } = useEvent();\n\n const getHotelFromArrayWithId = (id: string, arrayOfHotels: Hotel[] | ConfigHotel[]) => {\n for (const nextHotel of arrayOfHotels) {\n if (nextHotel.hotelID + '' === id + '') {\n return nextHotel;\n }\n }\n };\n const getHotelFromID = (id: string): Hotel => {\n return getHotelFromArrayWithId(id, hotels) as Hotel;\n };\n\n const updateHotel = (newHotel: Hotel, callback?: (hotel: Hotel) => Hotel) => {\n setHotels((oldHotels) => {\n let modified = false;\n const newHotelArray = oldHotels.map((mappingHotel) => {\n if (mappingHotel.hotelID + '' === newHotel.hotelID + '') {\n modified = true;\n\n const hotelDetails: InitialHotelDetailsEventPayload = {\n name: newHotel.name,\n hotelID: newHotel.hotelID,\n hotelUrl: newHotel.hotelUrl,\n currency: newHotel.defaultCurrency,\n language: newHotel.defaultLanguage,\n address: newHotel.address,\n };\n\n const event = new InitialHotelDetailsEvent(hotelDetails);\n raise(event);\n\n if (callback) {\n return callback(mappingHotel);\n }\n\n return newHotel;\n }\n\n return mappingHotel;\n });\n\n if (!modified) {\n newHotelArray.push(newHotel);\n }\n\n return newHotelArray;\n });\n };\n\n const refreshHotelFromApi = React.useCallback(async (hotelId: string): Promise<Hotel> => {\n const currentHotelVersion: Hotel = getHotelFromID(hotelId) as Hotel;\n const newHotel: Hotel = {\n ...currentHotelVersion,\n };\n\n const details = await API.Hotel.fetchData(currentLanguage, newHotel);\n\n updateHotel(newHotel, (updatedHotel) => {\n updatedHotel.name = details.name;\n updatedHotel.address = details.address;\n\n updatedHotel.latitude = Number(details.latitude);\n updatedHotel.longitude = Number(details.longitude);\n updatedHotel.phone = details.phone;\n\n updatedHotel.checkInTime = TimeHelper.convert24To12hr(details.checkInTime);\n updatedHotel.checkOutTime = TimeHelper.convert24To12hr(details.checkOutTime);\n\n updatedHotel.paymentCardTypes = details.paymentCardTypes;\n updatedHotel.description = details.description;\n updatedHotel.locationDescription = details.locationDescription;\n updatedHotel.policies = details.policies;\n\n updatedHotel.hotelServices = details.hotelServices;\n updatedHotel.businessServices = details.businessServices;\n updatedHotel.rooms = details.rooms;\n\n updatedHotel.hasLoadedDetails = true;\n updatedHotel.dataSource = details.dataSource;\n\n updatedHotel.defaultCurrency = details.currencyCode;\n\n if (updatedHotel.dataSource === HotelDataSource.Roomstay) {\n if (details.logo) {\n updatedHotel.logo = details.logo;\n }\n\n if (details.colors) {\n updatedHotel.colors = details.colors as ColorProfile;\n }\n\n if (details.distanceUnitType) {\n updatedHotel.distanceUnitType = details.distanceUnitType;\n }\n\n if (details.weekdayStartsOn) {\n updatedHotel.startsWeekOnDay = details.weekdayStartsOn;\n }\n\n if (details.crossSellHotelIds) {\n updatedHotel.crossSellHotelIds = details.crossSellHotelIds;\n }\n }\n\n if (details.rooms) {\n const roomArray = Object.values(details.rooms);\n if (roomArray.length) {\n updatedHotel.maxOccupancy = roomArray.reduce((previousMax, current) => {\n return Math.max(previousMax, current.maxOccupancy);\n }, 0);\n }\n }\n\n return updatedHotel;\n });\n return newHotel;\n }, []);\n\n useEffect(() => {\n setName(company.name);\n setCompanyShort(company.companyShort);\n setLogo(company.logo);\n setColors(company.colors);\n setLogoLink(company.logoLink);\n setBrandSuffix(company.brandSuffix);\n\n DataLayer.instance.setBrandSuffix(company.brandSuffix);\n\n const configHotels = company.hotels.map((hotel: ConfigHotel) => {\n return { ...hotel, hasLoadedDetails: false, hotelID: `${hotel.hotelID}` } as Hotel;\n });\n setHotels(configHotels);\n\n if (company.selectedHotel) {\n const hotelId = typeof company.selectedHotel === 'string' ? company.selectedHotel : company.selectedHotel.hotelID + '';\n const targetHotel: ConfigHotel = getHotelFromArrayWithId(hotelId, configHotels);\n if (targetHotel) {\n setSelectedHotelID(hotelId);\n } else {\n // TODO: add centralized error logging\n console.log(`Unable to set selected hotel automatically. No Hotel found with ID: ${company.selectedHotel}`);\n }\n } else {\n /*\n We need to check if for some reason HotelStep isn't set as the first step,\n to automatically select a hotel, so engine doesn't fall over\n\n Possible TODO: We might need to do this on a new Step level, instead of here, as dynamically checking if StepHotel\n is first is probably not a great idea...\n */\n\n if (StepManager.getFirstStep() !== StepHotel) {\n setSelectedHotelID(configHotels[0].hotelID);\n console.log(`No selected hotel found - defaulting to ${configHotels[0].name}`);\n }\n }\n }, [company]);\n\n const onSelectedHotelIDChanged = React.useCallback(async () => {\n if (selectedHotelID) {\n const selectedHotel = await refreshHotelFromApi(selectedHotelID);\n\n if (selectedHotel) {\n CurrencyProvider.loadExchangeRates(selectedHotel.defaultCurrency ?? 'AUD');\n\n StaticContextProvider.MemberOnlyRateCodes = selectedHotel.memberOnlyRates ?? [];\n\n DataLayer.instance.setProviderHotelID(selectedHotel.providerHotelID);\n DataLayer.instance.setHotelName(selectedHotel.name);\n\n if (selectedHotel.datalayer?.gtmIds.length) {\n DataLayer.initialiseGTM(selectedHotel);\n }\n\n beContext.engine.getSessionProvider().setHotelID(selectedHotelID);\n\n setCurrentCurrency(selectedHotel.defaultCurrency);\n\n const existingUser = localStorage.getItem('hotel' + selectedHotel.hotelID + 'user');\n if (existingUser) {\n setSignedInUser(existingUser);\n }\n\n selectedHotel?.onLoad?.();\n }\n } else {\n DataLayer.instance.setProviderHotelID('');\n DataLayer.instance.setHotelName(name);\n if (company?.datalayer?.gtmIds.length) {\n DataLayer.initialiseGTM(company);\n }\n }\n }, [selectedHotelID]);\n\n useEffect(() => {\n onSelectedHotelIDChanged();\n }, [onSelectedHotelIDChanged]);\n\n useEffect(() => {\n const selectedHotel = getSelectedHotel();\n\n DataLayer.instance.setCurrencyCodes(currentCurrency, selectedHotel?.defaultCurrency ?? currentCurrency);\n }, [currentCurrency, selectedHotelID]);\n\n // TODO: Add Hotel Details fetch\n // TODO: re-do fetch on language change\n\n const workingContext: CompanyContextType = {\n currentLanguage,\n currentCurrency,\n\n memberOnlyModalPromotion,\n\n name,\n companyShort,\n logo,\n logoLink,\n brandSuffix,\n\n colors,\n hotels,\n\n signedInUser,\n isSigningIn,\n\n selectedHotelID,\n\n updateLowestPricePerNight: (hotel: string | Hotel, row: BasketRow) => {\n const targetHotel = getHotelFromID(typeof hotel === 'string' ? hotel : hotel.hotelID + '');\n\n if (targetHotel && row) {\n const resetPriceToZero = (isLoading = false) => {\n updateHotel(targetHotel, (updatingHotel) => ({ ...updatingHotel, lowestPrice: { value: 0, isLoading } }));\n };\n\n resetPriceToZero(true);\n\n API.Availability.getCheapestPricePerDay(row.getStartDate(), row.getEndDate(), row.getAdults(), row.getChildren(), row.getPromoCode(), targetHotel.hotelID).then(\n (prices) => {\n let wasSet = false;\n if (prices) {\n let lowest = 0;\n const allPrices = Object.values(prices);\n if (allPrices?.length > 0) {\n lowest = Object.values(prices).reduce((prevValue, newValue) => (prevValue > newValue ? newValue : prevValue));\n\n wasSet = true;\n updateHotel(targetHotel, (updatingHotel) => ({ ...updatingHotel, lowestPrice: { value: lowest, isLoading: false } }));\n }\n }\n\n if (!wasSet) {\n resetPriceToZero();\n }\n }\n );\n }\n },\n\n changeHotel: (hotel: string | Hotel) => {\n const targetHotel = getHotelFromID(typeof hotel === 'string' ? hotel : hotel.hotelID + '');\n\n if (targetHotel) {\n setSelectedHotelID(targetHotel.hotelID);\n return true;\n } else {\n // TODO: add centralized error logging\n console.log(`Unable to set selected hotel automatically. No Hotel found with ID: ${company.selectedHotel}`);\n return false;\n }\n },\n\n closeMemberSignupModal: () => {\n setIsSigningIn(false);\n\n setMemberOnlyModalPromotion(null);\n },\n openMemberSignupModal: (promotion?: IPromotion) => {\n setIsSigningIn(true);\n\n if (promotion) {\n setMemberOnlyModalPromotion(promotion);\n }\n },\n signUserIn: (user: string) => {\n raise(new MemberOnlyFenceSignUp(memberOnlyModalPromotion));\n\n DataLayer.instance.sendMemberSignUp();\n workingContext.closeMemberSignupModal();\n localStorage.setItem('hotel' + selectedHotelID + 'user', user);\n setSignedInUser(user);\n },\n\n setCurrentCurrency,\n setCurrentLanguage,\n\n refreshHotelFromApi,\n };\n\n return <CompanyContext.Provider value={workingContext}>{children}</CompanyContext.Provider>;\n};\n"]}
|
|
@@ -7,7 +7,7 @@ export declare type RoomstayEventCallback = (event: RoomstayEvent) => Promise<vo
|
|
|
7
7
|
*/
|
|
8
8
|
declare class RoomstayEventManager {
|
|
9
9
|
raise(event: RoomstayEvent): Promise<void>;
|
|
10
|
-
addEvent(eventType: RoomstayEvent | string, callback: RoomstayEventCallback): boolean;
|
|
10
|
+
addEvent(eventType: RoomstayEvent | string, callback: RoomstayEventCallback, id?: string): boolean;
|
|
11
11
|
}
|
|
12
12
|
declare const manager: RoomstayEventManager;
|
|
13
13
|
export default manager;
|
|
@@ -27,9 +27,9 @@ class RoomstayEventManager {
|
|
|
27
27
|
}
|
|
28
28
|
const name = eventPrototype.constructor.getLabel();
|
|
29
29
|
if (GlobalRoomstayEvents[name]) {
|
|
30
|
-
for (const
|
|
30
|
+
for (const storedEvent of GlobalRoomstayEvents[name]) {
|
|
31
31
|
try {
|
|
32
|
-
yield callback(event);
|
|
32
|
+
yield storedEvent.callback(event);
|
|
33
33
|
}
|
|
34
34
|
catch (ex) {
|
|
35
35
|
// TODO: Custom logger
|
|
@@ -39,7 +39,7 @@ class RoomstayEventManager {
|
|
|
39
39
|
}
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
|
-
addEvent(eventType, callback) {
|
|
42
|
+
addEvent(eventType, callback, id) {
|
|
43
43
|
var _a, _b;
|
|
44
44
|
if (!callback || typeof callback !== 'function') {
|
|
45
45
|
return false;
|
|
@@ -58,7 +58,26 @@ class RoomstayEventManager {
|
|
|
58
58
|
if (!Object.prototype.hasOwnProperty.call(GlobalRoomstayEvents, name)) {
|
|
59
59
|
GlobalRoomstayEvents[name] = [];
|
|
60
60
|
}
|
|
61
|
-
|
|
61
|
+
const event = {
|
|
62
|
+
id: null,
|
|
63
|
+
callback,
|
|
64
|
+
};
|
|
65
|
+
if (id && typeof id === 'string') {
|
|
66
|
+
event.id = id;
|
|
67
|
+
const eventIndex = (() => {
|
|
68
|
+
const numOfEvents = GlobalRoomstayEvents[name].length;
|
|
69
|
+
for (let i = 0; i < numOfEvents; i++) {
|
|
70
|
+
if (GlobalRoomstayEvents[name][i].id === id) {
|
|
71
|
+
return i;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return numOfEvents;
|
|
75
|
+
})();
|
|
76
|
+
GlobalRoomstayEvents[name][eventIndex] = event;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
GlobalRoomstayEvents[name].push(event);
|
|
80
|
+
}
|
|
62
81
|
return true;
|
|
63
82
|
}
|
|
64
83
|
catch (ex) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoomstayEventManager.js","sourceRoot":"/","sources":["src/events/RoomstayEventManager.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2DAAwD;
|
|
1
|
+
{"version":3,"file":"RoomstayEventManager.js","sourceRoot":"/","sources":["src/events/RoomstayEventManager.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2DAAwD;AAUxD,MAAM,oBAAoB,GAAgD,EAAE,CAAC;AAE7E;;;;GAIG;AACH,MAAM,oBAAoB;IACT,KAAK,CAAC,KAAoB;;;YACnC,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAEpD,IAAI,CAAC,cAAc,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,IAAI,QAAC,MAAA,cAAc,CAAC,WAAW,EAAC,QAAQ,mDAAI,EAAE;gBACrI,sBAAsB;gBACtB,MAAM,IAAI,6BAAa,CAAC,mDAAmD,CAAC,CAAC;aAChF;YAED,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YAEnD,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE;gBAC5B,KAAK,MAAM,WAAW,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE;oBAClD,IAAI;wBACA,MAAM,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;qBACrC;oBAAC,OAAO,EAAE,EAAE;wBACT,sBAAsB;wBACtB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;qBACrB;iBACJ;aACJ;;KACJ;IAEM,QAAQ,CAAC,SAAiC,EAAE,QAA+B,EAAE,EAAW;;QAC3F,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;YAC7C,OAAO,KAAK,CAAC;SAChB;QAED,IAAI;YACA,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;gBAC/B,IAAI,GAAG,SAAS,CAAC;aACpB;iBAAM;gBACH,IAAI,SAAG,MAAC,SAAkC,EAAC,QAAQ,kDAAI,CAAC;aAC3D;YAED,IAAI,CAAC,IAAI,EAAE;gBACP,OAAO,KAAK,CAAC;aAChB;YAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,EAAE;gBACnE,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;aACnC;YAED,MAAM,KAAK,GAA0B;gBACjC,EAAE,EAAE,IAAI;gBACR,QAAQ;aACX,CAAC;YAEF,IAAI,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;gBAC9B,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;gBAEd,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE;oBACrB,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;oBAEtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;wBAClC,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;4BACzC,OAAO,CAAC,CAAC;yBACZ;qBACJ;oBAED,OAAO,WAAW,CAAC;gBACvB,CAAC,CAAC,EAAE,CAAC;gBAEL,oBAAoB,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;aAClD;iBAAM;gBACH,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1C;YAED,OAAO,IAAI,CAAC;SACf;QAAC,OAAO,EAAE,EAAE;YACT,oDAAoD;YACpD,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;CACJ;AAED,MAAM,OAAO,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAE3C,kBAAe,OAAO,CAAC","sourcesContent":["import { RoomstayError } from '../errors/RoomstayError';\nimport { RoomstayEvent } from './RoomstayEvent';\n\nexport type RoomstayEventCallback = (event: RoomstayEvent) => Promise<void | boolean>;\n\ntype RoomstayEventSortType = {\n id?: string;\n callback: RoomstayEventCallback;\n};\n\nconst GlobalRoomstayEvents: { [name: string]: RoomstayEventSortType[] } = {};\n\n/**\n * Roomstay event manager, always used as a global object, but wrapped in a class.\n *\n * Future improvements - Adding on fail / on\n */\nclass RoomstayEventManager {\n public async raise(event: RoomstayEvent) {\n const eventPrototype = Object.getPrototypeOf(event);\n\n if (!eventPrototype || !Object.prototype.hasOwnProperty.call(eventPrototype, 'constructor') || !eventPrototype.constructor.getLabel?.()) {\n // TODO: Custom logger\n throw new RoomstayError('Failed to raise event as object passed is invalid');\n }\n\n const name = eventPrototype.constructor.getLabel();\n\n if (GlobalRoomstayEvents[name]) {\n for (const storedEvent of GlobalRoomstayEvents[name]) {\n try {\n await storedEvent.callback(event);\n } catch (ex) {\n // TODO: Custom logger\n console.error(ex);\n }\n }\n }\n }\n\n public addEvent(eventType: RoomstayEvent | string, callback: RoomstayEventCallback, id?: string) {\n if (!callback || typeof callback !== 'function') {\n return false;\n }\n\n try {\n let name = '';\n if (typeof eventType === 'string') {\n name = eventType;\n } else {\n name = (eventType as typeof RoomstayEvent).getLabel?.();\n }\n\n if (!name) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(GlobalRoomstayEvents, name)) {\n GlobalRoomstayEvents[name] = [];\n }\n\n const event: RoomstayEventSortType = {\n id: null,\n callback,\n };\n\n if (id && typeof id === 'string') {\n event.id = id;\n\n const eventIndex = (() => {\n const numOfEvents = GlobalRoomstayEvents[name].length;\n\n for (let i = 0; i < numOfEvents; i++) {\n if (GlobalRoomstayEvents[name][i].id === id) {\n return i;\n }\n }\n\n return numOfEvents;\n })();\n\n GlobalRoomstayEvents[name][eventIndex] = event;\n } else {\n GlobalRoomstayEvents[name].push(event);\n }\n\n return true;\n } catch (ex) {\n // TODO: Add logging if user enters something whack\n return false;\n }\n }\n}\n\nconst manager = new RoomstayEventManager();\n\nexport default manager;\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IPromotion } from 'models/Promotion/IPromotion.type';
|
|
2
|
+
import { RoomstayEvent } from '../../RoomstayEvent';
|
|
3
|
+
export declare class MemberOnlyFenceSignUp extends RoomstayEvent {
|
|
4
|
+
promotion?: IPromotion;
|
|
5
|
+
constructor(promotion?: IPromotion);
|
|
6
|
+
static getLabel(): string;
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MemberOnlyFenceSignUp = void 0;
|
|
4
|
+
const RoomstayEvent_1 = require("../../RoomstayEvent");
|
|
5
|
+
class MemberOnlyFenceSignUp extends RoomstayEvent_1.RoomstayEvent {
|
|
6
|
+
constructor(promotion) {
|
|
7
|
+
super();
|
|
8
|
+
this.promotion = promotion;
|
|
9
|
+
}
|
|
10
|
+
static getLabel() {
|
|
11
|
+
return 'MemberOnlyFence/SignUp';
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.MemberOnlyFenceSignUp = MemberOnlyFenceSignUp;
|
|
15
|
+
//# sourceMappingURL=MemberOnlyFenceSignUp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemberOnlyFenceSignUp.js","sourceRoot":"/","sources":["src/events/actions/MemberOnlyFence/MemberOnlyFenceSignUp.ts"],"names":[],"mappings":";;;AACA,uDAAoD;AAEpD,MAAa,qBAAsB,SAAQ,6BAAa;IAEpD,YAAmB,SAAsB;QACrC,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,QAAQ;QACX,OAAO,wBAAwB,CAAC;IACpC,CAAC;CACJ;AAXD,sDAWC","sourcesContent":["import { IPromotion } from 'models/Promotion/IPromotion.type';\nimport { RoomstayEvent } from '../../RoomstayEvent';\n\nexport class MemberOnlyFenceSignUp extends RoomstayEvent {\n public promotion?: IPromotion;\n public constructor(promotion?: IPromotion) {\n super();\n\n this.promotion = promotion;\n }\n\n static getLabel(): string {\n return 'MemberOnlyFence/SignUp';\n }\n}\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IPromotion } from 'models/Promotion/IPromotion.type';
|
|
2
|
+
import { RoomstayEvent } from '../../RoomstayEvent';
|
|
3
|
+
export declare class PromotionAddEvent extends RoomstayEvent {
|
|
4
|
+
promotion: IPromotion;
|
|
5
|
+
constructor(promotion: IPromotion);
|
|
6
|
+
static getLabel(): string;
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PromotionAddEvent = void 0;
|
|
4
|
+
const RoomstayEvent_1 = require("../../RoomstayEvent");
|
|
5
|
+
class PromotionAddEvent extends RoomstayEvent_1.RoomstayEvent {
|
|
6
|
+
constructor(promotion) {
|
|
7
|
+
super();
|
|
8
|
+
this.promotion = promotion;
|
|
9
|
+
}
|
|
10
|
+
static getLabel() {
|
|
11
|
+
return 'Promotion/Add';
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.PromotionAddEvent = PromotionAddEvent;
|
|
15
|
+
//# sourceMappingURL=PromotionAddedEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PromotionAddedEvent.js","sourceRoot":"/","sources":["src/events/actions/Promotion/PromotionAddedEvent.ts"],"names":[],"mappings":";;;AACA,uDAAoD;AAEpD,MAAa,iBAAkB,SAAQ,6BAAa;IAEhD,YAAmB,SAAqB;QACpC,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,QAAQ;QACX,OAAO,eAAe,CAAC;IAC3B,CAAC;CACJ;AAXD,8CAWC","sourcesContent":["import { IPromotion } from 'models/Promotion/IPromotion.type';\nimport { RoomstayEvent } from '../../RoomstayEvent';\n\nexport class PromotionAddEvent extends RoomstayEvent {\n public promotion: IPromotion;\n public constructor(promotion: IPromotion) {\n super();\n\n this.promotion = promotion;\n }\n\n static getLabel(): string {\n return 'Promotion/Add';\n }\n}\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IPromotion } from 'models/Promotion/IPromotion.type';
|
|
2
|
+
import { RoomstayEvent } from '../../RoomstayEvent';
|
|
3
|
+
export declare class PromotionClickedEvent extends RoomstayEvent {
|
|
4
|
+
promotion: IPromotion;
|
|
5
|
+
constructor(promotion: IPromotion);
|
|
6
|
+
static getLabel(): string;
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PromotionClickedEvent = void 0;
|
|
4
|
+
const RoomstayEvent_1 = require("../../RoomstayEvent");
|
|
5
|
+
class PromotionClickedEvent extends RoomstayEvent_1.RoomstayEvent {
|
|
6
|
+
constructor(promotion) {
|
|
7
|
+
super();
|
|
8
|
+
this.promotion = promotion;
|
|
9
|
+
}
|
|
10
|
+
static getLabel() {
|
|
11
|
+
return 'Promotion/Click';
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.PromotionClickedEvent = PromotionClickedEvent;
|
|
15
|
+
//# sourceMappingURL=PromotionClickedEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PromotionClickedEvent.js","sourceRoot":"/","sources":["src/events/actions/Promotion/PromotionClickedEvent.ts"],"names":[],"mappings":";;;AACA,uDAAoD;AAEpD,MAAa,qBAAsB,SAAQ,6BAAa;IAEpD,YAAmB,SAAqB;QACpC,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,QAAQ;QACX,OAAO,iBAAiB,CAAC;IAC7B,CAAC;CACJ;AAXD,sDAWC","sourcesContent":["import { IPromotion } from 'models/Promotion/IPromotion.type';\nimport { RoomstayEvent } from '../../RoomstayEvent';\n\nexport class PromotionClickedEvent extends RoomstayEvent {\n public promotion: IPromotion;\n public constructor(promotion: IPromotion) {\n super();\n\n this.promotion = promotion;\n }\n\n static getLabel(): string {\n return 'Promotion/Click';\n }\n}\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IPromotion } from 'models/Promotion/IPromotion.type';
|
|
2
|
+
import { RoomstayEvent } from '../../RoomstayEvent';
|
|
3
|
+
export declare class PromotionRemoveEvent extends RoomstayEvent {
|
|
4
|
+
promotion: IPromotion;
|
|
5
|
+
constructor(promotion: IPromotion);
|
|
6
|
+
static getLabel(): string;
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PromotionRemoveEvent = void 0;
|
|
4
|
+
const RoomstayEvent_1 = require("../../RoomstayEvent");
|
|
5
|
+
class PromotionRemoveEvent extends RoomstayEvent_1.RoomstayEvent {
|
|
6
|
+
constructor(promotion) {
|
|
7
|
+
super();
|
|
8
|
+
this.promotion = promotion;
|
|
9
|
+
}
|
|
10
|
+
static getLabel() {
|
|
11
|
+
return 'Promotion/Remove';
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.PromotionRemoveEvent = PromotionRemoveEvent;
|
|
15
|
+
//# sourceMappingURL=PromotionRemovedEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PromotionRemovedEvent.js","sourceRoot":"/","sources":["src/events/actions/Promotion/PromotionRemovedEvent.ts"],"names":[],"mappings":";;;AACA,uDAAoD;AAEpD,MAAa,oBAAqB,SAAQ,6BAAa;IAEnD,YAAmB,SAAqB;QACpC,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,QAAQ;QACX,OAAO,kBAAkB,CAAC;IAC9B,CAAC;CACJ;AAXD,oDAWC","sourcesContent":["import { IPromotion } from 'models/Promotion/IPromotion.type';\nimport { RoomstayEvent } from '../../RoomstayEvent';\n\nexport class PromotionRemoveEvent extends RoomstayEvent {\n public promotion: IPromotion;\n public constructor(promotion: IPromotion) {\n super();\n\n this.promotion = promotion;\n }\n\n static getLabel(): string {\n return 'Promotion/Remove';\n }\n}\n"]}
|
package/dist/src/events/index.js
CHANGED
|
@@ -23,4 +23,5 @@ __exportStar(require("./actions/RemoveFromCartEvent"), exports);
|
|
|
23
23
|
__exportStar(require("./actions/InitialHotelDetailsEvent"), exports);
|
|
24
24
|
__exportStar(require("./actions/GuestSearchEvent"), exports);
|
|
25
25
|
__exportStar(require("./actions/RoomListSearchEvent"), exports);
|
|
26
|
+
__exportStar(require("./actions/Promotion/PromotionAddedEvent"), exports);
|
|
26
27
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"/","sources":["src/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gEAA8C;AAC9C,4DAA0C;AAC1C,iEAA+C;AAC/C,6DAA2C;AAC3C,6DAA2C;AAC3C,8DAA4C;AAC5C,mEAAiD;AACjD,0EAAwD;AAExD,2DAAyC;AACzC,gEAA8C;AAC9C,qEAAmD;AACnD,6DAA2C;AAC3C,gEAA8C","sourcesContent":["export * from './views/StepCheckoutViewEvent';\nexport * from './views/StepDateViewEvent';\nexport * from './views/StepHotelInfoViewEvent';\nexport * from './views/StepHotelViewEvent';\nexport * from './views/StepAddonViewEvent';\nexport * from './views/StepThanksViewEvent';\nexport * from './views/FindReservationViewEvent';\nexport * from './views/FindReservationResultsViewEvent';\n\nexport * from './actions/AddToCartEvent';\nexport * from './actions/RemoveFromCartEvent';\nexport * from './actions/InitialHotelDetailsEvent';\nexport * from './actions/GuestSearchEvent';\nexport * from './actions/RoomListSearchEvent';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/","sources":["src/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gEAA8C;AAC9C,4DAA0C;AAC1C,iEAA+C;AAC/C,6DAA2C;AAC3C,6DAA2C;AAC3C,8DAA4C;AAC5C,mEAAiD;AACjD,0EAAwD;AAExD,2DAAyC;AACzC,gEAA8C;AAC9C,qEAAmD;AACnD,6DAA2C;AAC3C,gEAA8C;AAE9C,0EAAwD","sourcesContent":["export * from './views/StepCheckoutViewEvent';\nexport * from './views/StepDateViewEvent';\nexport * from './views/StepHotelInfoViewEvent';\nexport * from './views/StepHotelViewEvent';\nexport * from './views/StepAddonViewEvent';\nexport * from './views/StepThanksViewEvent';\nexport * from './views/FindReservationViewEvent';\nexport * from './views/FindReservationResultsViewEvent';\n\nexport * from './actions/AddToCartEvent';\nexport * from './actions/RemoveFromCartEvent';\nexport * from './actions/InitialHotelDetailsEvent';\nexport * from './actions/GuestSearchEvent';\nexport * from './actions/RoomListSearchEvent';\n\nexport * from './actions/Promotion/PromotionAddedEvent';\n"]}
|
|
@@ -2,5 +2,5 @@ import { RoomstayEvent } from '../events/RoomstayEvent';
|
|
|
2
2
|
import { RoomstayEventCallback } from '../events/RoomstayEventManager';
|
|
3
3
|
export declare const useEvent: () => {
|
|
4
4
|
raise: (event: RoomstayEvent) => void;
|
|
5
|
-
on: (eventType: RoomstayEvent | string, callback: RoomstayEventCallback) => void;
|
|
5
|
+
on: (eventType: RoomstayEvent | string, callback: RoomstayEventCallback, id?: string) => void;
|
|
6
6
|
};
|
|
@@ -8,8 +8,8 @@ exports.useEvent = () => {
|
|
|
8
8
|
raise: (event) => {
|
|
9
9
|
RoomstayEventManager_1.default.raise(event);
|
|
10
10
|
},
|
|
11
|
-
on: (eventType, callback) => {
|
|
12
|
-
RoomstayEventManager_1.default.addEvent(eventType, callback);
|
|
11
|
+
on: (eventType, callback, id) => {
|
|
12
|
+
RoomstayEventManager_1.default.addEvent(eventType, callback, id);
|
|
13
13
|
},
|
|
14
14
|
};
|
|
15
15
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventHook.js","sourceRoot":"/","sources":["src/hooks/EventHook.tsx"],"names":[],"mappings":";;;AACA,yEAAgF;AAEhF,8BAA8B;AACjB,QAAA,QAAQ,GAAG,GAAG,EAAE;IACzB,OAAO;QACH,KAAK,EAAE,CAAC,KAAoB,EAAE,EAAE;YAC5B,8BAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,EAAE,EAAE,CAAC,SAAiC,EAAE,QAA+B,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"EventHook.js","sourceRoot":"/","sources":["src/hooks/EventHook.tsx"],"names":[],"mappings":";;;AACA,yEAAgF;AAEhF,8BAA8B;AACjB,QAAA,QAAQ,GAAG,GAAG,EAAE;IACzB,OAAO;QACH,KAAK,EAAE,CAAC,KAAoB,EAAE,EAAE;YAC5B,8BAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,EAAE,EAAE,CAAC,SAAiC,EAAE,QAA+B,EAAE,EAAW,EAAE,EAAE;YACpF,8BAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC9C,CAAC;KACJ,CAAC;AACN,CAAC,CAAC","sourcesContent":["import { RoomstayEvent } from '../events/RoomstayEvent';\nimport manager, { RoomstayEventCallback } from '../events/RoomstayEventManager';\n\n// Thanks to Cerz for the idea\nexport const useEvent = () => {\n return {\n raise: (event: RoomstayEvent) => {\n manager.raise(event);\n },\n on: (eventType: RoomstayEvent | string, callback: RoomstayEventCallback, id?: string) => {\n manager.addEvent(eventType, callback, id);\n },\n };\n};\n"]}
|