Fixed state sync issue by clearing cache and re-fetching project data after task creation.

This commit is contained in:
Pramod Mahajan 2025-04-20 13:44:47 +05:30
parent 8d4c9e4f39
commit dc5f452881

View File

@ -12,7 +12,7 @@ import ProjectModal from "./ProjectModal";
import { useHasUserPermission } from "../../hooks/useHasUserPermission"; import { useHasUserPermission } from "../../hooks/useHasUserPermission";
import { MANAGE_PROJECT_INFRA } from "../../utils/constants"; import { MANAGE_PROJECT_INFRA } from "../../utils/constants";
import InfraTable from "./Infrastructure/InfraTable"; import InfraTable from "./Infrastructure/InfraTable";
import { cacheData, getCachedData } from "../../slices/apiDataManager"; import { cacheData, clearCacheKey, getCachedData } from "../../slices/apiDataManager";
import { useProjectDetails } from "../../hooks/useProjects"; import { useProjectDetails } from "../../hooks/useProjects";
const ProjectInfra = ({ const ProjectInfra = ({
@ -21,7 +21,7 @@ const ProjectInfra = ({
eachSiteEngineer, eachSiteEngineer,
}) => { }) => {
const [expandedBuildings, setExpandedBuildings] = useState([]); const [expandedBuildings, setExpandedBuildings] = useState([]);
const { projects_Details, loading } = useProjectDetails(data.id); const { projects_Details,refetch, loading } = useProjectDetails(data.id);
const [project, setProject] = useState(projects_Details); const [project, setProject] = useState(projects_Details);
const [modalConfig, setModalConfig] = useState({ type: null, data: null }); const [modalConfig, setModalConfig] = useState({ type: null, data: null });
const [isModalOpen, setIsModalOpen] = useState(false); const [isModalOpen, setIsModalOpen] = useState(false);
@ -110,7 +110,6 @@ const ProjectInfra = ({
}; };
const handleTaskModelFormSubmit = (updatedModel) => { const handleTaskModelFormSubmit = (updatedModel) => {
// debugger
if (updatedModel.id == "") updatedModel.id = 0; if (updatedModel.id == "") updatedModel.id = 0;
const updatedProject = { ...project }; const updatedProject = { ...project };
@ -119,7 +118,6 @@ const ProjectInfra = ({
onDataChange("task-change"); onDataChange("task-change");
showToast("Details updated successfully.", "success"); showToast("Details updated successfully.", "success");
// setClearFormTrigger( true ); // setClearFormTrigger( true );
if (response?.data[0]) { if (response?.data[0]) {
const { workItemId, workItem } = response.data[0]; const { workItemId, workItem } = response.data[0];
@ -140,7 +138,7 @@ const ProjectInfra = ({
existingItem.workItemId === existingItem.workItemId ===
workItem.workItemId workItem.workItemId
) )
? workArea.workItems // If the workItemId already exists, keep the current workItems ? [...workArea.workItems] // Create a new array to trigger re-render
: [...workArea.workItems, workItem], : [...workArea.workItems, workItem],
} }
: workArea : workArea
@ -151,15 +149,18 @@ const ProjectInfra = ({
} }
: building : building
); );
updatedProject.buildings = updatedBuildings; updatedProject.buildings = updatedBuildings;
// workItem update, but having local state issue there for needed to calling api
clearCacheKey( "projectInfo" )
refetch()
setProject(updatedProject);
cacheData("projectInfo", { cacheData("projectInfo", {
projectId: updatedProject.id, projectId: updatedProject.id,
data: updatedProject, data: updatedProject,
}); });
console.log(project);
setProject( updatedProject );
closeTaskModel()
} }
}) })
.catch((error) => { .catch((error) => {