fix(issues): don't render team review requests as Ghost (#39416) (#39418)

Backport #39416 by @bircni

Closes https://github.com/go-gitea/gitea/issues/39414

`CommentList.loadAssignees` set a Ghost assignee on every comment
without an `AssigneeID` whenever another comment in the same batch had
one. Since https://github.com/go-gitea/gitea/pull/38413 the timeline
prefers `Assignee` over `AssigneeTeam`, so team review requests, from
CODEOWNERS or added manually, rendered as "Ghost" whenever the timeline
also had a user assignee or user review request. Skip comments without
an `AssigneeID`.

Co-authored-by: bircni <bircni@icloud.com>
Co-authored-by: silverwind <me@silverwind.io>
This commit is contained in:
Giteabot
2026-09-24 19:36:06 +00:00
committed by GitHub
co-authored by bircni silverwind
parent 6d600e64b5
commit a1a092445d
2 changed files with 17 additions and 0 deletions
+3
View File
@@ -201,6 +201,9 @@ func (comments CommentList) loadAssignees(ctx context.Context) error {
}
for _, comment := range comments {
if comment.AssigneeID <= 0 {
continue
}
comment.Assignee = assignees[comment.AssigneeID]
if comment.Assignee == nil {
comment.AssigneeID = user_model.GhostUserID
+14
View File
@@ -58,6 +58,20 @@ func TestLoadAssigneeUserAndTeam_DeletedTeamBecomesGhostTeam(t *testing.T) {
assert.EqualValues(t, -1, comment.AssigneeTeam.ID)
}
func TestCommentListLoadAttributesMixedAssignees(t *testing.T) {
assert.NoError(t, unittest.PrepareTestDatabase())
comments := issues_model.CommentList{
{AssigneeTeamID: 8},
{AssigneeID: 999999},
}
assert.NoError(t, comments.LoadAttributes(t.Context()))
assert.Nil(t, comments[0].Assignee)
assert.Zero(t, comments[0].AssigneeID)
assert.Equal(t, user_model.GhostUserID, comments[1].AssigneeID)
assert.Equal(t, user_model.GhostUserID, comments[1].Assignee.ID)
}
func Test_UpdateCommentAttachment(t *testing.T) {
assert.NoError(t, unittest.PrepareTestDatabase())