optimized to prevented for maximum deep rendering
This commit is contained in:
parent
ce37d5f447
commit
2c4ad2ba4a
@ -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 (
|
||||
<>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user