summaryrefslogtreecommitdiffstats
path: root/routers/web
diff options
context:
space:
mode:
authorqwerty287 <80460567+qwerty287@users.noreply.github.com>2021-11-04 15:51:30 +0100
committerGitHub <noreply@github.com>2021-11-04 22:51:30 +0800
commite5b48dcac4cc195f64f642126b476df0b9e1c06e (patch)
tree5cb7eb12c1e821eefc0c13b8be24b78751b3a296 /routers/web
parentd6f48209671e6c781dd3784eccb91bb64a2127fc (diff)
downloadgitea-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.go28
-rw-r--r--routers/web/repo/issue_test.go71
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 {