feat(BOOK-56): Added content related to destination filters
Approved-by: Chuma Mcphoy (We Ahead)
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user