]> source.dussan.org Git - gitea.git/commitdiff
Do not render empty comments (#29039)
authorwxiaoguang <wxiaoguang@gmail.com>
Sun, 4 Feb 2024 13:05:01 +0000 (21:05 +0800)
committerGitHub <noreply@github.com>
Sun, 4 Feb 2024 13:05:01 +0000 (13:05 +0000)
Follow #28654

The `comments` might be empty, so the templates shouldn't (and couldn't)
use it to render. When there is no comment, the UI should also be
updated to empty, so returning an empty body is good enough.

routers/web/repo/pull_review.go

index 156b70a999a42066b641c049ca76cccd00c3c324..a6b3bd1c8d77f7ae1afb04ffb1b898d75bc0aa2e 100644 (file)
@@ -153,12 +153,19 @@ func UpdateResolveConversation(ctx *context.Context) {
 }
 
 func renderConversation(ctx *context.Context, comment *issues_model.Comment, origin string) {
+       ctx.Data["PageIsPullFiles"] = origin == "diff"
+
        comments, err := issues_model.FetchCodeCommentsByLine(ctx, comment.Issue, ctx.Doer, comment.TreePath, comment.Line, ctx.Data["ShowOutdatedComments"].(bool))
        if err != nil {
                ctx.ServerError("FetchCodeCommentsByLine", err)
                return
        }
-       ctx.Data["PageIsPullFiles"] = (origin == "diff")
+       if len(comments) == 0 {
+               // if the comments are empty (deleted, outdated, etc), it doesn't need to render anything, just return an empty body to replace "conversation-holder" on the page
+               ctx.Resp.WriteHeader(http.StatusOK)
+               return
+       }
+
        ctx.Data["comments"] = comments
        if ctx.Data["CanMarkConversation"], err = issues_model.CanMarkConversation(ctx, comment.Issue, ctx.Doer); err != nil {
                ctx.ServerError("CanMarkConversation", err)
@@ -179,6 +186,8 @@ func renderConversation(ctx *context.Context, comment *issues_model.Comment, ori
                ctx.HTML(http.StatusOK, tplDiffConversation)
        } else if origin == "timeline" {
                ctx.HTML(http.StatusOK, tplTimelineConversation)
+       } else {
+               ctx.Error(http.StatusBadRequest, "Unknown origin: "+origin)
        }
 }