Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | import { useEffect, useState } from "react";
import { FilterOptions } from "../SearchPage";
import { useMapSearchState } from "./mapSearchContext";
import { initialState } from "./mapSearchReducers";
/** Local State for Search FilterDialog
* This is so values can be changed in the dialog before being applied to the reducer state
* On Apply click, all values are applied to the reducer state at once
*/
export function useSearchFilters() {
const { filters: stateFilters } = useMapSearchState();
const [filters, setFilters] = useState<FilterOptions>(stateFilters);
// Sync local filters with global filters when dialog is opened
useEffect(() => {
setFilters(stateFilters);
}, [stateFilters]);
// Update a single filter
const updateFilter = (newFilters: Partial<FilterOptions>) => {
setFilters((prevFilters) => ({
...prevFilters,
...newFilters,
}));
};
const resetFilters = () => {
setFilters(initialState.filters);
};
return {
filters,
resetFilters,
updateFilter,
};
}
|