From dc2613600cc5a2a0e1418762a779cd89f18dd30e Mon Sep 17 00:00:00 2001
From: KN4CK3R <admin@oldschoolhack.me>
Date: Fri, 20 Aug 2021 21:26:19 +0200
Subject: [PATCH] Keep attachments on tasklist update (#16750)

* Send attachments too.

* Use tasklist flag.

* use action="ignoreAttachments" instead of "tasklist"

* Use boolean parameter.

Co-authored-by: zeripath <art27@cantab.net>
---
 routers/web/repo/issue.go     | 18 +++++++++++-------
 web_src/js/markup/tasklist.js |  3 ++-
 2 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/routers/web/repo/issue.go b/routers/web/repo/issue.go
index ff83be441..56561c616 100644
--- a/routers/web/repo/issue.go
+++ b/routers/web/repo/issue.go
@@ -2127,13 +2127,6 @@ func UpdateCommentContent(ctx *context.Context) {
 		return
 	}
 
-	if comment.Type == models.CommentTypeComment {
-		if err := comment.LoadAttachments(); err != nil {
-			ctx.ServerError("LoadAttachments", err)
-			return
-		}
-	}
-
 	if !ctx.IsSigned || (ctx.User.ID != comment.PosterID && !ctx.Repo.CanWriteIssuesOrPulls(comment.Issue.IsPull)) {
 		ctx.Error(http.StatusForbidden)
 		return
@@ -2155,6 +2148,17 @@ func UpdateCommentContent(ctx *context.Context) {
 		return
 	}
 
+	if ctx.FormBool("ignore_attachments") {
+		return
+	}
+
+	if comment.Type == models.CommentTypeComment {
+		if err := comment.LoadAttachments(); err != nil {
+			ctx.ServerError("LoadAttachments", err)
+			return
+		}
+	}
+
 	if err := updateAttachments(comment, ctx.FormStrings("files[]")); err != nil {
 		ctx.ServerError("UpdateAttachments", err)
 		return
diff --git a/web_src/js/markup/tasklist.js b/web_src/js/markup/tasklist.js
index 24b29ddb7..ea1a1f824 100644
--- a/web_src/js/markup/tasklist.js
+++ b/web_src/js/markup/tasklist.js
@@ -46,9 +46,10 @@ export function initMarkupTasklist() {
           const {updateUrl, context} = editContentZone.dataset;
 
           await $.post(updateUrl, {
+            ignore_attachments: true,
             _csrf: window.config.csrf,
             content: newContent,
-            context,
+            context
           });
 
           rawContent.textContent = newContent;