Fix `convert.ToTeams` on empty input (#28426) (#28767)

Backport #28426 by @KN4CK3R

Fixes #28420

Don't return `nil` if the input was empty.

Co-authored-by: KN4CK3R <admin@oldschoolhack.me>
This commit is contained in:
Giteabot 2024-01-12 15:12:18 +08:00 committed by GitHub
parent cb33623bb6
commit 95901a99c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 26 deletions

View File

@ -308,40 +308,38 @@ func ToTeam(ctx context.Context, team *organization.Team, loadOrg ...bool) (*api
// ToTeams convert models.Team list to api.Team list // ToTeams convert models.Team list to api.Team list
func ToTeams(ctx context.Context, teams []*organization.Team, loadOrgs bool) ([]*api.Team, error) { func ToTeams(ctx context.Context, teams []*organization.Team, loadOrgs bool) ([]*api.Team, error) {
if len(teams) == 0 || teams[0] == nil {
return nil, nil
}
cache := make(map[int64]*api.Organization) cache := make(map[int64]*api.Organization)
apiTeams := make([]*api.Team, len(teams)) apiTeams := make([]*api.Team, 0, len(teams))
for i := range teams { for _, t := range teams {
if err := teams[i].LoadUnits(ctx); err != nil { if err := t.LoadUnits(ctx); err != nil {
return nil, err return nil, err
} }
apiTeams[i] = &api.Team{ apiTeam := &api.Team{
ID: teams[i].ID, ID: t.ID,
Name: teams[i].Name, Name: t.Name,
Description: teams[i].Description, Description: t.Description,
IncludesAllRepositories: teams[i].IncludesAllRepositories, IncludesAllRepositories: t.IncludesAllRepositories,
CanCreateOrgRepo: teams[i].CanCreateOrgRepo, CanCreateOrgRepo: t.CanCreateOrgRepo,
Permission: teams[i].AccessMode.String(), Permission: t.AccessMode.String(),
Units: teams[i].GetUnitNames(), Units: t.GetUnitNames(),
UnitsMap: teams[i].GetUnitsMap(), UnitsMap: t.GetUnitsMap(),
} }
if loadOrgs { if loadOrgs {
apiOrg, ok := cache[teams[i].OrgID] apiOrg, ok := cache[t.OrgID]
if !ok { if !ok {
org, err := organization.GetOrgByID(ctx, teams[i].OrgID) org, err := organization.GetOrgByID(ctx, t.OrgID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
apiOrg = ToOrganization(ctx, org) apiOrg = ToOrganization(ctx, org)
cache[teams[i].OrgID] = apiOrg cache[t.OrgID] = apiOrg
} }
apiTeams[i].Organization = apiOrg apiTeam.Organization = apiOrg
} }
apiTeams = append(apiTeams, apiTeam)
} }
return apiTeams, nil return apiTeams, nil
} }

View File

@ -21,15 +21,9 @@ func ToPullReview(ctx context.Context, r *issues_model.Review, doer *user_model.
r.Reviewer = user_model.NewGhostUser() r.Reviewer = user_model.NewGhostUser()
} }
apiTeam, err := ToTeam(ctx, r.ReviewerTeam)
if err != nil {
return nil, err
}
result := &api.PullReview{ result := &api.PullReview{
ID: r.ID, ID: r.ID,
Reviewer: ToUser(ctx, r.Reviewer, doer), Reviewer: ToUser(ctx, r.Reviewer, doer),
ReviewerTeam: apiTeam,
State: api.ReviewStateUnknown, State: api.ReviewStateUnknown,
Body: r.Content, Body: r.Content,
CommitID: r.CommitID, CommitID: r.CommitID,
@ -43,6 +37,14 @@ func ToPullReview(ctx context.Context, r *issues_model.Review, doer *user_model.
HTMLPullURL: r.Issue.HTMLURL(), HTMLPullURL: r.Issue.HTMLURL(),
} }
if r.ReviewerTeam != nil {
var err error
result.ReviewerTeam, err = ToTeam(ctx, r.ReviewerTeam)
if err != nil {
return nil, err
}
}
switch r.Type { switch r.Type {
case issues_model.ReviewTypeApprove: case issues_model.ReviewTypeApprove:
result.State = api.ReviewStateApproved result.State = api.ReviewStateApproved