improve singalR functionlity in assign task pop to add or remove employee if assigned or removed from project

This commit is contained in:
ashutosh.nehete 2025-06-19 11:21:26 +05:30
parent ec75858f7e
commit f7d0a35b3a

View File

@ -78,10 +78,11 @@ const AssignRoleModel = ({ assignData, onClose, setAssigned }) => {
const selectedProject = useSelector(
(store) => store.localVariables.projectId
);
const { employees, loading: employeeLoading,recallEmployeeData } = useEmployeesAllOrByProjectId(
selectedProject,
false
);
const {
employees,
loading: employeeLoading,
recallEmployeeData,
} = useEmployeesAllOrByProjectId(selectedProject, false);
const dispatch = useDispatch();
const { loading } = useMaster(); // Assuming this is for jobRoleData loading
const jobRoleData = getCachedData("Job Role");
@ -175,7 +176,7 @@ const AssignRoleModel = ({ assignData, onClose, setAssigned }) => {
showToast("Task Successfully Assigned", "success"); // Show success toast
reset(); // Reset form fields
clearCacheKey("projectInfo");
setAssigned(formattedData.plannedTask)
setAssigned(formattedData.plannedTask);
onClose(); // Close the modal
} catch (error) {
console.error("Error assigning task:", error); // Log the full error for debugging
@ -189,24 +190,34 @@ const AssignRoleModel = ({ assignData, onClose, setAssigned }) => {
onClose();
};
const handler = useCallback(
const handler = useCallback(
(msg) => {
if(employees.some((item) => item.id == msg.employeeId)){
console.log("handller function start")
clearCacheKey("employeeListByProject");
clearCacheKey("allEmployeeList");
clearCacheKey("allInactiveEmployeeList");
clearCacheKey("employeeProfile");
if (employees.some((item) => item.id == msg.employeeId)) {
recallEmployeeData(false);
console.log("handller function end")
}
},[employees]
},
[employees]
);
const assignHandler = useCallback(
(msg) => {
if (msg.projectIds.some((item) => item == selectedProject)) {
clearCacheKey("employeeListByProject")
recallEmployeeData(false);
}
},
[selectedProject]
);
useEffect(() => {
eventBus.on("employee",handler);
return () => eventBus.off("employee",handler)
},[handler])
eventBus.on("employee", handler);
return () => eventBus.off("employee", handler);
}, [handler]);
useEffect(() => {
eventBus.on("assign_project_all", assignHandler);
return () => eventBus.off("assign_project_all", assignHandler);
}, [assignHandler]);
return (
<div