]> source.dussan.org Git - gitea.git/commitdiff
Move issue milestone assign to issue service and move webhook to notification (#8780)
authorLunny Xiao <xiaolunwen@gmail.com>
Sat, 2 Nov 2019 03:33:20 +0000 (11:33 +0800)
committerGitHub <noreply@github.com>
Sat, 2 Nov 2019 03:33:20 +0000 (11:33 +0800)
modules/notification/base/notifier.go
modules/notification/base/null.go
modules/notification/notification.go
modules/notification/webhook/webhook.go
routers/api/v1/repo/issue.go
routers/api/v1/repo/pull.go
routers/repo/issue.go
services/issue/milestone.go [new file with mode: 0644]
services/milestone/milestone.go [deleted file]

index c74bb52014dfaa6ca490c5b72afa9ead5c17b63c..b0e7b4cae827591db3f5b3b6f5a035edbf16487a 100644 (file)
@@ -20,7 +20,7 @@ type Notifier interface {
 
        NotifyNewIssue(*models.Issue)
        NotifyIssueChangeStatus(*models.User, *models.Issue, bool)
-       NotifyIssueChangeMilestone(doer *models.User, issue *models.Issue)
+       NotifyIssueChangeMilestone(doer *models.User, issue *models.Issue, oldMilestoneID int64)
        NotifyIssueChangeAssignee(doer *models.User, issue *models.Issue, assignee *models.User, removed bool, comment *models.Comment)
        NotifyIssueChangeContent(doer *models.User, issue *models.Issue, oldContent string)
        NotifyIssueClearLabels(doer *models.User, issue *models.Issue)
index 9fb08884a1981ab5cffcd10723bd42a50a1e5975..3524a53c1554eb5ab200507ab71dfb1017cfb561 100644 (file)
@@ -75,7 +75,7 @@ func (*NullNotifier) NotifyDeleteRelease(doer *models.User, rel *models.Release)
 }
 
 // NotifyIssueChangeMilestone places a place holder function
-func (*NullNotifier) NotifyIssueChangeMilestone(doer *models.User, issue *models.Issue) {
+func (*NullNotifier) NotifyIssueChangeMilestone(doer *models.User, issue *models.Issue, oldMilestoneID int64) {
 }
 
 // NotifyIssueChangeContent places a place holder function
index 0f1b63cf672bc3edc49a7a74b27a3c37a95e8ac5..70b1541e3525dd6d395f191303a0750a509d22bc 100644 (file)
@@ -128,9 +128,9 @@ func NotifyDeleteRelease(doer *models.User, rel *models.Release) {
 }
 
 // NotifyIssueChangeMilestone notifies change milestone to notifiers
-func NotifyIssueChangeMilestone(doer *models.User, issue *models.Issue) {
+func NotifyIssueChangeMilestone(doer *models.User, issue *models.Issue, oldMilestoneID int64) {
        for _, notifier := range notifiers {
-               notifier.NotifyIssueChangeMilestone(doer, issue)
+               notifier.NotifyIssueChangeMilestone(doer, issue, oldMilestoneID)
        }
 }
 
index 259b6352ab24c5e055c671d6638a44fd4b70a440..a969ad74f793e9b2bb8b4e9fdad3f05f6b2dfaf7 100644 (file)
@@ -419,3 +419,45 @@ func (m *webhookNotifier) NotifyIssueChangeLabels(doer *models.User, issue *mode
                log.Error("PrepareWebhooks [is_pull: %v]: %v", issue.IsPull, err)
        }
 }
+
+func (m *webhookNotifier) NotifyIssueChangeMilestone(doer *models.User, issue *models.Issue, oldMilestoneID int64) {
+       var hookAction api.HookIssueAction
+       var err error
+       if issue.MilestoneID > 0 {
+               hookAction = api.HookIssueMilestoned
+       } else {
+               hookAction = api.HookIssueDemilestoned
+       }
+
+       if err = issue.LoadAttributes(); err != nil {
+               log.Error("issue.LoadAttributes failed: %v", err)
+               return
+       }
+
+       mode, _ := models.AccessLevel(doer, issue.Repo)
+       if issue.IsPull {
+               err = issue.PullRequest.LoadIssue()
+               if err != nil {
+                       log.Error("LoadIssue: %v", err)
+                       return
+               }
+               err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{
+                       Action:      hookAction,
+                       Index:       issue.Index,
+                       PullRequest: issue.PullRequest.APIFormat(),
+                       Repository:  issue.Repo.APIFormat(mode),
+                       Sender:      doer.APIFormat(),
+               })
+       } else {
+               err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssues, &api.IssuePayload{
+                       Action:     hookAction,
+                       Index:      issue.Index,
+                       Issue:      issue.APIFormat(),
+                       Repository: issue.Repo.APIFormat(mode),
+                       Sender:     doer.APIFormat(),
+               })
+       }
+       if err != nil {
+               log.Error("PrepareWebhooks [is_pull: %v]: %v", issue.IsPull, err)
+       }
+}
index fe5862ea5e452d1954a231781cbbcb7770837017..1534c45df0a0fa45d444672430f04f2df233b1da 100644 (file)
@@ -20,7 +20,6 @@ import (
        "code.gitea.io/gitea/modules/timeutil"
        "code.gitea.io/gitea/modules/util"
        issue_service "code.gitea.io/gitea/services/issue"
-       milestone_service "code.gitea.io/gitea/services/milestone"
 )
 
 // SearchIssues searches for issues across the repositories that the user has access to
