diff options
author | wxiaoguang <wxiaoguang@gmail.com> | 2023-04-20 14:39:44 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-20 02:39:44 -0400 |
commit | de2268ffab922de67f51e98541d0f9078795ac5d (patch) | |
tree | a9f79d0bcb2914d64ce1399a025fb01e887cc7eb /routers | |
parent | 92e07f270aa925d518b13686f78befb63da0a747 (diff) | |
download | gitea-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.go | 4 | ||||
-rw-r--r-- | routers/web/repo/issue.go | 28 |
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) } |