From e6a461c2ab4a09ac04b6f96cd6f169334e21b6a3 Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Thu, 12 Jun 2025 22:12:32 +0530 Subject: [PATCH] Implemented signalr in assign team tab in project details --- src/components/Project/MapUsers.jsx | 2 +- src/components/Project/Teams.jsx | 21 ++++++++++++++++++--- src/pages/project/ProjectList.jsx | 1 - src/services/signalRService.js | 11 +++++++++++ 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/src/components/Project/MapUsers.jsx b/src/components/Project/MapUsers.jsx index 512b0985..12cc2b53 100644 --- a/src/components/Project/MapUsers.jsx +++ b/src/components/Project/MapUsers.jsx @@ -117,7 +117,7 @@ const MapUsers = ({
-

Assign Employee

diff --git a/src/components/Project/Teams.jsx b/src/components/Project/Teams.jsx index 2dede227..690f1105 100644 --- a/src/components/Project/Teams.jsx +++ b/src/components/Project/Teams.jsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from "react"; +import React, { useState, useEffect, useCallback } from "react"; import MapUsers from "./MapUsers"; import { Link, NavLink, useNavigate } from "react-router-dom"; @@ -13,6 +13,7 @@ import useMaster from "../../hooks/masterHook/useMaster"; import { useHasUserPermission } from "../../hooks/useHasUserPermission"; import { ASSIGN_TO_PROJECT } from "../../utils/constants"; import ConfirmModal from "../common/ConfirmModal"; +import eventBus from "../../services/eventBus"; const Teams = ({ project }) => { const dispatch = useDispatch(); @@ -173,6 +174,20 @@ const Teams = ({ project }) => { } const closeDeleteModal = ()=> setIsDeleteModal(false) + const handler = useCallback( + (msg) => { + if (msg.projectIds.some((item) => item === project.id)) { + fetchEmployees(); + } + }, + [] + ); + + useEffect(() => { + eventBus.on("assign_project_all", handler); + return () => eventBus.off("assign_project_all", handler); + }, [handler]); + return ( <>
{ {" "} {removingEmployeeId === item.id ? (
- + Loading...
diff --git a/src/pages/project/ProjectList.jsx b/src/pages/project/ProjectList.jsx index 6d4a9f7a..b87b495b 100644 --- a/src/pages/project/ProjectList.jsx +++ b/src/pages/project/ProjectList.jsx @@ -125,7 +125,6 @@ const ProjectList = () => { indexOfLastItem ); const totalPages = Math.ceil(filteredProjects.length / itemsPerPage); - console.log("filtter", currentItems); useEffect(() => { const tooltipTriggerList = Array.from( document.querySelectorAll('[data-bs-toggle="tooltip"]') diff --git a/src/services/signalRService.js b/src/services/signalRService.js index 1fd5a5ac..1278dd5e 100644 --- a/src/services/signalRService.js +++ b/src/services/signalRService.js @@ -28,6 +28,7 @@ export function startSignalR(loggedUser) { .split("T")[0]; connection.on("NotificationEventHandler", (data) => { // console.log("Notification received:", data); + // if action taken on attendance module if (data.keyword == "Attendance") { const checkIn = data.response.checkInTime.substring(0, 10); if (data.loginUserId != loggedUser?.employeeInfo.id) { @@ -47,10 +48,20 @@ export function startSignalR(loggedUser) { eventBus.emit("attendance_log", data); } } + // if create or update project if (data.keyword == "Create_Project" || data.keyword == "Update_Project") { clearCacheKey("projectslist"); eventBus.emit("project", data); } + // if assign or deassign employee to any project + if (data.keyword == "Assign_Project") { + + if(data.employeeList.some((item) => item === loggedUser?.employeeInfo.id)){ + console.log("in one employee") + eventBus.emit("assign_project_one", data); + } + eventBus.emit("assign_project_all", data); + } }); connection