/* eslint-disable react-hooks/exhaustive-deps */ import { useEffect, useState } from "react"; import LayoutCard from "./LayoutCard"; import SortButton from "./SortButton"; import SearchIcon from "../icons/SearchIcon"; import Button from "../Button"; import FilterIcon from "../icons/FilterIcon"; import useModal from "../../store/useModal"; import { MobileModalWrapper } from "../modals/mobile/MobileModalWrapper"; import SearchFiltersModal from "../modals/mobile/SearchFiltersModal"; import { updateAccessToken } from "../../api/updateAccessToken"; import useApartments from "../../store/useApartments"; import useSearchFilters from "../../store/useSearchFilters"; import { useDebounce } from "@uidotdev/usehooks"; import { perPageInitial, pageInitial, } from "../../consts/initialMasterplanFilters"; import { getFilteredApartments } from "../../calc/getFilteredApartments"; import SearchLoader from "./SearchLoader"; const LayoutOptions = () => { const { apartments, setApartments } = useApartments(); const [isLoading, setIsLoading] = useState(false); const { setModal } = useModal(); const { roveHomeTypeCheckboxes, apartmentTypeCheckboxes, multirangeSliders, viewCheckboxes, switchers, sortList, setSortList, page, setPage, setPerPage, perPage, } = useSearchFilters(); const debouncedSliders = useDebounce(multirangeSliders, 300); const handleOnSortClick = (sortId: string) => { const updatedSortList = sortList.map((sort) => { const isSelected = sort.id === sortId; return { ...sort, isSelected: isSelected }; }); setSortList(updatedSortList); }; const handleOnFilterClick = () => { setModal( ); }; function handleOnShowMoreBtnClick(): void { const _page = page + 1; const _perPage = _page * perPageInitial; setPage(_page); setPerPage(_perPage); } useEffect(() => { const zohoToken = localStorage.getItem("ACCESS_TOKEN"); setIsLoading(true); updateAccessToken() .then((token) => { if (token) { getFilteredApartments( token, setApartments, roveHomeTypeCheckboxes, apartmentTypeCheckboxes, debouncedSliders, switchers, viewCheckboxes, sortList, pageInitial, perPage ); } }) .then(() => getFilteredApartments( zohoToken, setApartments, roveHomeTypeCheckboxes, apartmentTypeCheckboxes, debouncedSliders, switchers, viewCheckboxes, sortList, pageInitial, perPage ) ) .finally(() => { setIsLoading(false); }); // getFilteredApartments( // zohoToken, // setApartments, // roveHomeTypeCheckboxes, // apartmentTypeCheckboxes, // debouncedSliders, // switchers, // viewCheckboxes, // sortList, // pageInitial, // perPage // ) // .catch((error) => { // const errorStatus = error.response.status; // if (errorStatus === 401) { // updateAccessToken().then((token) => { // if (token) { // getFilteredApartments( // token, // setApartments, // roveHomeTypeCheckboxes, // apartmentTypeCheckboxes, // debouncedSliders, // switchers, // viewCheckboxes, // sortList, // pageInitial, // perPage // ); // } // }); // } // }) // .finally(() => { // setIsLoading(false); // }); }, [ setApartments, roveHomeTypeCheckboxes, apartmentTypeCheckboxes, debouncedSliders, switchers, viewCheckboxes, sortList, perPage, ]); return ( Units {apartments ? apartments.length : 0} } text="Filters" className="text-[#0D1922B2]" onClick={handleOnFilterClick} /> {isLoading ? ( ) : ( {apartments && apartments.map((apartment) => ( ))} )} Show 12 more apartments ); }; export default LayoutOptions;
{apartments ? apartments.length : 0}