Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

useFilters.js 2.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import { useEffect, useState } from "react";
  2. import { useDispatch } from "react-redux";
  3. import { useSelector } from "react-redux";
  4. import { fetchCategories } from "../store/actions/categories/categoriesActions";
  5. import { fetchLocations } from "../store/actions/locations/locationsActions";
  6. import {
  7. selectCategories,
  8. selectSubcategories,
  9. } from "../store/selectors/categoriesSelectors";
  10. // import qs from "query-string";
  11. import { selectLocations } from "../store/selectors/locationsSelectors";
  12. const useFilters = () => {
  13. const [selectedCategory, setSelectedCategory] = useState();
  14. const [selectedSubcategory, setSelectedSubcategory] = useState();
  15. const [selectedLocations, setSelectedLocations] = useState([]);
  16. const [selectedSortOption, setSelectedSortOption] = useState({});
  17. const categories = useSelector(selectCategories);
  18. const subcategories = useSelector(
  19. selectSubcategories(selectedCategory?.name)
  20. );
  21. const locations = useSelector(selectLocations);
  22. const dispatch = useDispatch();
  23. useEffect(() => {
  24. dispatch(fetchCategories());
  25. dispatch(fetchLocations());
  26. }, []);
  27. useEffect(() => {
  28. console.log("selectedCategory changed: ", selectedCategory);
  29. }, [selectedCategory])
  30. // useEffect(() => {
  31. // if (categories && locations) {
  32. // const queryString = history.location.search.substring(1);
  33. // const queryObject = qs.parse(queryString);
  34. // let category;
  35. // if (queryObject.category) {
  36. // category = categories.find(
  37. // (item) => item.mainText === queryObject.category.toString()
  38. // );
  39. // setSelectedCategory(category);
  40. // }
  41. // if (queryObject.subcategory) {
  42. // setSelectedSubcategory(
  43. // category.subcategories.find(
  44. // (item) => item.mainText === queryObject.subcategory.toString()
  45. // ).id
  46. // );
  47. // }
  48. // if (queryObject.city) {
  49. // let filters = [];
  50. // if (Array.isArray(queryObject.city)) {
  51. // queryObject.city.forEach((item) => {
  52. // filters.push(Mockupdata[0].find((p) => p.string === item).id);
  53. // });
  54. // } else {
  55. // filters.push(
  56. // Mockupdata[0].find((p) => p.string === queryObject.city).id
  57. // );
  58. // }
  59. // setAppliedFilters([...filters]);
  60. // }
  61. // }
  62. // }, [categories, locations]);
  63. useEffect(() => {
  64. console.log("subcategories: ", subcategories);
  65. }, [subcategories]);
  66. return {
  67. selectedCategory,
  68. setSelectedCategory,
  69. selectedSubcategory,
  70. setSelectedSubcategory,
  71. selectedLocations,
  72. setSelectedLocations,
  73. selectedSortOption,
  74. setSelectedSortOption,
  75. categories,
  76. subcategories,
  77. locations,
  78. };
  79. };
  80. export default useFilters;