diff options
author | qwerty287 <80460567+qwerty287@users.noreply.github.com> | 2021-11-04 15:51:30 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-04 22:51:30 +0800 |
commit | e5b48dcac4cc195f64f642126b476df0b9e1c06e (patch) | |
tree | 5cb7eb12c1e821eefc0c13b8be24b78751b3a296 /routers/web | |
parent | d6f48209671e6c781dd3784eccb91bb64a2127fc (diff) | |
download | gitea-e5b48dcac4cc195f64f642126b476df0b9e1c06e.tar.gz gitea-e5b48dcac4cc195f64f642126b476df0b9e1c06e.zip |
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 <wxiaoguang@gmail.com>
Diffstat (limited to 'routers/web')
-rw-r--r-- | routers/web/repo/issue.go | 28 | ||||
-rw-r--r-- | routers/web/repo/issue_test.go | 71 |
2 files changed, 87 insertions, 12 deletions
diff --git a/routers/web/repo/issue.go b/routers/web/repo/issue.go index 173cb49e45..0816d41340 100644 --- a/routers/web/repo/issue.go +++ b/routers/web/repo/issue.go @@ -2577,9 +2577,33 @@ func combineLabelComments(issue *models.Issue) { if cur.Label != nil { // now cur MUST be label comment if prev.Type == models.CommentTypeLabel { // we can combine them only prev is a label comment if cur.Content != "1" { - prev.RemovedLabels = append(prev.RemovedLabels, cur.Label) + // remove labels from the AddedLabels list if the label that was removed is already + // in this list, and if it's not in this list, add the label to RemovedLabels + addedAndRemoved := false + for i, label := range prev.AddedLabels { + if cur.Label.ID == label.ID { + prev.AddedLabels = append(prev.AddedLabels[:i], prev.AddedLabels[i+1:]...) + addedAndRemoved = true + break + } + } + if !addedAndRemoved { + prev.RemovedLabels = append(prev.RemovedLabels, cur.Label) + } } else { - prev.AddedLabels = append(prev.AddedLabels, cur.Label) + // remove labels from the RemovedLabels list if the label that was added is already + // in this list, and if it's not in this list, add the label to AddedLabels + removedAndAdded := false + for i, label := range prev.RemovedLabels { + if cur.Label.ID == label.ID { + prev.RemovedLabels = append(prev.RemovedLabels[:i], prev.RemovedLabels[i+1:]...) + removedAndAdded = true + break + } + } + if !removedAndAdded { + prev.AddedLabels = append(prev.AddedLabels, cur.Label) + } } prev.CreatedUnix = cur.CreatedUnix // remove the current comment since it has been combined to prev comment diff --git a/routers/web/repo/issue_test.go b/routers/web/repo/issue_test.go index 7fb837fa12..6638baf34a 100644 --- a/routers/web/repo/issue_test.go +++ b/routers/web/repo/issue_test.go @@ -51,16 +51,7 @@ func TestCombineLabelComments(t *testing.T) { PosterID: 1, Content: "1", CreatedUnix: 0, - AddedLabels: []*models.Label{ - { - Name: "kind/bug", - }, - }, - RemovedLabels: []*models.Label{ - { - Name: "kind/bug", - }, - }, + AddedLabels: []*models.Label{}, Label: &models.Label{ Name: "kind/bug", }, @@ -310,6 +301,66 @@ func TestCombineLabelComments(t *testing.T) { }, }, }, + { + name: "kase 6", + beforeCombined: []*models.Comment{ + { + Type: models.CommentTypeLabel, + PosterID: 1, + Content: "1", + Label: &models.Label{ + Name: "kind/bug", + }, + CreatedUnix: 0, + }, + { + Type: models.CommentTypeLabel, + PosterID: 1, + Content: "1", + Label: &models.Label{ + Name: "reviewed/confirmed", + }, + CreatedUnix: 0, + }, + { + Type: models.CommentTypeLabel, + PosterID: 1, + Content: "", + Label: &models.Label{ + Name: "kind/bug", + }, + CreatedUnix: 0, + }, + { + Type: models.CommentTypeLabel, + PosterID: 1, + Content: "1", + Label: &models.Label{ + Name: "kind/feature", + }, + CreatedUnix: 0, + }, + }, + afterCombined: []*models.Comment{ + { + Type: models.CommentTypeLabel, + PosterID: 1, + Content: "1", + Label: &models.Label{ + Name: "kind/bug", + }, + AddedLabels: []*models.Label{ + { + Name: "reviewed/confirmed", + }, + { + Name: "kind/feature", + }, + }, + CreatedUnix: 0, + }, + }, + }, } for _, kase := range kases { |