diff --git a/internal/route/api/v1/repo/repo.go b/internal/route/api/v1/repo/repo.go index a4cc36b30..3f6fcab8d 100644 --- a/internal/route/api/v1/repo/repo.go +++ b/internal/route/api/v1/repo/repo.go @@ -116,19 +116,28 @@ func listUserRepositories(c *context.APIContext, username string) { return } - accessibleRepos, err := db.Repos.GetByCollaboratorIDWithAccessMode(c.Req.Context(), user.ID) + accessibleReposWithAccessMode, err := db.Repos.GetByCollaboratorIDWithAccessMode(c.Req.Context(), user.ID) if err != nil { c.Error(err, "get repositories accesses by collaborator") return } + accessibleRepos := make([]*db.Repository, 0, len(accessibleReposWithAccessMode)) + for repo := range accessibleReposWithAccessMode { + accessibleRepos = append(accessibleRepos, repo) + } + if err = db.RepositoryList(accessibleRepos).LoadAttributes(); err != nil { + c.Error(err, "load attributes for accessible repositories") + return + } + numOwnRepos := len(ownRepos) - repos := make([]*api.Repository, 0, numOwnRepos+len(accessibleRepos)) + repos := make([]*api.Repository, 0, numOwnRepos+len(accessibleReposWithAccessMode)) for _, r := range ownRepos { repos = append(repos, r.APIFormatLegacy(&api.Permission{Admin: true, Push: true, Pull: true})) } - for repo, access := range accessibleRepos { + for repo, access := range accessibleReposWithAccessMode { repos = append(repos, repo.APIFormatLegacy(&api.Permission{ Admin: access >= db.AccessModeAdmin,