You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

HomePage.js 1.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import React, { useState } from "react";
  2. import { HomePageContainer } from "./HomePage.styled";
  3. import FilterCard from "../../components/Cards/FilterCard/FilterCard";
  4. import MainLayout from "../../layouts/MainLayout/MainLayout";
  5. import MarketPlace from "../../components/MarketPlace/MarketPlace";
  6. import { selectIsLoadingByActionType } from "../../store/selectors/loadingSelectors";
  7. import { useSelector } from "react-redux";
  8. import { OFFERS_SCOPE } from "../../store/actions/offers/offersActionConstants";
  9. import useOffers from "../../hooks/useOffers/useOffers";
  10. const HomePage = () => {
  11. const isLoadingOffers = useSelector(
  12. selectIsLoadingByActionType(OFFERS_SCOPE)
  13. );
  14. const [filtersOpened, setFiltersOpened] = useState(false);
  15. const offers = useOffers();
  16. const toggleFilters = () => {
  17. setFiltersOpened((prevFiltersOpened) => !prevFiltersOpened);
  18. };
  19. return (
  20. <HomePageContainer>
  21. <MainLayout
  22. leftCard={
  23. <FilterCard
  24. offers={offers}
  25. filtersOpened={filtersOpened}
  26. skeleton={isLoadingOffers}
  27. toggleFilters={toggleFilters}
  28. />
  29. }
  30. content={
  31. <MarketPlace
  32. offers={offers}
  33. skeleton={isLoadingOffers}
  34. toggleFilters={toggleFilters}
  35. />
  36. }
  37. />
  38. </HomePageContainer>
  39. );
  40. };
  41. export default HomePage;