import React, { useCallback, useEffect, useState } from "react"; import { useSelector } from "react-redux"; import { useDashboardTeamsCardData } from "../../hooks/useDashboard_Data"; import eventBus from "../../services/eventBus"; const Teams = () => { const projectId = useSelector((store) => store.localVariables?.projectId); const { teamsCardData, loading, error } = useDashboardTeamsCardData(projectId); const [totalEmployees, setTotalEmployee] = useState(0); const [inToday, setInToday] = useState(0); // Update state when API data arrives useEffect(() => { setTotalEmployee(teamsCardData?.totalEmployees || 0); setInToday(teamsCardData?.inToday || 0); }, [teamsCardData]); // Handle real-time updates via eventBus const handler = useCallback((msg) => { if (msg.activity === 1) { setInToday((prev) => prev + 1); } }, []); useEffect(() => { eventBus.on("attendance", handler); return () => eventBus.off("attendance", handler); }, [handler]); return (
Teams
{loading ? ( // Blue spinner loader
Loading...
) : error ? ( // Error message if data fetching fails
{error}
) : ( // Display data once loaded

{totalEmployees.toLocaleString()}

Total Employees

{inToday.toLocaleString()}

In Today
)}
); }; export default Teams;