diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2021-03-05 23:17:32 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-05 16:17:32 +0100 |
commit | 9db590f2ee198fa260c16387a8baa73f107db533 (patch) | |
tree | 00f777a8e3eeec08b0439e9ea7f76713ab0fafc6 /routers/repo/issue.go | |
parent | 144cfe5720d28da4a3b9a0697234740d88d3b4c3 (diff) | |
download | gitea-9db590f2ee198fa260c16387a8baa73f107db533.tar.gz gitea-9db590f2ee198fa260c16387a8baa73f107db533.zip |
Fix bug when combine label comments (#14894)
* Fix bug when combine label comments
* Added some code comments
* More comments
Diffstat (limited to 'routers/repo/issue.go')
-rw-r--r-- | routers/repo/issue.go | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/routers/repo/issue.go b/routers/repo/issue.go index 99df9db183..9f04c54816 100644 --- a/routers/repo/issue.go +++ b/routers/repo/issue.go @@ -2481,12 +2481,11 @@ func attachmentsHTML(ctx *context.Context, attachments []*models.Attachment, con return attachHTML } +// combineLabelComments combine the nearby label comments as one. func combineLabelComments(issue *models.Issue) { + var prev, cur *models.Comment for i := 0; i < len(issue.Comments); i++ { - var ( - prev *models.Comment - cur = issue.Comments[i] - ) + cur = issue.Comments[i] if i > 0 { prev = issue.Comments[i-1] } @@ -2503,16 +2502,25 @@ func combineLabelComments(issue *models.Issue) { continue } - if cur.Label != nil { - if cur.Content != "1" { - prev.RemovedLabels = append(prev.RemovedLabels, cur.Label) - } else { - prev.AddedLabels = append(prev.AddedLabels, cur.Label) + 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) + } else { + prev.AddedLabels = append(prev.AddedLabels, cur.Label) + } + prev.CreatedUnix = cur.CreatedUnix + // remove the current comment since it has been combined to prev comment + issue.Comments = append(issue.Comments[:i], issue.Comments[i+1:]...) + i-- + } else { // if prev is not a label comment, start a new group + if cur.Content != "1" { + cur.RemovedLabels = append(cur.RemovedLabels, cur.Label) + } else { + cur.AddedLabels = append(cur.AddedLabels, cur.Label) + } } } - prev.CreatedUnix = cur.CreatedUnix - issue.Comments = append(issue.Comments[:i], issue.Comments[i+1:]...) - i-- } } |