Merged in fix/STAY-131-hide-ancillaries (pull request #3299)

fix: fix logic for identifying single use ancillaries

* fix: fix logic for identifying single use ancillaries

* fix: filter out empty categories of ancillaries


Approved-by: Erik Tiekstra
This commit is contained in:
Christel Westerberg
2025-12-05 12:25:12 +00:00
parent 3bd23bf56e
commit 001000a56d
7 changed files with 125 additions and 73 deletions

View File

@@ -17,7 +17,8 @@ import type {
export function useAncillaries(
ancillariesPromise: Promise<Ancillaries | null>,
packages: Packages | null,
user: User | null
user: User | null,
alreadyAcquiredAncillaryCodes: string[]
) {
const intl = useIntl()
const bookedRoom = useMyStayStore((state) => state.bookedRoom)
@@ -86,9 +87,23 @@ export function useAncillaries(
return null
}
const uniqueAncillaries = generateUniqueAncillaries(allAncillaries)
const allUniqueAncillaries = generateUniqueAncillaries(allAncillaries)
return { all: allAncillaries, unique: uniqueAncillaries }
const availableByCategory = alreadyAcquiredAncillaryCodes.length
? filterOutAlreadyAcquiredAncillaries(
allAncillaries,
alreadyAcquiredAncillaryCodes
)
: allAncillaries
const availableUniqueAncillaries =
generateUniqueAncillaries(availableByCategory)
return {
availableByCategory,
allUnique: allUniqueAncillaries,
availableUnique: availableUniqueAncillaries,
}
}
function mapAncillaries(
@@ -183,3 +198,19 @@ function addBreakfastPackage(
...ancillaries,
]
}
function filterOutAlreadyAcquiredAncillaries(
ancillaries: Ancillaries,
alreadyAcquiredAncillaryCodes: string[]
): Ancillaries {
return ancillaries.map((cat) => ({
...cat,
ancillaryContent: cat.ancillaryContent.filter((ancillary) =>
ancillary.requiresQuantity
? true
: !alreadyAcquiredAncillaryCodes.includes(
ancillary.loyaltyCode || ancillary.id
)
),
}))
}