diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2018-10-18 19:23:05 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-18 19:23:05 +0800 |
commit | ea619b39b2f2a3c1fb5ad28ebd4a269b2f822111 (patch) | |
tree | ef101ad2b39dc5be1744e4488bcdd5beab16e45d /routers | |
parent | dd62ca7ba9b49e799a8bea896cff1b209f813b7e (diff) | |
download | gitea-ea619b39b2f2a3c1fb5ad28ebd4a269b2f822111.tar.gz gitea-ea619b39b2f2a3c1fb5ad28ebd4a269b2f822111.zip |
Add notification interface and refactor UI notifications (#5085)
* add notification interface and refactor UI notifications
* add missing methods on notification interface and notifiy only issue status really changed
* implement NotifyPullRequestReview for ui notification
Diffstat (limited to 'routers')
-rw-r--r-- | routers/api/v1/repo/issue.go | 5 | ||||
-rw-r--r-- | routers/api/v1/repo/issue_comment.go | 3 | ||||
-rw-r--r-- | routers/api/v1/repo/pull.go | 5 | ||||
-rw-r--r-- | routers/repo/issue.go | 27 | ||||
-rw-r--r-- | routers/repo/pull.go | 4 | ||||
-rw-r--r-- | routers/repo/pull_review.go | 10 |
6 files changed, 40 insertions, 14 deletions
diff --git a/routers/api/v1/repo/issue.go b/routers/api/v1/repo/issue.go index f8ef0fe3d9..4b634c9ca6 100644 --- a/routers/api/v1/repo/issue.go +++ b/routers/api/v1/repo/issue.go @@ -13,6 +13,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/indexer" + "code.gitea.io/gitea/modules/notification" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" @@ -207,6 +208,8 @@ func CreateIssue(ctx *context.APIContext, form api.CreateIssueOption) { return } + notification.NotifyNewIssue(issue) + if form.Closed { if err := issue.ChangeStatus(ctx.User, ctx.Repo.Repository, true); err != nil { if models.IsErrDependenciesLeft(err) { @@ -337,6 +340,8 @@ func EditIssue(ctx *context.APIContext, form api.EditIssueOption) { ctx.Error(500, "ChangeStatus", err) return } + + notification.NotifyIssueChangeStatus(ctx.User, issue, api.StateClosed == api.StateType(*form.State)) } // Refetch from database to assign some automatic values diff --git a/routers/api/v1/repo/issue_comment.go b/routers/api/v1/repo/issue_comment.go index ba627bb8a2..f958922914 100644 --- a/routers/api/v1/repo/issue_comment.go +++ b/routers/api/v1/repo/issue_comment.go @@ -9,6 +9,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" + "code.gitea.io/gitea/modules/notification" api "code.gitea.io/sdk/gitea" ) @@ -163,6 +164,8 @@ func CreateIssueComment(ctx *context.APIContext, form api.CreateIssueCommentOpti return } + notification.NotifyCreateIssueComment(ctx.User, ctx.Repo.Repository, issue, comment) + ctx.JSON(201, comment.APIFormat()) } diff --git a/routers/api/v1/repo/pull.go b/routers/api/v1/repo/pull.go index 1527b8e8c9..0ec2d36871 100644 --- a/routers/api/v1/repo/pull.go +++ b/routers/api/v1/repo/pull.go @@ -14,6 +14,7 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/notification" "code.gitea.io/gitea/modules/util" api "code.gitea.io/sdk/gitea" @@ -270,6 +271,8 @@ func CreatePullRequest(ctx *context.APIContext, form api.CreatePullRequestOption return } + notification.NotifyNewPullRequest(pr) + log.Trace("Pull request created: %d/%d", repo.ID, prIssue.ID) ctx.JSON(201, pr.APIFormat()) } @@ -386,6 +389,8 @@ func EditPullRequest(ctx *context.APIContext, form api.EditPullRequestOption) { ctx.Error(500, "ChangeStatus", err) return } + + notification.NotifyIssueChangeStatus(ctx.User, issue, api.StateClosed == api.StateType(*form.State)) } // Refetch from database diff --git a/routers/repo/issue.go b/routers/repo/issue.go index 3cce483062..3bcfdf1b04 100644 --- a/routers/repo/issue.go +++ b/routers/repo/issue.go @@ -490,7 +490,7 @@ func NewIssuePost(ctx *context.Context, form auth.CreateIssueForm) { return } - notification.Service.NotifyIssue(issue, ctx.User.ID) + notification.NotifyNewIssue(issue) log.Trace("Issue created: %d/%d", repo.ID, issue.ID) ctx.Redirect(ctx.Repo.RepoLink + "/issues/" + com.ToStr(issue.Index)) @@ -1004,15 +1004,19 @@ func UpdateIssueStatus(ctx *context.Context) { return } for _, issue := range issues { - if err := issue.ChangeStatus(ctx.User, issue.Repo, isClosed); err != nil { - if models.IsErrDependenciesLeft(err) { - ctx.JSON(http.StatusPreconditionFailed, map[string]interface{}{ - "error": "cannot close this issue because it still has open dependencies", - }) + if issue.IsClosed != isClosed { + if err := issue.ChangeStatus(ctx.User, issue.Repo, isClosed); err != nil { + if models.IsErrDependenciesLeft(err) { + ctx.JSON(http.StatusPreconditionFailed, map[string]interface{}{ + "error": "cannot close this issue because it still has open dependencies", + }) + return + } + ctx.ServerError("ChangeStatus", err) return } - ctx.ServerError("ChangeStatus", err) - return + + notification.NotifyIssueChangeStatus(ctx.User, issue, isClosed) } } ctx.JSON(200, map[string]interface{}{ @@ -1072,7 +1076,8 @@ func NewComment(ctx *context.Context, form auth.CreateCommentForm) { if pr != nil { ctx.Flash.Info(ctx.Tr("repo.pulls.open_unmerged_pull_exists", pr.Index)) } else { - if err := issue.ChangeStatus(ctx.User, ctx.Repo.Repository, form.Status == "close"); err != nil { + isClosed := form.Status == "close" + if err := issue.ChangeStatus(ctx.User, ctx.Repo.Repository, isClosed); err != nil { log.Error(4, "ChangeStatus: %v", err) if models.IsErrDependenciesLeft(err) { @@ -1088,7 +1093,7 @@ func NewComment(ctx *context.Context, form auth.CreateCommentForm) { } else { log.Trace("Issue [%d] status changed to closed: %v", issue.ID, issue.IsClosed) - notification.Service.NotifyIssue(issue, ctx.User.ID) + notification.NotifyIssueChangeStatus(ctx.User, issue, isClosed) } } } @@ -1116,7 +1121,7 @@ func NewComment(ctx *context.Context, form auth.CreateCommentForm) { return } - notification.Service.NotifyIssue(issue, ctx.User.ID) + notification.NotifyCreateIssueComment(ctx.User, ctx.Repo.Repository, issue, comment) log.Trace("Comment created: %d/%d/%d", ctx.Repo.Repository.ID, issue.ID, comment.ID) } diff --git a/routers/repo/pull.go b/routers/repo/pull.go index 57fe33f855..4ec1c27cea 100644 --- a/routers/repo/pull.go +++ b/routers/repo/pull.go @@ -580,7 +580,7 @@ func MergePullRequest(ctx *context.Context, form auth.MergePullRequestForm) { return } - notification.Service.NotifyIssue(pr.Issue, ctx.User.ID) + notification.NotifyMergePullRequest(pr, ctx.User, ctx.Repo.GitRepo) log.Trace("Pull request merged: %d", pr.ID) ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(pr.Index)) @@ -888,7 +888,7 @@ func CompareAndPullRequestPost(ctx *context.Context, form auth.CreateIssueForm) return } - notification.Service.NotifyIssue(pullIssue, ctx.User.ID) + notification.NotifyNewPullRequest(pullRequest) log.Trace("Pull request created: %d/%d", repo.ID, pullIssue.ID) ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(pullIssue.Index)) diff --git a/routers/repo/pull_review.go b/routers/repo/pull_review.go index 9d1db3ff4e..91257fea33 100644 --- a/routers/repo/pull_review.go +++ b/routers/repo/pull_review.go @@ -79,7 +79,7 @@ func CreateCodeComment(ctx *context.Context, form auth.CodeCommentForm) { } // Send no notification if comment is pending if !form.IsReview { - notification.Service.NotifyIssue(issue, ctx.User.ID) + notification.NotifyCreateIssueComment(ctx.User, issue.Repo, issue, comment) } log.Trace("Comment created: %d/%d/%d", ctx.Repo.Repository.ID, issue.ID, comment.ID) @@ -184,5 +184,13 @@ func SubmitReview(ctx *context.Context, form auth.SubmitReviewForm) { ctx.ServerError("Publish", err) return } + + pr, err := issue.GetPullRequest() + if err != nil { + ctx.ServerError("GetPullRequest", err) + return + } + notification.NotifyPullRequestReview(pr, review, comm) + ctx.Redirect(fmt.Sprintf("%s/pulls/%d#%s", ctx.Repo.RepoLink, issue.Index, comm.HashTag())) } |