import React, { useEffect, useState } from "react"; import { useTenants } from "../../hooks/useTenant"; import { ITEMS_PER_PAGE } from "../../utils/constants"; import { getTenantStatus } from "../../utils/dateUtils"; import IconButton from "../common/IconButton"; import Pagination from "../common/Pagination"; import { TenantTableSkeleton } from "./TenanatSkeleton"; import { useTenantContext } from "../../pages/Tenant/TenantPage"; import { useNavigate } from "react-router-dom"; const TenantsList = ({ filters, searchText, setIsRefetching, setRefetchFn, }) => { const [currentPage, setCurrentPage] = useState(1); const navigate = useNavigate(); const { data, isLoading, isError, isInitialLoading, error, refetch, isFetching, } = useTenants(currentPage, filters, searchText); const { setRefetching } = useTenantContext(); const paginate = (page) => { if (page >= 1 && page <= (data?.totalPages ?? 1)) { setCurrentPage(page); } }; // Pass the refetch function to parent when component mounts useEffect(() => { setRefetchFn(() => refetch); // store in parent }, [setRefetchFn, refetch]); // Sync fetching status with parent useEffect(() => { setIsRefetching(isFetching); }, [isFetching, setIsRefetching]); const TenantColumns = [ { key: "name", label: "Organization", getValue: (t) => (
navigate(`/tenant/${t.id}`)} > {t.logoImage ? ( {`${t.name} ) : ( )} {t.name || "N/A"}
), align: "text-start", }, { key: "domainName", label: "Domain", getValue: (t) => (
{t.domainName || "N/A"}
), align: "text-start", }, { key: "contactName", label: "Contact Person", getValue: (t) => (
{t.contactName || "N/A"}
), align: "text-start", }, { key: "contactNumber", label: "Contact", getValue: (t) => t.contactNumber || "N/A", isAlwaysVisible: true, }, { key: "status", label: "Status", align: "text-center", getValue: (t) => ( {t.tenantStatus?.name || "Unknown"} ), }, ]; if (isInitialLoading) return ; if (isError) return (

{error.message}

); return ( <>
{TenantColumns.map((col) => ( ))} {data?.data.length > 0 ? ( data.data.map((tenant) => ( {TenantColumns.map((col) => ( ))} )) ) : ( )}
{col.label}
{col.customRender ? col.customRender(tenant) : col.getValue(tenant)}
No Tenants Found
{data?.data?.length > 0 && ( )}
); }; export default TenantsList;