Implemented signalr in assign team tab in project details

This commit is contained in:
ashutosh.nehete 2025-06-12 22:12:32 +05:30
parent 5611a46b95
commit ec81377c07
4 changed files with 30 additions and 5 deletions

View File

@ -117,7 +117,7 @@ const MapUsers = ({
<div className="modal-dialog modal-dialog-scrollable mx-sm-auto mx-1 modal-lg modal-simple modal-edit-user">
<div className="modal-content">
<div className="modal-header text-center">
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close">
<button type="button" className="btn-close" data-bs-dismiss="modal" aria-label="Close">
</button>
</div>
<p className="m-0 fw-semibold fs-5">Assign Employee</p>

View File

@ -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 (
<>
<div
@ -322,10 +337,10 @@ const Teams = ({ project }) => {
{" "}
{removingEmployeeId === item.id ? (
<div
class="spinner-border spinner-border-sm text-primary"
className="spinner-border spinner-border-sm text-primary"
role="status"
>
<span class="visually-hidden">
<span className="visually-hidden">
Loading...
</span>
</div>

View File

@ -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"]')

View File

@ -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