fix(projects): correctly set project's archived state if their parent was archived
Resolves https://kolaente.dev/vikunja/frontend/issues/3795
This commit is contained in:
parent
5da1075f88
commit
df1f95871a
@ -422,7 +422,7 @@ func getUserProjectsStatement(parentProjectIDs []int64, userID int64, search str
|
|||||||
GroupBy("l.id")
|
GroupBy("l.id")
|
||||||
}
|
}
|
||||||
|
|
||||||
func getAllProjectsForUser(s *xorm.Session, userID int64, parentProjectIDs []int64, opts *projectOptions, projects *[]*Project, oldTotalCount int64) (resultCount int, totalCount int64, err error) {
|
func getAllProjectsForUser(s *xorm.Session, userID int64, parentProjectIDs []int64, opts *projectOptions, projects *[]*Project, oldTotalCount int64, archivedProjects map[int64]bool) (resultCount int, totalCount int64, err error) {
|
||||||
|
|
||||||
limit, start := getLimitFromPageIndex(opts.page, opts.perPage)
|
limit, start := getLimitFromPageIndex(opts.page, opts.perPage)
|
||||||
query := getUserProjectsStatement(parentProjectIDs, userID, opts.search, opts.getArchived)
|
query := getUserProjectsStatement(parentProjectIDs, userID, opts.search, opts.getArchived)
|
||||||
@ -455,6 +455,12 @@ func getAllProjectsForUser(s *xorm.Session, userID int64, parentProjectIDs []int
|
|||||||
|
|
||||||
newParentIDs := []int64{}
|
newParentIDs := []int64{}
|
||||||
for _, project := range currentProjects {
|
for _, project := range currentProjects {
|
||||||
|
if project.IsArchived {
|
||||||
|
archivedProjects[project.ID] = true
|
||||||
|
}
|
||||||
|
if archivedProjects[project.ParentProjectID] {
|
||||||
|
project.IsArchived = true
|
||||||
|
}
|
||||||
// Filter out parent project ids which we're not looking for to avoid leaking
|
// Filter out parent project ids which we're not looking for to avoid leaking
|
||||||
// information about parent projects
|
// information about parent projects
|
||||||
if !parentIDsMap[project.ParentProjectID] {
|
if !parentIDsMap[project.ParentProjectID] {
|
||||||
@ -468,7 +474,7 @@ func getAllProjectsForUser(s *xorm.Session, userID int64, parentProjectIDs []int
|
|||||||
// If we don't reset the limit for subprojects, it will be impossible to fetch all subprojects.
|
// If we don't reset the limit for subprojects, it will be impossible to fetch all subprojects.
|
||||||
opts.page = -1
|
opts.page = -1
|
||||||
|
|
||||||
return getAllProjectsForUser(s, userID, newParentIDs, opts, projects, oldTotalCount+totalCount)
|
return getAllProjectsForUser(s, userID, newParentIDs, opts, projects, oldTotalCount+totalCount, archivedProjects)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Gets the projects with their children without any tasks
|
// Gets the projects with their children without any tasks
|
||||||
@ -479,7 +485,8 @@ func getRawProjectsForUser(s *xorm.Session, opts *projectOptions) (projects []*P
|
|||||||
}
|
}
|
||||||
|
|
||||||
allProjects := []*Project{}
|
allProjects := []*Project{}
|
||||||
resultCount, totalItems, err = getAllProjectsForUser(s, fullUser.ID, nil, opts, &allProjects, 0)
|
archivedProjects := make(map[int64]bool)
|
||||||
|
resultCount, totalItems, err = getAllProjectsForUser(s, fullUser.ID, nil, opts, &allProjects, 0, archivedProjects)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user