aboutsummaryrefslogtreecommitdiffstats
path: root/routers
diff options
context:
space:
mode:
author赵智超 <1012112796@qq.com>2020-04-18 21:50:25 +0800
committerGitHub <noreply@github.com>2020-04-18 10:50:25 -0300
commit1b86f174ce99b579df35c32e800551b1fd1df807 (patch)
treee057206a13cea7a0e2eb0219bb66d8d83a8781c9 /routers
parent38d5f88a8183147cc5ecc6ece58fc28836a4af8b (diff)
downloadgitea-1b86f174ce99b579df35c32e800551b1fd1df807.tar.gz
gitea-1b86f174ce99b579df35c32e800551b1fd1df807.zip
Add a way to mark Conversation (code comment) resolved (#11037)
* Add a way to mark Conversation (code comment) resolved mark Conversation is a way to mark a Conversation is stale or be solved. when it's marked as stale, will be hided like stale. all Pull Request writer , Offical Reviewers and poster can add or remove Conversation resolved mark. Signed-off-by: a1012112796 <1012112796@qq.com> * fix lint * Apply suggestions from code review * Add ResolveDoer * fix ui Co-Authored-By: Lauris BH <lauris@nix.lv> Co-Authored-By: 6543 <6543@obermui.de> * change IsResolved to an function Add permission check in UpdateResolveConversation * Apply suggestions from code review * change return error for permisson check * add default message for deleted user * get issue message from comment * add migration for ``ResolveDoerID`` column another change: * block mark pending review as resolved because it's not necessary Co-authored-by: guillep2k <18600385+guillep2k@users.noreply.github.com> * change button color * resolve button size * fix code style * remove unusefull code Co-authored-by: guillep2k <18600385+guillep2k@users.noreply.github.com> Co-authored-by: Lauris BH <lauris@nix.lv> Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: guillep2k <18600385+guillep2k@users.noreply.github.com>
Diffstat (limited to 'routers')
-rw-r--r--routers/repo/issue.go10
-rw-r--r--routers/repo/pull.go7
-rw-r--r--routers/repo/pull_review.go47
-rw-r--r--routers/routes/routes.go1
4 files changed, 65 insertions, 0 deletions
diff --git a/routers/repo/issue.go b/routers/repo/issue.go
index 9ad379684a..a7fda4e769 100644
--- a/routers/repo/issue.go
+++ b/routers/repo/issue.go
@@ -990,6 +990,11 @@ func ViewIssue(ctx *context.Context) {
ctx.ServerError("Review.LoadCodeComments", err)
return
}
+
+ if err = comment.LoadResolveDoer(); err != nil {
+ ctx.ServerError("LoadResolveDoer", err)
+ return
+ }
}
}
@@ -1033,6 +1038,11 @@ func ViewIssue(ctx *context.Context) {
ctx.ServerError("IsUserAllowedToMerge", err)
return
}
+
+ if ctx.Data["CanMarkConversation"], err = models.CanMarkConversation(issue, ctx.User); err != nil {
+ ctx.ServerError("CanMarkConversation", err)
+ return
+ }
}
prUnit, err := repo.GetUnit(models.UnitTypePullRequests)
diff --git a/routers/repo/pull.go b/routers/repo/pull.go
index 63cc39865c..d23c93d0b6 100644
--- a/routers/repo/pull.go
+++ b/routers/repo/pull.go
@@ -624,6 +624,13 @@ func ViewPullFiles(ctx *context.Context) {
return
}
+ if ctx.IsSigned && ctx.User != nil {
+ if ctx.Data["CanMarkConversation"], err = models.CanMarkConversation(issue, ctx.User); err != nil {
+ ctx.ServerError("CanMarkConversation", err)
+ return
+ }
+ }
+
setImageCompareContext(ctx, baseCommit, commit)
setPathsCompareContext(ctx, baseCommit, commit, headTarget)
diff --git a/routers/repo/pull_review.go b/routers/repo/pull_review.go
index 0f5375dc16..730074b7f3 100644
--- a/routers/repo/pull_review.go
+++ b/routers/repo/pull_review.go
@@ -61,6 +61,53 @@ func CreateCodeComment(ctx *context.Context, form auth.CodeCommentForm) {
ctx.Redirect(comment.HTMLURL())
}
+// UpdateResolveConversation add or remove an Conversation resolved mark
+func UpdateResolveConversation(ctx *context.Context) {
+ action := ctx.Query("action")
+ commentID := ctx.QueryInt64("comment_id")
+
+ comment, err := models.GetCommentByID(commentID)
+ if err != nil {
+ ctx.ServerError("GetIssueByID", err)
+ return
+ }
+
+ if err = comment.LoadIssue(); err != nil {
+ ctx.ServerError("comment.LoadIssue", err)
+ return
+ }
+
+ var permResult bool
+ if permResult, err = models.CanMarkConversation(comment.Issue, ctx.User); err != nil {
+ ctx.ServerError("CanMarkConversation", err)
+ return
+ }
+ if !permResult {
+ ctx.Error(403)
+ return
+ }
+
+ if !comment.Issue.IsPull {
+ ctx.Error(400)
+ return
+ }
+
+ if action == "Resolve" || action == "UnResolve" {
+ err = models.MarkConversation(comment, ctx.User, action == "Resolve")
+ if err != nil {
+ ctx.ServerError("MarkConversation", err)
+ return
+ }
+ } else {
+ ctx.Error(400)
+ return
+ }
+
+ ctx.JSON(200, map[string]interface{}{
+ "ok": true,
+ })
+}
+
// SubmitReview creates a review out of the existing pending review or creates a new one if no pending review exist
func SubmitReview(ctx *context.Context, form auth.SubmitReviewForm) {
issue := GetActionIssue(ctx)
diff --git a/routers/routes/routes.go b/routers/routes/routes.go
index 2273cb4473..e2514054bf 100644
--- a/routers/routes/routes.go
+++ b/routers/routes/routes.go
@@ -739,6 +739,7 @@ func RegisterRoutes(m *macaron.Macaron) {
m.Post("/assignee", reqRepoIssuesOrPullsWriter, repo.UpdateIssueAssignee)
m.Post("/request_review", reqRepoIssuesOrPullsReader, repo.UpdatePullReviewRequest)
m.Post("/status", reqRepoIssuesOrPullsWriter, repo.UpdateIssueStatus)
+ m.Post("/resolve_conversation", reqRepoIssuesOrPullsReader, repo.UpdateResolveConversation)
}, context.RepoMustNotBeArchived())
m.Group("/comments/:id", func() {
m.Post("", repo.UpdateCommentContent)