diff --git a/src/components/Project/ManageProjectInfo.jsx b/src/components/Project/ManageProjectInfo.jsx
index cafb9925..c257a4f9 100644
--- a/src/components/Project/ManageProjectInfo.jsx
+++ b/src/components/Project/ManageProjectInfo.jsx
@@ -18,8 +18,7 @@ const formatDate = (date) => {
};
const ManageProjectInfo = ( {project,handleSubmitForm, onClose} ) =>
{
- debugger
-
+
const [CurrentProject,setCurrentProject] = useState()
const [ isloading, setLoading ] = useState( false )
@@ -82,11 +81,7 @@ const ManageProjectInfo = ( {project,handleSubmitForm, onClose} ) =>
setLoading( true )
handleSubmitForm( updatedProject )
};
-
- useEffect( () =>
- {
- return ()=>setLoading(false)
- } )
+
diff --git a/src/hooks/useProfile.js b/src/hooks/useProfile.js
index 1e3bfcf2..1c663e0d 100644
--- a/src/hooks/useProfile.js
+++ b/src/hooks/useProfile.js
@@ -1,40 +1,46 @@
import {useState,useEffect} from "react";
import AuthRepository from "../repositories/AuthRepository";
import {cacheProfileData, getCachedProfileData} from "../slices/apiDataManager";
+import {useSelector} from "react-redux";
-export const useProfile =()=>{
+export const useProfile = () =>
+{
+ const loggedUser = useSelector((store)=>store.globalVariables.loginUser)
+
const [profile, setProfile] = useState(null);
const [loading, setLoading] = useState(false);
const [error, setError] = useState("");
-
+ const fetchData = async () =>
+ {
+ try
+ {
+ setLoading( true )
+ let response = await AuthRepository.profile();
+ setProfile( response )
+ cacheProfileData( response )
+ setLoading( false );
+
+ } catch ( error )
+ {
+ setLoading( false )
+ console.error( error );
+ setError( "Failed to fetch data." );
+ };
+ }
useEffect( () => {
-
- const fetchData = async () => {
- const profile_cache = getCachedProfileData()
-
- // if (!profile_cache) {
- setLoading(true)
- AuthRepository.profile()
- .then((response) => {
- setProfile(response)
- cacheProfileData(response)
- setLoading(false);
- })
- .catch((error) => {
- setLoading(false)
- console.error(error);
- setError("Failed to fetch data.");
- });
-
- // } else {
- // setProfile(profile_cache);
- // }
- };
- fetchData()
+
+ if (!loggedUser )
+ {
+ fetchData()
+ } else
+ {
+ setProfile(loggedUser)
+ }
+
},[])
return { profile,loading,error}
diff --git a/src/pages/authentication/LoginPage.jsx b/src/pages/authentication/LoginPage.jsx
index 204f8f9f..65623b1a 100644
--- a/src/pages/authentication/LoginPage.jsx
+++ b/src/pages/authentication/LoginPage.jsx
@@ -25,7 +25,9 @@ const LoginPage = () => {
}));
};
- const handleSubmit = async (e) => {
+ const handleSubmit = async ( e ) =>
+ {
+
e.preventDefault();
setLoading(true);
@@ -37,7 +39,7 @@ const LoginPage = () => {
const response = await AuthRepository.login(data);
localStorage.setItem("jwtToken", response.data.token);
- localStorage.setItem("refreshToken", response.data.refreshToken);
+ localStorage.setItem( "refreshToken", response.data.refreshToken );
setLoading(false);
navigate("/dashboard");
} catch (err) {
diff --git a/src/pages/employee/EmployeeList.jsx b/src/pages/employee/EmployeeList.jsx
index 04afe1a3..c0f03eb2 100644
--- a/src/pages/employee/EmployeeList.jsx
+++ b/src/pages/employee/EmployeeList.jsx
@@ -4,9 +4,7 @@ import { Link, NavLink, useNavigate } from "react-router-dom";
import Avatar from "../../components/common/Avatar";
import Breadcrumb from "../../components/common/Breadcrumb";
import ManageEmp from "../../components/Employee/ManageRole";
-import {useEmployeesAllOrByProjectId,useAllEmployees} from "../../hooks/useEmployees";
-import {useDispatch, useSelector} from "react-redux";
-import {setProjectId} from "../../slices/localVariablesSlice";
+import {useEmployeesAllOrByProjectId} from "../../hooks/useEmployees";
import { useProjects } from "../../hooks/useProjects";
import { useProfile } from "../../hooks/useProfile";
import {hasUserPermission} from "../../utils/authUtils";
@@ -17,11 +15,10 @@ const EmployeeList = () =>
const {profile:loginUser}= useProfile()
const [selectedProject, setSelectedProject] = useState("");
- const [ projectsList, setProjectsList ] = useState( [] );
const {projects, loading: projectLoading} = useProjects()
const {employees, loading,setLoading, error} = useEmployeesAllOrByProjectId( selectedProject );
- const dispatch = useDispatch()
+ const [ projectsList, setProjectsList ] = useState(projects || [] );
const [employeeList,setEmployeeList] = useState([])
const [modelConfig, setModelConfig] = useState();
@@ -48,19 +45,18 @@ const EmployeeList = () =>
setFilteredData(results);
};
- useEffect(() => {
- if ( loginUser && projects )
- {
- const filteredProjects = projects.filter((project) =>
- loginUser?.projects?.map(Number).includes(project.id)
- );
- setProjectsList(filteredProjects);
- }
- }, [ loginUser, projects ] );
-
-
+ // useEffect(() => {
+ // if ( loginUser && projects )
+ // {
+ // const filteredProjects = projects.filter((project) =>
+ // loginUser?.projects?.map(Number).includes(project.id)
+ // );
+ // setProjectsList(filteredProjects);
+ // }
+ // }, [ loginUser, projects ] );
+
useEffect(() => {
setCurrentPage( 1 )
@@ -72,8 +68,7 @@ const EmployeeList = () =>
}, [loading, employees, selectedProject]);
- const displayData = searchText ? filteredData :employeeList
-
+ const displayData = searchText ? filteredData : employeeList
const indexOfLastItem = currentPage * itemsPerPage;
const indexOfFirstItem = indexOfLastItem - itemsPerPage;
@@ -160,7 +155,7 @@ const EmployeeList = () =>
) : (
<>
- {Array.isArray(projectsList) && projectsList.map((item) => (
+ {Array.isArray(projects) && projects.map((item) => (
diff --git a/src/pages/project/ProjectList.jsx b/src/pages/project/ProjectList.jsx
index b252f193..6971c310 100644
--- a/src/pages/project/ProjectList.jsx
+++ b/src/pages/project/ProjectList.jsx
@@ -5,24 +5,22 @@ import Breadcrumb from "../../components/common/Breadcrumb";
import ProjectRepository from "../../repositories/ProjectRepository";
import { useProjects } from "../../hooks/useProjects";
import { useDispatch } from "react-redux";
-import { changeMaster } from "../../slices/localVariablesSlice";
import showToast from "../../services/toastService";
-import {
- getCachedData, cacheData
-} from "../../slices/apiDataManager";
+import { getCachedData, cacheData} from "../../slices/apiDataManager";
import {useHasUserPermission} from "../../hooks/useHasUserPermission"
import { useProfile } from "../../hooks/useProfile";
import {MANAGE_PROJECT} from "../../utils/constants";
const ProjectList = () =>
{
+
const {profile: loginUser} = useProfile();
const [showModal, setShowModal] = useState(false);
-
- const HasManageProjectPermission = useHasUserPermission(MANAGE_PROJECT)
- const { projects, loading, error, refetch } = useProjects();
+ const {projects, loading, error, refetch} = useProjects();
const [refresh, setRefresh] = useState(false);
- const [projectList, setProjectList] = useState([]);
+ const [ projectList, setProjectList ] = useState( [] );
+ const HasManageProjectPermission = useHasUserPermission( MANAGE_PROJECT )
+ const[HasManageProject,setHasManageProject] = useState(HasManageProjectPermission)
const dispatch = useDispatch();
const [currentPage, setCurrentPage] = useState(1);
const [itemsPerPage] = useState(5);
@@ -34,22 +32,31 @@ const ProjectList = () =>
useEffect(() => {
- if (projects && projects.length > 0) {
- setProjectList(
- projects?.filter((project) =>
- loginUser?.projects?.map(Number).includes(project.id)
- )
- );
- }
- }, [projects, loginUser?.projects, loading]);
+ setProjectList( projects )
+
+ }, [ projects, loginUser?.projects, loading ] );
+
+ useEffect(() => {
+ if (loginUser) {
+ setHasManageProject(HasManageProjectPermission);
+ } else {
+ setHasManageProject(false); }
+ }, [loginUser, HasManageProjectPermission]);
+
+
const handleSubmitForm = (newProject) => {
ProjectRepository.manageProject(newProject)
- .then((response) => {
- const cachedProjects_list = getCachedData("projectslist") || [];
- const updated_Projects_list = [...cachedProjects_list, response];
+ .then( ( response ) =>
+ {
+
+ const cachedProjects_list = getCachedData( "projectslist" ) || [];
+
+ const updated_Projects_list = [ ...cachedProjects_list, response.data ];
+
cacheData("projectslist", updated_Projects_list);
- setProjectList(updated_Projects_list);
+ setProjectList((prevProjectList) => [...prevProjectList, response.data]);
+
showToast("Project Created successfully.", "success");
setShowModal(false)
})
@@ -112,7 +119,7 @@ const ProjectList = () =>