optimized to prevented for maximum deep rendering

This commit is contained in:
Pramod Mahajan 2025-07-08 13:30:11 +05:30
parent ce37d5f447
commit 2c4ad2ba4a

View File

@ -25,12 +25,13 @@ const ProjectList = () => {
const { profile: loginUser } = useProfile();
const [listView, setListView] = useState(false);
const [showModal, setShowModal] = useState(false);
const { projects, loading, error, refetch } = useProjects();
const [projectList, setProjectList] = useState([]);
const HasManageProjectPermission = useHasUserPermission(MANAGE_PROJECT);
const [HasManageProject, setHasManageProject] = useState(
HasManageProjectPermission
);
const [HasManageProject, setHasManageProject] = useState(HasManageProjectPermission);
const { mutate: createProject } = useCreateProject({
onSuccessCallback: () => {
setShowModal(false);
@ -43,7 +44,7 @@ const ProjectList = () => {
"603e994b-a27f-4e5d-a251-f3d69b0498ba",
"ef1c356e-0fe0-42df-a5d3-8daee355492d",
"cdad86aa-8a56-4ff4-b633-9c629057dfef",
"33deaef9-9af1-4f2a-b443-681ea0d04f81",
"33deaef9-9af1-4f2a-b443-681ea0d04f81",
]);
const handleShow = () => setShowModal(true);
@ -62,32 +63,32 @@ const ProjectList = () => {
.filter((statusId) => grouped[statusId])
.flatMap((statusId) =>
grouped[statusId].sort((a, b) =>
a.name.toLowerCase()?.localeCompare(b.name.toLowerCase())
a.name.toLowerCase().localeCompare(b.name.toLowerCase())
)
);
setProjectList(sortedGrouped);
setProjectList((prev) => {
const isSame = JSON.stringify(prev) === JSON.stringify(sortedGrouped);
return isSame ? prev : sortedGrouped;
});
}
};
useEffect(() => {
sortingProject(projects);
}, [projects, loginUser?.projects, loading]);
if (!loading && projects) {
sortingProject(projects);
}
}, [projects, loading, selectedStatuses]); // Include selectedStatuses if it changes filtering
useEffect(() => {
if (loginUser) {
setHasManageProject(HasManageProjectPermission);
} else {
setHasManageProject(false);
}
setHasManageProject(loginUser ? HasManageProjectPermission : false);
}, [loginUser, HasManageProjectPermission]);
const handleSubmitForm = (newProject, setloading, reset) => {
setloading(true);
const handleSubmitForm = (newProject, setLoading, reset) => {
setLoading(true);
createProject(newProject, {
onSettled: () => {
setloading(false);
setLoading(false);
reset();
},
});
@ -114,11 +115,15 @@ const ProjectList = () => {
return matchesStatus && matchesSearch;
});
const totalPages = Math.ceil(filteredProjects.length / ITEMS_PER_PAGE);
const totalPages = Math.ceil( filteredProjects.length / ITEMS_PER_PAGE );
const {
currentItems,
currentPage,
paginate,
setCurrentPage,
} = usePagination(filteredProjects, ITEMS_PER_PAGE);
const {currentItems,currentPage,paginate,setCurrentPage} = usePagination(filteredProjects, ITEMS_PER_PAGE)
useEffect(() => {
const tooltipTriggerList = Array.from(
document.querySelectorAll('[data-bs-toggle="tooltip"]')
@ -126,8 +131,6 @@ const ProjectList = () => {
tooltipTriggerList.forEach((el) => new bootstrap.Tooltip(el));
}, []);
return (
<>