Persist project changes on multiple create/update operations.Ensures that project information changes (creation or updates) are correctly persisted when performed consecutively in the project list

This commit is contained in:
ashutosh.nehete 2025-06-19 10:42:43 +05:30
parent ad25c4610e
commit ade3401d02
4 changed files with 18 additions and 9 deletions

View File

@ -127,12 +127,16 @@ const Header = () => {
const newProjectHandler = useCallback( const newProjectHandler = useCallback(
async (msg) => { async (msg) => {
if (HasManageProjectPermission && msg.keyword === "Create_Project") { if (HasManageProjectPermission && msg.keyword === "Create_Project") {
await fetchData(); await fetchData();
cacheData("hasReceived", false); } else if (projectNames.some((item) => item.id == msg.response.id)) {
console.log((projectNames.some((item) => item.id == msg.response.id)))
await fetchData();
} }
cacheData("hasReceived", false);
}, },
[HasManageProjectPermission] [HasManageProjectPermission,projectNames]
); );
useEffect(() => { useEffect(() => {
@ -215,7 +219,6 @@ const Header = () => {
<li className="nav-item dropdown-shortcuts navbar-dropdown dropdown me-2 me-xl-0"> <li className="nav-item dropdown-shortcuts navbar-dropdown dropdown me-2 me-xl-0">
<a <a
className="nav-link dropdown-toggle hide-arrow" className="nav-link dropdown-toggle hide-arrow"
data-bs-toggle="dropdown" data-bs-toggle="dropdown"
data-bs-auto-close="true" data-bs-auto-close="true"
aria-expanded="false" aria-expanded="false"

View File

@ -13,6 +13,7 @@ import { ITEMS_PER_PAGE, MANAGE_PROJECT } from "../../utils/constants";
import ProjectListView from "./ProjectListView"; import ProjectListView from "./ProjectListView";
import eventBus from "../../services/eventBus"; import eventBus from "../../services/eventBus";
import { clearApiCacheKey } from "../../slices/apiCacheSlice"; import { clearApiCacheKey } from "../../slices/apiCacheSlice";
import { defaultCheckBoxAppearanceProvider } from "pdf-lib";
const ProjectList = () => { const ProjectList = () => {
const { profile: loginUser } = useProfile(); const { profile: loginUser } = useProfile();
@ -139,16 +140,21 @@ const ProjectList = () => {
setProjectList(updatedProjects); setProjectList(updatedProjects);
sortingProject(updatedProjects); sortingProject(updatedProjects);
} }
if ( if (
msg.keyword === "Update_Project" && msg.keyword === "Update_Project" &&
projectList.some((item) => item.id === msg.response.id) projectList.some((item) => item.id === msg.response.id)
) { ) {
await refetch(); ProjectRepository.getProjectList()
sortingProject(projects); .then((response) => {
cacheData("projectslist", response?.data);
sortingProject(response?.data);
})
.catch((e) => {
console.error(e)
});
} }
}, },
[HasManageProject, projects, sortingProject] [HasManageProject, projectList, sortingProject]
); );
useEffect(() => { useEffect(() => {
@ -171,6 +177,7 @@ const ProjectList = () => {
return () => eventBus.off("assign_project_one", assignProjectHandler); return () => eventBus.off("assign_project_one", assignProjectHandler);
}, [handler]); }, [handler]);
return ( return (
<> <>
<div <div

View File

@ -21,7 +21,6 @@ const ProjectListView = ({ projectData, recall }) => {
const [showModal, setShowModal] = useState(false); const [showModal, setShowModal] = useState(false);
const navigate = useNavigate(); const navigate = useNavigate();
const ManageProject = useHasUserPermission(MANAGE_PROJECT); const ManageProject = useHasUserPermission(MANAGE_PROJECT);
useEffect(()=>{ useEffect(()=>{
setProjectInfo(projectData); setProjectInfo(projectData);
},[projectData]) },[projectData])

View File

@ -32,7 +32,7 @@ export function startSignalR(loggedUser) {
.split("T")[0]; .split("T")[0];
connection.on("NotificationEventHandler", (data) => { connection.on("NotificationEventHandler", (data) => {
if (data.loggedInUserId != loggedUser?.employeeInfo.id) { if (data.loggedInUserId != loggedUser?.employeeInfo.id) {
console.log("Notification received:", data); // console.log("Notification received:", data);
// if action taken on attendance module // if action taken on attendance module
if (data.keyword == "Attendance") { if (data.keyword == "Attendance") {
const checkIn = data.response.checkInTime.substring(0, 10); const checkIn = data.response.checkInTime.substring(0, 10);