Skip to content

Commit 8f26397

Browse files
authored
Move issue milestone assign to issue service and move webhook to notification (#8780)
1 parent f518fe6 commit 8f26397

File tree

9 files changed

+70
-68
lines changed

9 files changed

+70
-68
lines changed

modules/notification/base/notifier.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ type Notifier interface {
2020

2121
NotifyNewIssue(*models.Issue)
2222
NotifyIssueChangeStatus(*models.User, *models.Issue, bool)
23-
NotifyIssueChangeMilestone(doer *models.User, issue *models.Issue)
23+
NotifyIssueChangeMilestone(doer *models.User, issue *models.Issue, oldMilestoneID int64)
2424
NotifyIssueChangeAssignee(doer *models.User, issue *models.Issue, assignee *models.User, removed bool, comment *models.Comment)
2525
NotifyIssueChangeContent(doer *models.User, issue *models.Issue, oldContent string)
2626
NotifyIssueClearLabels(doer *models.User, issue *models.Issue)

modules/notification/base/null.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ func (*NullNotifier) NotifyDeleteRelease(doer *models.User, rel *models.Release)
7575
}
7676

7777
// NotifyIssueChangeMilestone places a place holder function
78-
func (*NullNotifier) NotifyIssueChangeMilestone(doer *models.User, issue *models.Issue) {
78+
func (*NullNotifier) NotifyIssueChangeMilestone(doer *models.User, issue *models.Issue, oldMilestoneID int64) {
7979
}
8080

8181
// NotifyIssueChangeContent places a place holder function

modules/notification/notification.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,9 @@ func NotifyDeleteRelease(doer *models.User, rel *models.Release) {
128128
}
129129

130130
// NotifyIssueChangeMilestone notifies change milestone to notifiers
131-
func NotifyIssueChangeMilestone(doer *models.User, issue *models.Issue) {
131+
func NotifyIssueChangeMilestone(doer *models.User, issue *models.Issue, oldMilestoneID int64) {
132132
for _, notifier := range notifiers {
133-
notifier.NotifyIssueChangeMilestone(doer, issue)
133+
notifier.NotifyIssueChangeMilestone(doer, issue, oldMilestoneID)
134134
}
135135
}
136136

modules/notification/webhook/webhook.go

+42
Original file line numberDiff line numberDiff line change
@@ -419,3 +419,45 @@ func (m *webhookNotifier) NotifyIssueChangeLabels(doer *models.User, issue *mode
419419
log.Error("PrepareWebhooks [is_pull: %v]: %v", issue.IsPull, err)
420420
}
421421
}
422+
423+
func (m *webhookNotifier) NotifyIssueChangeMilestone(doer *models.User, issue *models.Issue, oldMilestoneID int64) {
424+
var hookAction api.HookIssueAction
425+
var err error
426+
if issue.MilestoneID > 0 {
427+
hookAction = api.HookIssueMilestoned
428+
} else {
429+
hookAction = api.HookIssueDemilestoned
430+
}
431+
432+
if err = issue.LoadAttributes(); err != nil {
433+
log.Error("issue.LoadAttributes failed: %v", err)
434+
return
435+
}
436+
437+
mode, _ := models.AccessLevel(doer, issue.Repo)
438+
if issue.IsPull {
439+
err = issue.PullRequest.LoadIssue()
440+
if err != nil {
441+
log.Error("LoadIssue: %v", err)
442+
return
443+
}
444+
err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{
445+
Action: hookAction,
446+
Index: issue.Index,
447+
PullRequest: issue.PullRequest.APIFormat(),
448+
Repository: issue.Repo.APIFormat(mode),
449+
Sender: doer.APIFormat(),
450+
})
451+
} else {
452+
err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssues, &api.IssuePayload{
453+
Action: hookAction,
454+
Index: issue.Index,
455+
Issue: issue.APIFormat(),
456+
Repository: issue.Repo.APIFormat(mode),
457+
Sender: doer.APIFormat(),
458+
})
459+
}
460+
if err != nil {
461+
log.Error("PrepareWebhooks [is_pull: %v]: %v", issue.IsPull, err)
462+
}
463+
}

