feat(BOOK-56): Added content related to destination filters

Approved-by: Chuma Mcphoy (We Ahead)
This commit is contained in:
Erik Tiekstra
2025-09-25 08:10:30 +00:00
parent 9032789fd0
commit 7714761c77
21 changed files with 379 additions and 172 deletions

View File

@@ -6,6 +6,7 @@ import {
} from "@scandic-hotels/trpc/types/hotel"
import type { DestinationCityListItem } from "@scandic-hotels/trpc/types/destinationCityPage"
import type { DestinationFilter } from "@scandic-hotels/trpc/types/destinationsData"
const HOTEL_SORTING_STRATEGIES: Partial<
Record<
@@ -85,3 +86,13 @@ export function getBasePathNameWithoutFilters(
return pathname
}
export function getActiveDestinationFilter(
filterFromUrl: HotelFilter | null,
allSeoFilters: DestinationFilter[]
) {
if (!filterFromUrl) {
return null
}
return allSeoFilters.find((f) => f.filter.id === filterFromUrl.id) || null
}

View File

@@ -12,6 +12,7 @@ import {
} from "@/utils/tracking/destinationPage"
import {
getActiveDestinationFilter,
getBasePathNameWithoutFilters,
getFilteredCities,
getFilteredHotels,
@@ -19,6 +20,7 @@ import {
isValidSortOption,
} from "./helper"
import type { DestinationFilter } from "@scandic-hotels/trpc/types/destinationsData"
import type { HotelFilter } from "@scandic-hotels/trpc/types/hotel"
import type {
@@ -38,9 +40,11 @@ export function createDestinationDataStore({
const defaultSort =
sortItems.find((s) => s.isDefault)?.value ?? sortItems[0].value
const allFilters = mergeHotelFiltersAndSeoFilters(hotelFilters, seoFilters)
const allSeoFilters = Object.values(seoFilters).flat()
const allFlattenedFilters = Object.values(allFilters).flat<HotelFilter[]>()
const allFilterSlugs = allFlattenedFilters.map((filter) => filter.slug)
const activeFilters: HotelFilter[] = []
let activeSeoFilter: DestinationFilter | null = null
let filterFromUrl: HotelFilter | null = null
const basePathnameWithoutFilters = getBasePathNameWithoutFilters(
@@ -55,6 +59,7 @@ export function createDestinationDataStore({
) ?? null
if (filterFromUrl) {
activeFilters.push(filterFromUrl)
activeSeoFilter = getActiveDestinationFilter(filterFromUrl, allSeoFilters)
}
}
@@ -129,6 +134,10 @@ export function createDestinationDataStore({
state.activeCities = sortedCities
state.filterFromUrl = filterFromUrl
state.activeSeoFilter = getActiveDestinationFilter(
filterFromUrl,
allSeoFilters
)
state.pendingFilters = filters
state.pendingSort = newSort
state.pendingHotelCount = filteredHotels.length
@@ -204,6 +213,7 @@ export function createDestinationDataStore({
activeFilters,
pendingFilters: activeFilters,
allFilters,
activeSeoFilter,
filterFromUrl,
basePathnameWithoutFilters,
sortItems,