1
0
mirror of https://github.com/go-gitea/gitea.git synced 2024-10-26 07:55:34 +03:00

fix null pull request reviewers from api if reviews assigned to team

This commit is contained in:
emrebdr 2024-08-04 01:48:25 +03:00
parent 976f78eb77
commit f7bfdbaf01
2 changed files with 38 additions and 3 deletions

View File

@ -8,6 +8,7 @@ import (
"context"
"fmt"
"io"
"maps"
"regexp"
"strconv"
"strings"
@ -303,9 +304,22 @@ func (pr *PullRequest) LoadRequestedReviewers(ctx context.Context) error {
if err = reviews.LoadReviewers(ctx); err != nil {
return err
}
pr.isRequestedReviewersLoaded = true
reviewsUserMap := make(map[int64]*user_model.User, 0)
for _, review := range reviews {
pr.RequestedReviewers = append(pr.RequestedReviewers, review.Reviewer)
if review.ReviewerID != 0 {
reviewsUserMap[review.ReviewerID] = review.Reviewer
}
}
teamReviewsMembersMap, err := reviews.GetReviewersTeamMembers(ctx)
if err != nil {
return err
}
maps.Copy(reviewsUserMap, teamReviewsMembersMap)
pr.isRequestedReviewersLoaded = true
for _, user := range reviewsUserMap {
pr.RequestedReviewers = append(pr.RequestedReviewers, user)
}
return nil

View File

@ -7,10 +7,10 @@ import (
"context"
"code.gitea.io/gitea/models/db"
"code.gitea.io/gitea/models/organization"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/container"
"code.gitea.io/gitea/modules/optional"
"xorm.io/builder"
)
@ -37,6 +37,27 @@ func (reviews ReviewList) LoadReviewers(ctx context.Context) error {
return nil
}
// GetReviewersTeamMembers returns team members if reviews reviewer is team
func (reviews ReviewList) GetReviewersTeamMembers(ctx context.Context) (map[int64]*user_model.User, error) {
teamMembersMap := make(map[int64]*user_model.User, 0)
for i := 0; i < len(reviews); i++ {
if reviews[i].ReviewerID == 0 && reviews[i].ReviewerTeamID != 0 {
members, err := organization.GetTeamMembers(ctx, &organization.SearchMembersOptions{
TeamID: reviews[i].ReviewerTeamID,
})
if err != nil {
return nil, err
}
for _, member := range members {
teamMembersMap[member.ID] = member
}
}
}
return teamMembersMap, nil
}
func (reviews ReviewList) LoadIssues(ctx context.Context) error {
issueIDs := container.FilterSlice(reviews, func(review *Review) (int64, bool) {
return review.IssueID, true