summaryrefslogtreecommitdiffstats
path: root/routers
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2023-04-20 14:39:44 +0800
committerGitHub <noreply@github.com>2023-04-20 02:39:44 -0400
commitde2268ffab922de67f51e98541d0f9078795ac5d (patch)
treea9f79d0bcb2914d64ce1399a025fb01e887cc7eb /routers
parent92e07f270aa925d518b13686f78befb63da0a747 (diff)
downloadgitea-de2268ffab922de67f51e98541d0f9078795ac5d.tar.gz
gitea-de2268ffab922de67f51e98541d0f9078795ac5d.zip
Fix issue attachment handling (#24202)
Close #24195 Some of the changes are taken from my another fix https://github.com/go-gitea/gitea/pull/20147/commits/f07b0de997125c9b79cc5af27966a7cdd1803a4d in #20147 (although that PR was discarded ....) The bug is: 1. The old code doesn't handle `removedfile` event correctly 2. The old code doesn't provide attachments for type=CommentTypeReview This PR doesn't intend to refactor the "upload" code to a perfect state (to avoid making the review difficult), so some legacy styles are kept. --------- Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: Giteabot <teabot@gitea.io>
Diffstat (limited to 'routers')
-rw-r--r--routers/api/v1/repo/issue_comment.go4
-rw-r--r--routers/web/repo/issue.go28
2 files changed, 18 insertions, 14 deletions
diff --git a/routers/api/v1/repo/issue_comment.go b/routers/api/v1/repo/issue_comment.go
index 3d14343d47..6ae6063303 100644
--- a/routers/api/v1/repo/issue_comment.go
+++ b/routers/api/v1/repo/issue_comment.go
@@ -173,7 +173,7 @@ func ListIssueCommentsAndTimeline(ctx *context.APIContext) {
IssueID: issue.ID,
Since: since,
Before: before,
- Type: issues_model.CommentTypeUnknown,
+ Type: issues_model.CommentTypeUndefined,
}
comments, err := issues_model.FindComments(ctx, opts)
@@ -549,7 +549,7 @@ func editIssueComment(ctx *context.APIContext, form api.EditIssueCommentOption)
return
}
- if comment.Type != issues_model.CommentTypeComment && comment.Type != issues_model.CommentTypeReview && comment.Type != issues_model.CommentTypeCode {
+ if !comment.Type.HasContentSupport() {
ctx.Status(http.StatusNoContent)
return
}
diff --git a/routers/web/repo/issue.go b/routers/web/repo/issue.go
index fb61ec00d1..a9c67a9e34 100644
--- a/routers/web/repo/issue.go
+++ b/routers/web/repo/issue.go
@@ -1557,7 +1557,7 @@ func ViewIssue(ctx *context.Context) {
return
}
}
- } else if comment.Type == issues_model.CommentTypeCode || comment.Type == issues_model.CommentTypeReview || comment.Type == issues_model.CommentTypeDismissReview {
+ } else if comment.Type.HasContentSupport() {
comment.RenderedContent, err = markdown.RenderString(&markup.RenderContext{
URLPrefix: ctx.Repo.RepoLink,
Metas: ctx.Repo.Repository.ComposeMetas(),
@@ -2849,7 +2849,7 @@ func UpdateCommentContent(ctx *context.Context) {
return
}
- if comment.Type != issues_model.CommentTypeComment && comment.Type != issues_model.CommentTypeReview && comment.Type != issues_model.CommentTypeCode {
+ if !comment.Type.HasContentSupport() {
ctx.Error(http.StatusNoContent)
return
}
@@ -2913,7 +2913,7 @@ func DeleteComment(ctx *context.Context) {
if !ctx.IsSigned || (ctx.Doer.ID != comment.PosterID && !ctx.Repo.CanWriteIssuesOrPulls(comment.Issue.IsPull)) {
ctx.Error(http.StatusForbidden)
return
- } else if comment.Type != issues_model.CommentTypeComment && comment.Type != issues_model.CommentTypeCode {
+ } else if !comment.Type.HasContentSupport() {
ctx.Error(http.StatusNoContent)
return
}
@@ -3059,7 +3059,7 @@ func ChangeCommentReaction(ctx *context.Context) {
return
}
- if comment.Type != issues_model.CommentTypeComment && comment.Type != issues_model.CommentTypeCode && comment.Type != issues_model.CommentTypeReview {
+ if !comment.Type.HasContentSupport() {
ctx.Error(http.StatusNoContent)
return
}
@@ -3175,15 +3175,19 @@ func GetCommentAttachments(ctx *context.Context) {
ctx.NotFoundOrServerError("GetCommentByID", issues_model.IsErrCommentNotExist, err)
return
}
+
+ if !comment.Type.HasAttachmentSupport() {
+ ctx.ServerError("GetCommentAttachments", fmt.Errorf("comment type %v does not support attachments", comment.Type))
+ return
+ }
+
attachments := make([]*api.Attachment, 0)
- if comment.Type == issues_model.CommentTypeComment {
- if err := comment.LoadAttachments(ctx); err != nil {
- ctx.ServerError("LoadAttachments", err)
- return
- }
- for i := 0; i < len(comment.Attachments); i++ {
- attachments = append(attachments, convert.ToAttachment(comment.Attachments[i]))
- }
+ if err := comment.LoadAttachments(ctx); err != nil {
+ ctx.ServerError("LoadAttachments", err)
+ return
+ }
+ for i := 0; i < len(comment.Attachments); i++ {
+ attachments = append(attachments, convert.ToAttachment(comment.Attachments[i]))
}
ctx.JSON(http.StatusOK, attachments)
}