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

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: silverwind <me@silverwind.io>
This commit is contained in:
bircni
2026-09-24 19:01:34 +00:00
committed by GitHub
co-authored by silverwind
parent 671a2f5dc0
commit 05f049e8bb
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())