From a1f1531fc2496bdd6dd106239a80fed469e27dea Mon Sep 17 00:00:00 2001 From: Pontus Dreij Date: Tue, 19 Nov 2024 14:25:48 +0100 Subject: [PATCH 1/7] fix(SW-925): Don't throw error if api for packages throws error --- server/routers/hotels/output.ts | 38 +++++++++++++++++---------------- server/routers/hotels/query.ts | 3 +-- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/server/routers/hotels/output.ts b/server/routers/hotels/output.ts index d383d5628..f9a5710de 100644 --- a/server/routers/hotels/output.ts +++ b/server/routers/hotels/output.ts @@ -864,22 +864,24 @@ export const packagesSchema = z.object({ export const getRoomPackagesSchema = z .object({ - data: z.object({ - attributes: z.object({ - hotelId: z.number(), - packages: z.array(packagesSchema).optional().default([]), - }), - relationships: z - .object({ - links: z.array( - z.object({ - url: z.string(), - type: z.string(), - }) - ), - }) - .optional(), - type: z.string(), - }), + data: z + .object({ + attributes: z.object({ + hotelId: z.number(), + packages: z.array(packagesSchema).optional().default([]), + }), + relationships: z + .object({ + links: z.array( + z.object({ + url: z.string(), + type: z.string(), + }) + ), + }) + .optional(), + type: z.string(), + }) + .optional(), }) - .transform((data) => data.data.attributes.packages) + .transform((data) => data.data?.attributes?.packages ?? []) diff --git a/server/routers/hotels/query.ts b/server/routers/hotels/query.ts index 34a1b3722..ddb2b3a31 100644 --- a/server/routers/hotels/query.ts +++ b/server/routers/hotels/query.ts @@ -939,12 +939,11 @@ export const hotelQueryRouter = router({ "api.hotels.packages error", JSON.stringify({ query: { hotelId, params } }) ) - throw serverErrorByStatus(apiResponse.status, apiResponse) } const apiJson = await apiResponse.json() const validatedPackagesData = getRoomPackagesSchema.safeParse(apiJson) - + console.log("validatedPackagesData", validatedPackagesData) if (!validatedPackagesData.success) { getHotelFailCounter.add(1, { hotelId, From a0627b9ac521037a504eb28acc3cd5f22a445a5c Mon Sep 17 00:00:00 2001 From: Pontus Dreij Date: Tue, 19 Nov 2024 14:28:00 +0100 Subject: [PATCH 2/7] fix(SW-925) remove log --- server/routers/hotels/query.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/server/routers/hotels/query.ts b/server/routers/hotels/query.ts index ddb2b3a31..eb31aacb6 100644 --- a/server/routers/hotels/query.ts +++ b/server/routers/hotels/query.ts @@ -943,7 +943,6 @@ export const hotelQueryRouter = router({ const apiJson = await apiResponse.json() const validatedPackagesData = getRoomPackagesSchema.safeParse(apiJson) - console.log("validatedPackagesData", validatedPackagesData) if (!validatedPackagesData.success) { getHotelFailCounter.add(1, { hotelId, From 10d2e094e4784e2f45f000eb3e22788d45506a37 Mon Sep 17 00:00:00 2001 From: Pontus Dreij Date: Wed, 20 Nov 2024 09:46:44 +0100 Subject: [PATCH 3/7] fix(SW-925) Fix default packages --- .../(standard)/select-rate/page.tsx | 2 +- .../SelectRate/RoomFilter/index.tsx | 1 + .../SelectRate/RoomSelection/index.tsx | 6 ++--- .../SelectRate/Rooms/index.tsx | 23 +++++++++++++++---- .../hotelReservation/selectRate/roomFilter.ts | 12 ++++++---- .../selectRate/roomSelection.ts | 4 ++-- 6 files changed, 32 insertions(+), 16 deletions(-) diff --git a/app/[lang]/(live)/(public)/hotelreservation/(standard)/select-rate/page.tsx b/app/[lang]/(live)/(public)/hotelreservation/(standard)/select-rate/page.tsx index fd9db4d6c..f8632f938 100644 --- a/app/[lang]/(live)/(public)/hotelreservation/(standard)/select-rate/page.tsx +++ b/app/[lang]/(live)/(public)/hotelreservation/(standard)/select-rate/page.tsx @@ -108,7 +108,7 @@ export default async function SelectRatePage({ roomsAvailability={roomsAvailability} roomCategories={roomCategories ?? []} user={user} - packages={packages ?? []} + availablePackages={packages ?? []} /> ) diff --git a/components/HotelReservation/SelectRate/RoomFilter/index.tsx b/components/HotelReservation/SelectRate/RoomFilter/index.tsx index a07e8353f..2620d3efe 100644 --- a/components/HotelReservation/SelectRate/RoomFilter/index.tsx +++ b/components/HotelReservation/SelectRate/RoomFilter/index.tsx @@ -26,6 +26,7 @@ export default function RoomFilter({ onFilter, filterOptions, }: RoomFilterProps) { + console.log(filterOptions) const initialFilterValues = useMemo( () => filterOptions.reduce( diff --git a/components/HotelReservation/SelectRate/RoomSelection/index.tsx b/components/HotelReservation/SelectRate/RoomSelection/index.tsx index b3624552f..75759459f 100644 --- a/components/HotelReservation/SelectRate/RoomSelection/index.tsx +++ b/components/HotelReservation/SelectRate/RoomSelection/index.tsx @@ -14,7 +14,7 @@ export default function RoomSelection({ roomsAvailability, roomCategories, user, - packages, + availablePackages, selectedPackages, setRateSummary, rateSummary, @@ -72,7 +72,7 @@ export default function RoomSelection({ roomCategories={roomCategories} handleSelectRate={setRateSummary} selectedPackages={selectedPackages} - packages={packages} + packages={availablePackages} /> ))} @@ -81,7 +81,7 @@ export default function RoomSelection({ )} diff --git a/components/HotelReservation/SelectRate/Rooms/index.tsx b/components/HotelReservation/SelectRate/Rooms/index.tsx index 626664988..06e0d954d 100644 --- a/components/HotelReservation/SelectRate/Rooms/index.tsx +++ b/components/HotelReservation/SelectRate/Rooms/index.tsx @@ -11,6 +11,7 @@ import { filterDuplicateRoomTypesByLowestPrice } from "./utils" import styles from "./rooms.module.css" import { + DefaultFilterOptions, RoomPackageCodeEnum, type RoomPackageCodes, } from "@/types/components/hotelReservation/selectRate/roomFilter" @@ -25,8 +26,9 @@ export default function Rooms({ roomsAvailability, roomCategories = [], user, - packages, + availablePackages, }: SelectRateProps) { + console.log(availablePackages) const visibleRooms: RoomConfiguration[] = filterDuplicateRoomTypesByLowestPrice(roomsAvailability.roomConfigurations) const [rateSummary, setRateSummary] = useState(null) @@ -47,6 +49,15 @@ export default function Rooms({ (state) => state.setRoomsAvailable ) + const defaultPackages: DefaultFilterOptions[] = [ + { code: RoomPackageCodeEnum.PET_ROOM, description: "Pet friendly" }, + { code: RoomPackageCodeEnum.ALLERGY_ROOM, description: "Allergy friendly" }, + { + code: RoomPackageCodeEnum.ACCESSIBILITY_ROOM, + description: "Accessibility", + }, + ] + const handleFilter = useCallback( (filter: Record) => { const filteredPackages = Object.keys(filter).filter( @@ -104,7 +115,9 @@ export default function Rooms({ const petRoomPackage = (filteredPackages.includes(RoomPackageCodeEnum.PET_ROOM) && - packages.find((pkg) => pkg.code === RoomPackageCodeEnum.PET_ROOM)) || + availablePackages.find( + (pkg) => pkg.code === RoomPackageCodeEnum.PET_ROOM + )) || undefined const features = filteredRooms.find((room) => @@ -124,7 +137,7 @@ export default function Rooms({ roomsAvailability, visibleRooms, rateSummary, - packages, + availablePackages, noRoomsAvailable, setNoRoomsAvailable, setRoomsAvailable, @@ -136,13 +149,13 @@ export default function Rooms({ ) => void - filterOptions: RoomPackageData + filterOptions: DefaultFilterOptions[] } export type RoomPackage = z.output diff --git a/types/components/hotelReservation/selectRate/roomSelection.ts b/types/components/hotelReservation/selectRate/roomSelection.ts index 163bfd6fa..cd1e48775 100644 --- a/types/components/hotelReservation/selectRate/roomSelection.ts +++ b/types/components/hotelReservation/selectRate/roomSelection.ts @@ -8,7 +8,7 @@ export interface RoomSelectionProps { roomsAvailability: RoomsAvailability roomCategories: RoomData[] user: SafeUser - packages: RoomPackageData | undefined + availablePackages: RoomPackageData | undefined selectedPackages: RoomPackageCodes[] setRateSummary: (rateSummary: Rate) => void rateSummary: Rate | null @@ -18,5 +18,5 @@ export interface SelectRateProps { roomsAvailability: RoomsAvailability roomCategories: RoomData[] user: SafeUser - packages: RoomPackageData + availablePackages: RoomPackageData } From 37098d23cf187de63e4ed73362fd6dc9eed02336 Mon Sep 17 00:00:00 2001 From: Pontus Dreij Date: Wed, 20 Nov 2024 10:14:06 +0100 Subject: [PATCH 4/7] fix(SW-925) disable filter if there are no availablePackages --- .../SelectRate/RoomFilter/index.tsx | 7 +++--- .../SelectRate/Rooms/index.tsx | 23 +++++++++++++++---- .../Form/FilterChip/_Chip/chip.module.css | 9 +++++--- .../hotelReservation/selectRate/roomFilter.ts | 1 + 4 files changed, 30 insertions(+), 10 deletions(-) diff --git a/components/HotelReservation/SelectRate/RoomFilter/index.tsx b/components/HotelReservation/SelectRate/RoomFilter/index.tsx index 2620d3efe..48c73cac2 100644 --- a/components/HotelReservation/SelectRate/RoomFilter/index.tsx +++ b/components/HotelReservation/SelectRate/RoomFilter/index.tsx @@ -26,7 +26,6 @@ export default function RoomFilter({ onFilter, filterOptions, }: RoomFilterProps) { - console.log(filterOptions) const initialFilterValues = useMemo( () => filterOptions.reduce( @@ -100,11 +99,13 @@ export default function RoomFilter({
{filterOptions.map((option) => { - const { code, description } = option + const { code, description, itemCode } = option const isPetRoom = code === RoomPackageCodeEnum.PET_ROOM const isAllergyRoom = code === RoomPackageCodeEnum.ALLERGY_ROOM const isDisabled = - (isAllergyRoom && petFriendly) || (isPetRoom && allergyFriendly) + (isAllergyRoom && petFriendly) || + (isPetRoom && allergyFriendly) || + !itemCode const checkboxChip = ( (null) @@ -50,11 +49,26 @@ export default function Rooms({ ) const defaultPackages: DefaultFilterOptions[] = [ - { code: RoomPackageCodeEnum.PET_ROOM, description: "Pet friendly" }, - { code: RoomPackageCodeEnum.ALLERGY_ROOM, description: "Allergy friendly" }, { code: RoomPackageCodeEnum.ACCESSIBILITY_ROOM, - description: "Accessibility", + description: "Accessible Room", + itemCode: availablePackages.find( + (pkg) => pkg.code === RoomPackageCodeEnum.ACCESSIBILITY_ROOM + )?.itemCode, + }, + { + code: RoomPackageCodeEnum.ALLERGY_ROOM, + description: "Allergy Room", + itemCode: availablePackages.find( + (pkg) => pkg.code === RoomPackageCodeEnum.ALLERGY_ROOM + )?.itemCode, + }, + { + code: RoomPackageCodeEnum.PET_ROOM, + description: "Pet Room", + itemCode: availablePackages.find( + (pkg) => pkg.code === RoomPackageCodeEnum.PET_ROOM + )?.itemCode, }, ] @@ -102,6 +116,7 @@ export default function Rooms({ notAvailableRooms.forEach((room) => { room.status = "NotAvailable" }) + setRooms({ ...roomsAvailability, roomConfigurations: [...filteredRooms, ...notAvailableRooms], diff --git a/components/TempDesignSystem/Form/FilterChip/_Chip/chip.module.css b/components/TempDesignSystem/Form/FilterChip/_Chip/chip.module.css index 44fa78a14..fa029bb47 100644 --- a/components/TempDesignSystem/Form/FilterChip/_Chip/chip.module.css +++ b/components/TempDesignSystem/Form/FilterChip/_Chip/chip.module.css @@ -2,11 +2,13 @@ display: flex; align-items: center; gap: var(--Spacing-x-half); - padding: var(--Spacing-x1) var(--Spacing-x-one-and-half); + padding: calc(var(--Spacing-x1) - 2px) var(--Spacing-x-one-and-half); border: 1px solid var(--Base-Border-Subtle); border-radius: var(--Corner-radius-Small); background-color: var(--Base-Surface-Secondary-light-Normal); cursor: pointer; + height: 32px; + background-color: var(--Base-Surface-Secondary-light-Normal); } .label[data-selected="true"], @@ -21,8 +23,9 @@ } .label[data-disabled="true"] { - background-color: var(--Base-Button-Primary-Fill-Disabled); - border-color: var(--Base-Button-Primary-Fill-Disabled); + background-color: var(--UI-Input-Controls-Surface-Disabled); + border-color: var(--UI-Input-Controls-Border-Disabled); + color: var(--Base-Text-Disabled); cursor: not-allowed; } diff --git a/types/components/hotelReservation/selectRate/roomFilter.ts b/types/components/hotelReservation/selectRate/roomFilter.ts index 239c6fa70..2bdd501b1 100644 --- a/types/components/hotelReservation/selectRate/roomFilter.ts +++ b/types/components/hotelReservation/selectRate/roomFilter.ts @@ -11,6 +11,7 @@ export enum RoomPackageCodeEnum { export interface DefaultFilterOptions { code: RoomPackageCodeEnum description: string + itemCode: string | undefined } export interface RoomFilterProps { numberOfRooms: number From f5a215b27f089fb16cf51d0079e799e4ea970244 Mon Sep 17 00:00:00 2001 From: Pontus Dreij Date: Wed, 20 Nov 2024 10:52:41 +0100 Subject: [PATCH 5/7] fix(SW-925) Removed adding of rooms not in filter --- .../HotelReservation/SelectRate/Rooms/index.tsx | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/components/HotelReservation/SelectRate/Rooms/index.tsx b/components/HotelReservation/SelectRate/Rooms/index.tsx index 58f5727f3..854b5b940 100644 --- a/components/HotelReservation/SelectRate/Rooms/index.tsx +++ b/components/HotelReservation/SelectRate/Rooms/index.tsx @@ -28,6 +28,7 @@ export default function Rooms({ user, availablePackages, }: SelectRateProps) { + console.log(roomsAvailability) const visibleRooms: RoomConfiguration[] = filterDuplicateRoomTypesByLowestPrice(roomsAvailability.roomConfigurations) const [rateSummary, setRateSummary] = useState(null) @@ -105,21 +106,12 @@ export default function Rooms({ room.features.some((feature) => feature.code === filteredPackage) ) ) - let notAvailableRooms = visibleRooms.filter((room) => - filteredPackages.every( - (filteredPackage) => - !room.features.some((feature) => feature.code === filteredPackage) - ) - ) - // Clone nested object to keep original object intact and not messup the room data - notAvailableRooms = JSON.parse(JSON.stringify(notAvailableRooms)) - notAvailableRooms.forEach((room) => { - room.status = "NotAvailable" - }) + console.log("filteredRooms", filteredRooms) + console.log("visibleRooms", visibleRooms) setRooms({ ...roomsAvailability, - roomConfigurations: [...filteredRooms, ...notAvailableRooms], + roomConfigurations: [...filteredRooms], }) if (filteredRooms.length == 0) { From f2de6f103e7e706046267d80e07628eadee90b0e Mon Sep 17 00:00:00 2001 From: Pontus Dreij Date: Wed, 20 Nov 2024 10:57:20 +0100 Subject: [PATCH 6/7] fix(SW-925) remove log --- components/HotelReservation/SelectRate/Rooms/index.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/components/HotelReservation/SelectRate/Rooms/index.tsx b/components/HotelReservation/SelectRate/Rooms/index.tsx index 854b5b940..bdf69ec7a 100644 --- a/components/HotelReservation/SelectRate/Rooms/index.tsx +++ b/components/HotelReservation/SelectRate/Rooms/index.tsx @@ -28,7 +28,6 @@ export default function Rooms({ user, availablePackages, }: SelectRateProps) { - console.log(roomsAvailability) const visibleRooms: RoomConfiguration[] = filterDuplicateRoomTypesByLowestPrice(roomsAvailability.roomConfigurations) const [rateSummary, setRateSummary] = useState(null) From a12fad1a4518ab82fe1ce87809bf821e670a06ce Mon Sep 17 00:00:00 2001 From: Pontus Dreij Date: Wed, 20 Nov 2024 10:58:00 +0100 Subject: [PATCH 7/7] fix(SW-925) remove log --- components/HotelReservation/SelectRate/Rooms/index.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/components/HotelReservation/SelectRate/Rooms/index.tsx b/components/HotelReservation/SelectRate/Rooms/index.tsx index bdf69ec7a..2c3570a95 100644 --- a/components/HotelReservation/SelectRate/Rooms/index.tsx +++ b/components/HotelReservation/SelectRate/Rooms/index.tsx @@ -105,8 +105,6 @@ export default function Rooms({ room.features.some((feature) => feature.code === filteredPackage) ) ) - console.log("filteredRooms", filteredRooms) - console.log("visibleRooms", visibleRooms) setRooms({ ...roomsAvailability,