import React, { useCallback, useEffect } from "react"; import { useSelector } from "react-redux"; import { useDashboardTeamsCardData } from "../../hooks/useDashboard_Data"; import eventBus from "../../services/eventBus"; import { useQueryClient } from "@tanstack/react-query"; import { useSelectedProject } from "../../slices/apiDataManager"; import { TeamsSkeleton } from "./DashboardSkeleton"; const Teams = () => { const queryClient = useQueryClient(); const projectId = useSelectedProject(); const { data: teamsCardData, isLoading, isError, error, isFetching, refetch, } = useDashboardTeamsCardData(projectId); // Handle real-time updates via eventBus const handler = useCallback( (msg) => { if (msg.activity === 1) { queryClient.setQueryData(["dashboardTeams", projectId], (old) => { if (!old) return old; return { ...old, inToday: (old.inToday || 0) + 1, }; }); } }, [queryClient, projectId] ); useEffect(() => { eventBus.on("attendance", handler); return () => eventBus.off("attendance", handler); }, [handler]); const inToday = teamsCardData?.inToday ?? 0; const totalEmployees = teamsCardData?.totalEmployees ?? 0; if (isLoading) return ; return (
Teams
{isError ? (
{error?.message || "Unable to load data at the moment."} {" "} Retry
) : (

{totalEmployees.toLocaleString()}

Total Employees

{inToday.toLocaleString()}

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