mirror of
https://github.com/go-gitea/gitea.git
synced 2025-07-20 12:59:30 +03:00
fix null pull request reviewers from api if reviews assigned to team
This commit is contained in:
@ -8,6 +8,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"maps"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
@ -303,9 +304,22 @@ func (pr *PullRequest) LoadRequestedReviewers(ctx context.Context) error {
|
|||||||
if err = reviews.LoadReviewers(ctx); err != nil {
|
if err = reviews.LoadReviewers(ctx); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
pr.isRequestedReviewersLoaded = true
|
|
||||||
|
reviewsUserMap := make(map[int64]*user_model.User, 0)
|
||||||
for _, review := range reviews {
|
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
|
return nil
|
||||||
|
@ -7,10 +7,10 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
|
"code.gitea.io/gitea/models/organization"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
"code.gitea.io/gitea/modules/container"
|
"code.gitea.io/gitea/modules/container"
|
||||||
"code.gitea.io/gitea/modules/optional"
|
"code.gitea.io/gitea/modules/optional"
|
||||||
|
|
||||||
"xorm.io/builder"
|
"xorm.io/builder"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -37,6 +37,27 @@ func (reviews ReviewList) LoadReviewers(ctx context.Context) error {
|
|||||||
return nil
|
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 {
|
func (reviews ReviewList) LoadIssues(ctx context.Context) error {
|
||||||
issueIDs := container.FilterSlice(reviews, func(review *Review) (int64, bool) {
|
issueIDs := container.FilterSlice(reviews, func(review *Review) (int64, bool) {
|
||||||
return review.IssueID, true
|
return review.IssueID, true
|
||||||
|
Reference in New Issue
Block a user