fix(navigation): make sure updating a project's state works for sub projects as well.

This commit is contained in:
kolaente 2023-03-28 14:21:26 +02:00
parent b72a1d9d0c
commit c7d78daa91
Signed by: konrad
GPG Key ID: F40E70337AB24C9B
1 changed files with 13 additions and 4 deletions

View File

@ -57,19 +57,28 @@ export const useProjectStore = defineStore('project', () => {
isLoading.value = newIsLoading
}
function setProject(project: IProject) {
function setProject(project: IProject, updateChildren: boolean = true) {
projects.value[project.id] = project
update(project)
project.childProjects?.forEach(setProject)
if (baseStore.currentProject?.id === project.id) {
baseStore.setCurrentProject(project)
}
if (updateChildren) {
project.childProjects?.forEach(p => setProject(p))
}
// if the project is a child project, we need to also set it in the parent
if (project.parentProjectId) {
const parent = projects.value[project.parentProjectId]
parent.childProjects = parent.childProjects?.map(p => p.id === project.id ? project : p)
setProject(parent, false)
}
}
function setProjects(newProjects: IProject[]) {
newProjects.forEach(setProject)
newProjects.forEach(p => setProject(p))
}
function removeProjectById(project: IProject) {