diff --git a/src/state/projects.js b/src/state/projects.js index c4cda543e..754dfdaf9 100644 --- a/src/state/projects.js +++ b/src/state/projects.js @@ -1,7 +1,7 @@ import { reactive, readonly, toRefs } from "vue"; import { PROJECT_ROLE } from "../config/projects.js"; import ProjectService from "../services/ProjectService.js"; -import { sortProjects } from "../utils/projects.js"; +import { removeProjectInList, sortProjects, updateProjectInList } from "../utils/projects.js"; import { fullName, sortUsers } from "../utils/users.js"; import { useUser } from "./user.js"; @@ -80,9 +80,8 @@ const updateProject = async (project) => { state.currentProject = newProject; } - let i = state.userProjects.findIndex(p => p.id === newProject.id); - state.userProjects.splice(i, 1, newProject); - state.spaceProjects.splice(i, 1, newProject); + updateProjectInList(state.userProjects, newProject); + updateProjectInList(state.spaceProjects, newProject); return newProject; }; @@ -90,9 +89,8 @@ const updateProject = async (project) => { const deleteProject = async (project) => { await ProjectService.deleteProject(project); - let i = state.userProjects.findIndex(p => p.id === project.id); - state.userProjects.splice(i, 1); - state.spaceProjects.splice(i, 1); + removeProjectInList(state.userProjects, project); + removeProjectInList(state.spaceProjects, project); state.projectsCount[project.cloud.id] -= 1; return project; @@ -101,9 +99,8 @@ const deleteProject = async (project) => { const leaveProject = async (project) => { await ProjectService.leaveProject(project); - let i = state.userProjects.findIndex(p => p.id === project.id); - state.userProjects.splice(i, 1); - state.spaceProjects.splice(i, 1); + removeProjectInList(state.userProjects, project); + removeProjectInList(state.spaceProjects, project); state.projectsCount[project.cloud.id] -= 1; return project; diff --git a/src/utils/projects.js b/src/utils/projects.js index 9b3503e25..651592703 100644 --- a/src/utils/projects.js +++ b/src/utils/projects.js @@ -35,4 +35,20 @@ function sortProjects(projects) { return projects.sort((a, b) => (a.created_at < b.created_at ? 1 : -1)); } -export { projectStatus, sortProjects }; +function updateProjectInList(projects, project) { + let i = projects.findIndex((p) => p.id === project.id); + if (i >= 0) { + projects.splice(i, 1, project); + } + return projects; +} + +function removeProjectInList(projects, project) { + let i = projects.findIndex((p) => p.id === project.id); + if (i >= 0) { + projects.splice(i, 1); + } + return projects; +} + +export { projectStatus, sortProjects, updateProjectInList, removeProjectInList };