Skip to content

Commit 4b8d9e5

Browse files
authored
Move labels webhooks to notification (#8749)
* Move webhooks to notification * fix notification
1 parent 484edb7 commit 4b8d9e5

File tree

2 files changed

+50
-52
lines changed

2 files changed

+50
-52
lines changed

modules/notification/webhook/webhook.go

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,3 +399,50 @@ func (m *webhookNotifier) NotifyDeleteComment(doer *models.User, comment *models
399399
go webhook_module.HookQueue.Add(comment.Issue.Repo.ID)
400400
}
401401
}
402+
403+
func (m *webhookNotifier) NotifyIssueChangeLabels(doer *models.User, issue *models.Issue,
404+
addedLabels []*models.Label, removedLabels []*models.Label) {
405+
var err error
406+
407+
if err = issue.LoadRepo(); err != nil {
408+
log.Error("LoadRepo: %v", err)
409+
return
410+
}
411+
412+
if err = issue.LoadPoster(); err != nil {
413+
log.Error("LoadPoster: %v", err)
414+
return
415+
}
416+
417+
mode, _ := models.AccessLevel(issue.Poster, issue.Repo)
418+
if issue.IsPull {
419+
if err = issue.LoadPullRequest(); err != nil {
420+
log.Error("loadPullRequest: %v", err)
421+
return
422+
}
423+
if err = issue.PullRequest.LoadIssue(); err != nil {
424+
log.Error("LoadIssue: %v", err)
425+
return
426+
}
427+
err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{
428+
Action: api.HookIssueLabelUpdated,
429+
Index: issue.Index,
430+
PullRequest: issue.PullRequest.APIFormat(),
431+
Repository: issue.Repo.APIFormat(models.AccessModeNone),
432+
Sender: doer.APIFormat(),
433+
})
434+
} else {
435+
err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssues, &api.IssuePayload{
436+
Action: api.HookIssueLabelUpdated,
437+
Index: issue.Index,
438+
Issue: issue.APIFormat(),
439+
Repository: issue.Repo.APIFormat(mode),
440+
Sender: doer.APIFormat(),
441+
})
442+
}
443+
if err != nil {
444+
log.Error("PrepareWebhooks [is_pull: %v]: %v", issue.IsPull, err)
445+
} else {
446+
go webhook_module.HookQueue.Add(issue.RepoID)
447+
}
448+
}

services/issue/label.go

Lines changed: 3 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -6,58 +6,9 @@ package issue
66

77
import (
88
"code.gitea.io/gitea/models"
9-
"code.gitea.io/gitea/modules/log"
109
"code.gitea.io/gitea/modules/notification"
11-
api "code.gitea.io/gitea/modules/structs"
12-
"code.gitea.io/gitea/modules/webhook"
1310
)
1411

15-
func sendLabelUpdatedWebhook(issue *models.Issue, doer *models.User) {
16-
var err error
17-
18-
if err = issue.LoadRepo(); err != nil {
19-
log.Error("LoadRepo: %v", err)
20-
return
21-
}
22-
23-
if err = issue.LoadPoster(); err != nil {
24-
log.Error("LoadPoster: %v", err)
25-
return
26-
}
27-
28-
mode, _ := models.AccessLevel(issue.Poster, issue.Repo)
29-
if issue.IsPull {
30-
if err = issue.LoadPullRequest(); err != nil {
31-
log.Error("loadPullRequest: %v", err)
32-
return
33-
}
34-
if err = issue.PullRequest.LoadIssue(); err != nil {
35-
log.Error("LoadIssue: %v", err)
36-
return
37-
}
38-
err = webhook.PrepareWebhooks(issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{
39-
Action: api.HookIssueLabelUpdated,
40-
Index: issue.Index,
41-
PullRequest: issue.PullRequest.APIFormat(),
42-
Repository: issue.Repo.APIFormat(models.AccessModeNone),
43-
Sender: doer.APIFormat(),
44-
})
45-
} else {
46-
err = webhook.PrepareWebhooks(issue.Repo, models.HookEventIssues, &api.IssuePayload{
47-
Action: api.HookIssueLabelUpdated,
48-
Index: issue.Index,
49-
Issue: issue.APIFormat(),
50-
Repository: issue.Repo.APIFormat(mode),
51-
Sender: doer.APIFormat(),
52-
})
53-
}
54-
if err != nil {
55-
log.Error("PrepareWebhooks [is_pull: %v]: %v", issue.IsPull, err)
56-
} else {
57-
go webhook.HookQueue.Add(issue.RepoID)
58-
}
59-
}
60-
6112
// ClearLabels clears all of an issue's labels
6213
func ClearLabels(issue *models.Issue, doer *models.User) (err error) {
6314
if err = issue.ClearLabels(doer); err != nil {
@@ -75,7 +26,7 @@ func AddLabel(issue *models.Issue, doer *models.User, label *models.Label) error
7526
return err
7627
}
7728

78-
sendLabelUpdatedWebhook(issue, doer)
29+
notification.NotifyIssueChangeLabels(doer, issue, []*models.Label{label}, nil)
7930
return nil
8031
}
8132

@@ -85,7 +36,7 @@ func AddLabels(issue *models.Issue, doer *models.User, labels []*models.Label) e
8536
return err
8637
}
8738

88-
sendLabelUpdatedWebhook(issue, doer)
39+
notification.NotifyIssueChangeLabels(doer, issue, labels, nil)
8940
return nil
9041
}
9142

@@ -107,6 +58,6 @@ func RemoveLabel(issue *models.Issue, doer *models.User, label *models.Label) er
10758
return err
10859
}
10960

110-
sendLabelUpdatedWebhook(issue, doer)
61+
notification.NotifyIssueChangeLabels(doer, issue, nil, []*models.Label{label})
11162
return nil
11263
}

0 commit comments

Comments
 (0)