Skip to content

Commit 02c9f9a

Browse files
committed
Move issue notifications
1 parent e3875ac commit 02c9f9a

File tree

7 files changed

+35
-55
lines changed

7 files changed

+35
-55
lines changed

modules/notification/webhook/webhook.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,3 +262,18 @@ func (m *webhookNotifier) NotifyIssueChangeStatus(doer *models.User, issue *mode
262262
go models.HookQueue.Add(issue.Repo.ID)
263263
}
264264
}
265+
266+
func (m *webhookNotifier) NotifyNewIssue(issue *models.Issue) {
267+
mode, _ := models.AccessLevel(issue.Poster, issue.Repo)
268+
if err := models.PrepareWebhooks(issue.Repo, models.HookEventIssues, &api.IssuePayload{
269+
Action: api.HookIssueOpened,
270+
Index: issue.Index,
271+
Issue: issue.APIFormat(),
272+
Repository: issue.Repo.APIFormat(mode),
273+
Sender: issue.Poster.APIFormat(),
274+
}); err != nil {
275+
log.Error("PrepareWebhooks: %v", err)
276+
} else {
277+
go models.HookQueue.Add(issue.RepoID)
278+
}
279+
}

routers/api/v1/repo/issue.go

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import (
1414
"code.gitea.io/gitea/models"
1515
"code.gitea.io/gitea/modules/context"
1616
issue_indexer "code.gitea.io/gitea/modules/indexer/issues"
17-
"code.gitea.io/gitea/modules/notification"
1817
"code.gitea.io/gitea/modules/setting"
1918
api "code.gitea.io/gitea/modules/structs"
2019
"code.gitea.io/gitea/modules/timeutil"
@@ -237,7 +236,7 @@ func CreateIssue(ctx *context.APIContext, form api.CreateIssueOption) {
237236
form.Labels = make([]int64, 0)
238237
}
239238

240-
if err := issue_service.NewIssue(ctx.Repo.Repository, issue, form.Labels, nil); err != nil {
239+
if err := issue_service.NewIssue(ctx.Repo.Repository, issue, form.Labels, nil, assigneeIDs); err != nil {
241240
if models.IsErrUserDoesNotHaveAccessToRepo(err) {
242241
ctx.Error(400, "UserDoesNotHaveAccessToRepo", err)
243242
return
@@ -246,13 +245,6 @@ func CreateIssue(ctx *context.APIContext, form api.CreateIssueOption) {
246245
return
247246
}
248247

249-
if err := issue_service.AddAssignees(issue, ctx.User, assigneeIDs); err != nil {
250-
ctx.ServerError("AddAssignees", err)
251-
return
252-
}
253-
254-
notification.NotifyNewIssue(issue)
255-
256248
if form.Closed {
257249
if err := issue_service.ChangeStatus(issue, ctx.User, true); err != nil {
258250
if models.IsErrDependenciesLeft(err) {

routers/api/v1/repo/pull.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ func CreatePullRequest(ctx *context.APIContext, form api.CreatePullRequestOption
305305
}
306306
}
307307

308-
if err := pull_service.NewPullRequest(repo, prIssue, labelIDs, []string{}, pr, patch); err != nil {
308+
if err := pull_service.NewPullRequest(repo, prIssue, labelIDs, []string{}, pr, patch, assigneeIDs); err != nil {
309309
if models.IsErrUserDoesNotHaveAccessToRepo(err) {
310310
ctx.Error(400, "UserDoesNotHaveAccessToRepo", err)
311311
return
@@ -317,11 +317,6 @@ func CreatePullRequest(ctx *context.APIContext, form api.CreatePullRequestOption
317317
return
318318
}
319319

320-
if err := issue_service.AddAssignees(prIssue, ctx.User, assigneeIDs); err != nil {
321-
ctx.ServerError("AddAssignees", err)
322-
return
323-
}
324-
325320
notification.NotifyNewPullRequest(pr)
326321

327322
log.Trace("Pull request created: %d/%d", repo.ID, prIssue.ID)

routers/repo/issue.go

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -574,7 +574,7 @@ func NewIssuePost(ctx *context.Context, form auth.CreateIssueForm) {
574574
Content: form.Content,
575575
Ref: form.Ref,
576576
}
577-
if err := issue_service.NewIssue(repo, issue, labelIDs, attachments); err != nil {
577+
if err := issue_service.NewIssue(repo, issue, labelIDs, attachments, assigneeIDs); err != nil {
578578
if models.IsErrUserDoesNotHaveAccessToRepo(err) {
579579
ctx.Error(400, "UserDoesNotHaveAccessToRepo", err.Error())
580580
return
@@ -583,13 +583,6 @@ func NewIssuePost(ctx *context.Context, form auth.CreateIssueForm) {
583583
return
584584
}
585585

586-
if err := issue_service.AddAssignees(issue, ctx.User, assigneeIDs); err != nil {
587-
log.Error("AddAssignees: %v", err)
588-
ctx.Flash.Error(ctx.Tr("issues.assignee.error"))
589-
}
590-
591-
notification.NotifyNewIssue(issue)
592-
593586
log.Trace("Issue created: %d/%d", repo.ID, issue.ID)
594587
ctx.Redirect(ctx.Repo.RepoLink + "/issues/" + com.ToStr(issue.Index))
595588
}

routers/repo/pull.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import (
2424
"code.gitea.io/gitea/modules/setting"
2525
"code.gitea.io/gitea/modules/util"
2626
"code.gitea.io/gitea/services/gitdiff"
27-
issue_service "code.gitea.io/gitea/services/issue"
2827
pull_service "code.gitea.io/gitea/services/pull"
2928
repo_service "code.gitea.io/gitea/services/repository"
3029

@@ -772,7 +771,7 @@ func CompareAndPullRequestPost(ctx *context.Context, form auth.CreateIssueForm)
772771
// FIXME: check error in the case two people send pull request at almost same time, give nice error prompt
773772
// instead of 500.
774773

775-
if err := pull_service.NewPullRequest(repo, pullIssue, labelIDs, attachments, pullRequest, patch); err != nil {
774+
if err := pull_service.NewPullRequest(repo, pullIssue, labelIDs, attachments, pullRequest, patch, assigneeIDs); err != nil {
776775
if models.IsErrUserDoesNotHaveAccessToRepo(err) {
777776
ctx.Error(400, "UserDoesNotHaveAccessToRepo", err.Error())
778777
return
@@ -784,11 +783,6 @@ func CompareAndPullRequestPost(ctx *context.Context, form auth.CreateIssueForm)
784783
return
785784
}
786785

787-
if err := issue_service.AddAssignees(pullIssue, ctx.User, assigneeIDs); err != nil {
788-
log.Error("AddAssignees: %v", err)
789-
ctx.Flash.Error(ctx.Tr("issues.assignee.error"))
790-
}
791-
792786
notification.NotifyNewPullRequest(pullRequest)
793787

794788
log.Trace("Pull request created: %d/%d", repo.ID, pullIssue.ID)

services/issue/issue.go

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,20 @@ import (
1010
"code.gitea.io/gitea/models"
1111
"code.gitea.io/gitea/modules/log"
1212
"code.gitea.io/gitea/modules/notification"
13-
api "code.gitea.io/gitea/modules/structs"
1413
)
1514

1615
// NewIssue creates new issue with labels for repository.
17-
func NewIssue(repo *models.Repository, issue *models.Issue, labelIDs []int64, uuids []string) error {
16+
func NewIssue(repo *models.Repository, issue *models.Issue, labelIDs []int64, uuids []string, assigneeIDs []int64) error {
1817
if err := models.NewIssue(repo, issue, labelIDs, uuids); err != nil {
1918
return err
2019
}
2120

21+
for _, assigneeID := range assigneeIDs {
22+
if err := AddAssigneeIfNotAssigned(issue, issue.Poster, assigneeID); err != nil {
23+
return err
24+
}
25+
}
26+
2227
if err := models.NotifyWatchers(&models.Action{
2328
ActUserID: issue.Poster.ID,
2429
ActUser: issue.Poster,
@@ -31,18 +36,7 @@ func NewIssue(repo *models.Repository, issue *models.Issue, labelIDs []int64, uu
3136
log.Error("NotifyWatchers: %v", err)
3237
}
3338

34-
mode, _ := models.AccessLevel(issue.Poster, issue.Repo)
35-
if err := models.PrepareWebhooks(repo, models.HookEventIssues, &api.IssuePayload{
36-
Action: api.HookIssueOpened,
37-
Index: issue.Index,
38-
Issue: issue.APIFormat(),
39-
Repository: repo.APIFormat(mode),
40-
Sender: issue.Poster.APIFormat(),
41-
}); err != nil {
42-
log.Error("PrepareWebhooks: %v", err)
43-
} else {
44-
go models.HookQueue.Add(issue.RepoID)
45-
}
39+
notification.NotifyNewIssue(issue)
4640

4741
return nil
4842
}
@@ -149,13 +143,3 @@ func AddAssigneeIfNotAssigned(issue *models.Issue, doer *models.User, assigneeID
149143

150144
return nil
151145
}
152-
153-
// AddAssignees adds a list of assignes (from IDs) to an issue
154-
func AddAssignees(issue *models.Issue, doer *models.User, assigneeIDs []int64) (err error) {
155-
for _, assigneeID := range assigneeIDs {
156-
if err = AddAssigneeIfNotAssigned(issue, doer, assigneeID); err != nil {
157-
return err
158-
}
159-
}
160-
return nil
161-
}

services/pull/pull.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,21 @@ import (
1111
"code.gitea.io/gitea/modules/git"
1212
"code.gitea.io/gitea/modules/log"
1313
api "code.gitea.io/gitea/modules/structs"
14+
issue_service "code.gitea.io/gitea/services/issue"
1415
)
1516

1617
// NewPullRequest creates new pull request with labels for repository.
17-
func NewPullRequest(repo *models.Repository, pull *models.Issue, labelIDs []int64, uuids []string, pr *models.PullRequest, patch []byte) error {
18+
func NewPullRequest(repo *models.Repository, pull *models.Issue, labelIDs []int64, uuids []string, pr *models.PullRequest, patch []byte, assigneeIDs []int64) error {
1819
if err := models.NewPullRequest(repo, pull, labelIDs, uuids, pr, patch); err != nil {
1920
return err
2021
}
2122

23+
for _, assigneeID := range assigneeIDs {
24+
if err := issue_service.AddAssigneeIfNotAssigned(pull, pull.Poster, assigneeID); err != nil {
25+
return err
26+
}
27+
}
28+
2229
if err := models.NotifyWatchers(&models.Action{
2330
ActUserID: pull.Poster.ID,
2431
ActUser: pull.Poster,

0 commit comments

Comments
 (0)