@@ -494,7 +493,7 @@ func EditIssue(ctx *context.APIContext, form api.EditIssueOption) {
                issue.MilestoneID != *form.Milestone {
                oldMilestoneID := issue.MilestoneID
                issue.MilestoneID = *form.Milestone
-               if err = milestone_service.ChangeMilestoneAssign(issue, ctx.User, oldMilestoneID); err != nil {
+               if err = issue_service.ChangeMilestoneAssign(issue, ctx.User, oldMilestoneID); err != nil {
                        ctx.Error(500, "ChangeMilestoneAssign", err)
                        return
                }
index 0180aebf89ddda908fd259e98a0152e9bcac46b1..9264c00cec614ddd45b0155350dcbb08dca53435 100644 (file)
@@ -18,7 +18,6 @@ import (
        api "code.gitea.io/gitea/modules/structs"
        "code.gitea.io/gitea/modules/timeutil"
        issue_service "code.gitea.io/gitea/services/issue"
-       milestone_service "code.gitea.io/gitea/services/milestone"
        pull_service "code.gitea.io/gitea/services/pull"
 )
 
@@ -420,7 +419,7 @@ func EditPullRequest(ctx *context.APIContext, form api.EditPullRequestOption) {
                issue.MilestoneID != form.Milestone {
                oldMilestoneID := issue.MilestoneID
                issue.MilestoneID = form.Milestone
-               if err = milestone_service.ChangeMilestoneAssign(issue, ctx.User, oldMilestoneID); err != nil {
+               if err = issue_service.ChangeMilestoneAssign(issue, ctx.User, oldMilestoneID); err != nil {
                        ctx.Error(500, "ChangeMilestoneAssign", err)
                        return
                }
index 9a691471d54d6a0c5e97d90f60da76a2ed3f46db..739370da6927c359bd2c2d12f608034dea9b8e2a 100644 (file)
@@ -28,7 +28,6 @@ import (
        "code.gitea.io/gitea/modules/util"
        comment_service "code.gitea.io/gitea/services/comments"
        issue_service "code.gitea.io/gitea/services/issue"
-       milestone_service "code.gitea.io/gitea/services/milestone"
 
        "github.com/unknwon/com"
 )
@@ -1099,7 +1098,7 @@ func UpdateIssueMilestone(ctx *context.Context) {
                        continue
                }
                issue.MilestoneID = milestoneID
-               if err := milestone_service.ChangeMilestoneAssign(issue, ctx.User, oldMilestoneID); err != nil {
+               if err := issue_service.ChangeMilestoneAssign(issue, ctx.User, oldMilestoneID); err != nil {
                        ctx.ServerError("ChangeMilestoneAssign", err)
                        return
                }
diff --git a/services/issue/milestone.go b/services/issue/milestone.go
new file mode 100644 (file)
index 0000000..6fe527f
--- /dev/null
@@ -0,0 +1,21 @@
+// Copyright 2019 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package issue
+
+import (
+       "code.gitea.io/gitea/models"
+       "code.gitea.io/gitea/modules/notification"
+)
+
+// ChangeMilestoneAssign changes assignment of milestone for issue.
+func ChangeMilestoneAssign(issue *models.Issue, doer *models.User, oldMilestoneID int64) (err error) {
+       if err = models.ChangeMilestoneAssign(issue, doer, oldMilestoneID); err != nil {
+               return
+       }
+
+       notification.NotifyIssueChangeMilestone(doer, issue, oldMilestoneID)
+
+       return nil
+}
diff --git a/services/milestone/milestone.go b/services/milestone/milestone.go
deleted file mode 100644 (file)
index 84e7fb3..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2019 The Gitea Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-package models
-
-import (
-       "code.gitea.io/gitea/models"
-       "code.gitea.io/gitea/modules/log"
-       api "code.gitea.io/gitea/modules/structs"
-       "code.gitea.io/gitea/modules/webhook"
-)
-
-// ChangeMilestoneAssign changes assignment of milestone for issue.
-func ChangeMilestoneAssign(issue *models.Issue, doer *models.User, oldMilestoneID int64) (err error) {
-       if err = models.ChangeMilestoneAssign(issue, doer, oldMilestoneID); err != nil {
-               return
-       }
-
-       var hookAction api.HookIssueAction
-       if issue.MilestoneID > 0 {
-               hookAction = api.HookIssueMilestoned
-       } else {
-               hookAction = api.HookIssueDemilestoned
-       }
-
-       if err = issue.LoadAttributes(); err != nil {
-               return err
-       }
-
-       mode, _ := models.AccessLevel(doer, issue.Repo)
-       if issue.IsPull {
-               err = issue.PullRequest.LoadIssue()
-               if err != nil {
-                       log.Error("LoadIssue: %v", err)
-                       return
-               }
-               err = webhook.PrepareWebhooks(issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{
-                       Action:      hookAction,
-                       Index:       issue.Index,
-                       PullRequest: issue.PullRequest.APIFormat(),
-                       Repository:  issue.Repo.APIFormat(mode),
-                       Sender:      doer.APIFormat(),
-               })
-       } else {
-               err = webhook.PrepareWebhooks(issue.Repo, models.HookEventIssues, &api.IssuePayload{
-                       Action:     hookAction,
-                       Index:      issue.Index,
-                       Issue:      issue.APIFormat(),
-                       Repository: issue.Repo.APIFormat(mode),
-                       Sender:     doer.APIFormat(),
-               })
-       }
-       if err != nil {
-               log.Error("PrepareWebhooks [is_pull: %v]: %v", issue.IsPull, err)
-       }
-       return nil
-}