routers/api/v1/repo/issue.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020
"code.gitea.io/gitea/modules/timeutil"
2121
"code.gitea.io/gitea/modules/util"
2222
issue_service "code.gitea.io/gitea/services/issue"
23-
milestone_service "code.gitea.io/gitea/services/milestone"
2423
)
2524

2625
// 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) {
494493
issue.MilestoneID != *form.Milestone {
495494
oldMilestoneID := issue.MilestoneID
496495
issue.MilestoneID = *form.Milestone
497-
if err = milestone_service.ChangeMilestoneAssign(issue, ctx.User, oldMilestoneID); err != nil {
496+
if err = issue_service.ChangeMilestoneAssign(issue, ctx.User, oldMilestoneID); err != nil {
498497
ctx.Error(500, "ChangeMilestoneAssign", err)
499498
return
500499
}

routers/api/v1/repo/pull.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import (
1818
api "code.gitea.io/gitea/modules/structs"
1919
"code.gitea.io/gitea/modules/timeutil"
2020
issue_service "code.gitea.io/gitea/services/issue"
21-
milestone_service "code.gitea.io/gitea/services/milestone"
2221
pull_service "code.gitea.io/gitea/services/pull"
2322
)
2423

@@ -420,7 +419,7 @@ func EditPullRequest(ctx *context.APIContext, form api.EditPullRequestOption) {
420419
issue.MilestoneID != form.Milestone {
421420
oldMilestoneID := issue.MilestoneID
422421
issue.MilestoneID = form.Milestone
423-
if err = milestone_service.ChangeMilestoneAssign(issue, ctx.User, oldMilestoneID); err != nil {
422+
if err = issue_service.ChangeMilestoneAssign(issue, ctx.User, oldMilestoneID); err != nil {
424423
ctx.Error(500, "ChangeMilestoneAssign", err)
425424
return
426425
}

routers/repo/issue.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import (
2828
"code.gitea.io/gitea/modules/util"
2929
comment_service "code.gitea.io/gitea/services/comments"
3030
issue_service "code.gitea.io/gitea/services/issue"
31-
milestone_service "code.gitea.io/gitea/services/milestone"
3231

3332
"github.com/unknwon/com"
3433
)
@@ -1099,7 +1098,7 @@ func UpdateIssueMilestone(ctx *context.Context) {
10991098
continue
11001099
}
11011100
issue.MilestoneID = milestoneID
1102-
if err := milestone_service.ChangeMilestoneAssign(issue, ctx.User, oldMilestoneID); err != nil {
1101+
if err := issue_service.ChangeMilestoneAssign(issue, ctx.User, oldMilestoneID); err != nil {
11031102
ctx.ServerError("ChangeMilestoneAssign", err)
11041103
return
11051104
}

services/issue/milestone.go

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// Copyright 2019 The Gitea Authors. All rights reserved.
2+
// Use of this source code is governed by a MIT-style
3+
// license that can be found in the LICENSE file.
4+
5+
package issue
6+
7+
import (
8+
"code.gitea.io/gitea/models"
9+
"code.gitea.io/gitea/modules/notification"
10+
)
11+
12+
// ChangeMilestoneAssign changes assignment of milestone for issue.
13+
func ChangeMilestoneAssign(issue *models.Issue, doer *models.User, oldMilestoneID int64) (err error) {
14+
if err = models.ChangeMilestoneAssign(issue, doer, oldMilestoneID); err != nil {
15+
return
16+
}
17+
18+
notification.NotifyIssueChangeMilestone(doer, issue, oldMilestoneID)
19+
20+
return nil
21+
}

services/milestone/milestone.go

-58
This file was deleted.

0 commit comments

Comments
 (0)