Skip to content

Commit e5b48dc

Browse files
Hide label comments if labels were added and removed immediately (#17455)
* Hide label comments if labels were added and removed immediately * Add comment and rename var * Fix unit test * Add test case Co-authored-by: wxiaoguang <[email protected]>
1 parent d6f4820 commit e5b48dc

File tree

2 files changed

+87
-12
lines changed

2 files changed

+87
-12
lines changed

routers/web/repo/issue.go

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2577,9 +2577,33 @@ func combineLabelComments(issue *models.Issue) {
25772577
if cur.Label != nil { // now cur MUST be label comment
25782578
if prev.Type == models.CommentTypeLabel { // we can combine them only prev is a label comment
25792579
if cur.Content != "1" {
2580-
prev.RemovedLabels = append(prev.RemovedLabels, cur.Label)
2580+
// remove labels from the AddedLabels list if the label that was removed is already
2581+
// in this list, and if it's not in this list, add the label to RemovedLabels
2582+
addedAndRemoved := false
2583+
for i, label := range prev.AddedLabels {
2584+
if cur.Label.ID == label.ID {
2585+
prev.AddedLabels = append(prev.AddedLabels[:i], prev.AddedLabels[i+1:]...)
2586+
addedAndRemoved = true
2587+
break
2588+
}
2589+
}
2590+
if !addedAndRemoved {
2591+
prev.RemovedLabels = append(prev.RemovedLabels, cur.Label)
2592+
}
25812593
} else {
2582-
prev.AddedLabels = append(prev.AddedLabels, cur.Label)
2594+
// remove labels from the RemovedLabels list if the label that was added is already
2595+
// in this list, and if it's not in this list, add the label to AddedLabels
2596+
removedAndAdded := false
2597+
for i, label := range prev.RemovedLabels {
2598+
if cur.Label.ID == label.ID {
2599+
prev.RemovedLabels = append(prev.RemovedLabels[:i], prev.RemovedLabels[i+1:]...)
2600+
removedAndAdded = true
2601+
break
2602+
}
2603+
}
2604+
if !removedAndAdded {
2605+
prev.AddedLabels = append(prev.AddedLabels, cur.Label)
2606+
}
25832607
}
25842608
prev.CreatedUnix = cur.CreatedUnix
25852609
// remove the current comment since it has been combined to prev comment

routers/web/repo/issue_test.go

Lines changed: 61 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,16 +51,7 @@ func TestCombineLabelComments(t *testing.T) {
5151
PosterID: 1,
5252
Content: "1",
5353
CreatedUnix: 0,
54-
AddedLabels: []*models.Label{
55-
{
56-
Name: "kind/bug",
57-
},
58-
},
59-
RemovedLabels: []*models.Label{
60-
{
61-
Name: "kind/bug",
62-
},
63-
},
54+
AddedLabels: []*models.Label{},
6455
Label: &models.Label{
6556
Name: "kind/bug",
6657
},
@@ -310,6 +301,66 @@ func TestCombineLabelComments(t *testing.T) {
310301
},
311302
},
312303
},
304+
{
305+
name: "kase 6",
306+
beforeCombined: []*models.Comment{
307+
{
308+
Type: models.CommentTypeLabel,
309+
PosterID: 1,
310+
Content: "1",
311+
Label: &models.Label{
312+
Name: "kind/bug",
313+
},
314+
CreatedUnix: 0,
315+
},
316+
{
317+
Type: models.CommentTypeLabel,
318+
PosterID: 1,
319+
Content: "1",
320+
Label: &models.Label{
321+
Name: "reviewed/confirmed",
322+
},
323+
CreatedUnix: 0,
324+
},
325+
{
326+
Type: models.CommentTypeLabel,
327+
PosterID: 1,
328+
Content: "",
329+
Label: &models.Label{
330+
Name: "kind/bug",
331+
},
332+
CreatedUnix: 0,
333+
},
334+
{
335+
Type: models.CommentTypeLabel,
336+
PosterID: 1,
337+
Content: "1",
338+
Label: &models.Label{
339+
Name: "kind/feature",
340+
},
341+
CreatedUnix: 0,
342+
},
343+
},
344+
afterCombined: []*models.Comment{
345+
{
346+
Type: models.CommentTypeLabel,
347+
PosterID: 1,
348+
Content: "1",
349+
Label: &models.Label{
350+
Name: "kind/bug",
351+
},
352+
AddedLabels: []*models.Label{
353+
{
354+
Name: "reviewed/confirmed",
355+
},
356+
{
357+
Name: "kind/feature",
358+
},
359+
},
360+
CreatedUnix: 0,
361+
},
362+
},
363+
},
313364
}
314365

315366
for _, kase := range kases {

0 commit comments

Comments
 (0)