import React, { useEffect, useState } from "react"; import { useFab } from "../../Context/FabContext"; import { useContactList } from "../../hooks/useDirectory"; import { useDirectoryContext } from "./DirectoryPage"; import CardViewContact from "../../components/Directory/CardViewContact"; import { ITEMS_PER_PAGE } from "../../utils/constants"; import ContactFilterPanel from "./ContactFilterPanel"; import { defaultContactFilter } from "../../components/Directory/DirectorySchema"; import { useDebounce } from "../../utils/appUtils"; import Pagination from "../../components/common/Pagination"; import ListViewContact from "../../components/Directory/ListViewContact"; import { CardViewContactSkeleton, ListViewContactSkeleton } from "../../components/Directory/DirectoryPageSkeleton"; const ContactsPage = ({projectId ,searchText }) => { const [currentPage, setCurrentPage] = useState(1); const [filters, setFilter] = useState(defaultContactFilter); const debouncedSearch = useDebounce(searchText, 500); const { showActive, gridView } = useDirectoryContext(); const { data, isError, isLoading, error } = useContactList( showActive, projectId, ITEMS_PER_PAGE, currentPage, filters, debouncedSearch ); const { setOffcanvasContent, setShowTrigger } = useFab(); const clearFilter = () => { setFilter(defaultContactFilter); }; useEffect(() => { setShowTrigger(true); setOffcanvasContent( "Contacts Filters", ); return () => { setShowTrigger(false); setOffcanvasContent("", null); }; }, []); const paginate = (page) => { if (page >= 1 && page <= (data?.totalPages ?? 1)) { setCurrentPage(page); } }; if (isError) return
{error.message}
; if (isLoading) return ; return (
{gridView ? ( <> {data?.data?.map((contact) => (
))} {data?.data?.length > 0 && (
)} ) : (
} />
)}
) }; export default ContactsPage;