Files
web/apps/scandic-web/providers/HotelListingDataProvider/Content.tsx
Erik Tiekstra fa7214cb58 Feat/SW-2271 hotel list filtering
* feat(SW-2271): Changes to hotel data types in preperation for filtering
* feat(SW-2271): Added filter and sort functionality

Approved-by: Matilda Landström
2025-07-04 09:27:20 +00:00

39 lines
1.1 KiB
TypeScript

"use client"
import { useParams } from "next/navigation"
import { useEffect } from "react"
import { useHotelListingDataStore } from "@/stores/hotel-listing-data"
export default function HotelListingDataProviderContent({
children,
}: React.PropsWithChildren) {
const params = useParams()
const { updateActiveFiltersAndSort, allFilterSlugs } =
useHotelListingDataStore((state) => ({
allFilterSlugs: state.allFilterSlugs,
updateActiveFiltersAndSort: state.actions.updateActiveFiltersAndSort,
}))
useEffect(() => {
const currentUrl = new URL(window.location.href)
const searchParams = currentUrl.searchParams
const sort = searchParams.get("sort")
const filterParam = searchParams.get("filter")
const activeFilters: string[] = []
if (filterParam) {
const filters = filterParam.split(",")
filters.forEach((filter) => {
if (allFilterSlugs.includes(filter)) {
activeFilters.push(filter)
}
})
}
updateActiveFiltersAndSort(activeFilters, sort)
}, [params, updateActiveFiltersAndSort, allFilterSlugs])
return <>{children}</>
}