diff options
Diffstat (limited to 'models/issue.go')
-rw-r--r-- | models/issue.go | 108 |
1 files changed, 93 insertions, 15 deletions
diff --git a/models/issue.go b/models/issue.go index f9e20daf..da70b28a 100644 --- a/models/issue.go +++ b/models/issue.go @@ -230,7 +230,7 @@ func (issue *Issue) sendLabelUpdatedWebhook(doer *User) { if issue.IsPull { err = issue.PullRequest.LoadIssue() if err != nil { - log.Error(4, "LoadIssue: %v", err) + log.Error(2, "LoadIssue: %v", err) return } err = PrepareWebhooks(issue.Repo, HOOK_EVENT_PULL_REQUEST, &api.PullRequestPayload{ @@ -240,9 +240,17 @@ func (issue *Issue) sendLabelUpdatedWebhook(doer *User) { Repository: issue.Repo.APIFormat(nil), Sender: doer.APIFormat(), }) + } else { + err = PrepareWebhooks(issue.Repo, HOOK_EVENT_ISSUES, &api.IssuesPayload{ + Action: api.HOOK_ISSUE_LABEL_UPDATED, + Index: issue.Index, + Issue: issue.APIFormat(), + Repository: issue.Repo.APIFormat(nil), + Sender: doer.APIFormat(), + }) } if err != nil { - log.Error(4, "PrepareWebhooks [is_pull: %v]: %v", issue.IsPull, err) + log.Error(2, "PrepareWebhooks [is_pull: %v]: %v", issue.IsPull, err) } else { go HookQueue.Add(issue.RepoID) } @@ -334,7 +342,7 @@ func (issue *Issue) ClearLabels(doer *User) (err error) { if issue.IsPull { err = issue.PullRequest.LoadIssue() if err != nil { - log.Error(4, "LoadIssue: %v", err) + log.Error(2, "LoadIssue: %v", err) return } err = PrepareWebhooks(issue.Repo, HOOK_EVENT_PULL_REQUEST, &api.PullRequestPayload{ @@ -344,9 +352,17 @@ func (issue *Issue) ClearLabels(doer *User) (err error) { Repository: issue.Repo.APIFormat(nil), Sender: doer.APIFormat(), }) + } else { + err = PrepareWebhooks(issue.Repo, HOOK_EVENT_ISSUES, &api.IssuesPayload{ + Action: api.HOOK_ISSUE_LABEL_CLEARED, + Index: issue.Index, + Issue: issue.APIFormat(), + Repository: issue.Repo.APIFormat(nil), + Sender: doer.APIFormat(), + }) } if err != nil { - log.Error(4, "PrepareWebhooks [is_pull: %v]: %v", issue.IsPull, err) + log.Error(2, "PrepareWebhooks [is_pull: %v]: %v", issue.IsPull, err) } else { go HookQueue.Add(issue.RepoID) } @@ -470,9 +486,22 @@ func (issue *Issue) ChangeStatus(doer *User, repo *Repository, isClosed bool) (e apiPullRequest.Action = api.HOOK_ISSUE_REOPENED } err = PrepareWebhooks(repo, HOOK_EVENT_PULL_REQUEST, apiPullRequest) + } else { + apiIssues := &api.IssuesPayload{ + Index: issue.Index, + Issue: issue.APIFormat(), + Repository: repo.APIFormat(nil), + Sender: doer.APIFormat(), + } + if isClosed { + apiIssues.Action = api.HOOK_ISSUE_CLOSED + } else { + apiIssues.Action = api.HOOK_ISSUE_REOPENED + } + err = PrepareWebhooks(repo, HOOK_EVENT_ISSUES, apiIssues) } if err != nil { - log.Error(4, "PrepareWebhooks [is_pull: %v, is_closed: %v]: %v", issue.IsPull, isClosed, err) + log.Error(2, "PrepareWebhooks [is_pull: %v, is_closed: %v]: %v", issue.IsPull, isClosed, err) } else { go HookQueue.Add(repo.ID) } @@ -490,20 +519,33 @@ func (issue *Issue) ChangeTitle(doer *User, title string) (err error) { if issue.IsPull { issue.PullRequest.Issue = issue err = PrepareWebhooks(issue.Repo, HOOK_EVENT_PULL_REQUEST, &api.PullRequestPayload{ + Action: api.HOOK_ISSUE_EDITED, + Index: issue.Index, + PullRequest: issue.PullRequest.APIFormat(), + Changes: &api.ChangesPayload{ + Title: &api.ChangesFromPayload{ + From: oldTitle, + }, + }, + Repository: issue.Repo.APIFormat(nil), + Sender: doer.APIFormat(), + }) + } else { + err = PrepareWebhooks(issue.Repo, HOOK_EVENT_ISSUES, &api.IssuesPayload{ Action: api.HOOK_ISSUE_EDITED, Index: issue.Index, + Issue: issue.APIFormat(), Changes: &api.ChangesPayload{ Title: &api.ChangesFromPayload{ From: oldTitle, }, }, - PullRequest: issue.PullRequest.APIFormat(), - Repository: issue.Repo.APIFormat(nil), - Sender: doer.APIFormat(), + Repository: issue.Repo.APIFormat(nil), + Sender: doer.APIFormat(), }) } if err != nil { - log.Error(4, "PrepareWebhooks [is_pull: %v]: %v", issue.IsPull, err) + log.Error(2, "PrepareWebhooks [is_pull: %v]: %v", issue.IsPull, err) } else { go HookQueue.Add(issue.RepoID) } @@ -521,20 +563,33 @@ func (issue *Issue) ChangeContent(doer *User, content string) (err error) { if issue.IsPull { issue.PullRequest.Issue = issue err = PrepareWebhooks(issue.Repo, HOOK_EVENT_PULL_REQUEST, &api.PullRequestPayload{ + Action: api.HOOK_ISSUE_EDITED, + Index: issue.Index, + PullRequest: issue.PullRequest.APIFormat(), + Changes: &api.ChangesPayload{ + Body: &api.ChangesFromPayload{ + From: oldContent, + }, + }, + Repository: issue.Repo.APIFormat(nil), + Sender: doer.APIFormat(), + }) + } else { + err = PrepareWebhooks(issue.Repo, HOOK_EVENT_ISSUES, &api.IssuesPayload{ Action: api.HOOK_ISSUE_EDITED, Index: issue.Index, + Issue: issue.APIFormat(), Changes: &api.ChangesPayload{ Body: &api.ChangesFromPayload{ From: oldContent, }, }, - PullRequest: issue.PullRequest.APIFormat(), - Repository: issue.Repo.APIFormat(nil), - Sender: doer.APIFormat(), + Repository: issue.Repo.APIFormat(nil), + Sender: doer.APIFormat(), }) } if err != nil { - log.Error(4, "PrepareWebhooks [is_pull: %v]: %v", issue.IsPull, err) + log.Error(2, "PrepareWebhooks [is_pull: %v]: %v", issue.IsPull, err) } else { go HookQueue.Add(issue.RepoID) } @@ -570,6 +625,19 @@ func (issue *Issue) ChangeAssignee(doer *User, assigneeID int64) (err error) { apiPullRequest.Action = api.HOOK_ISSUE_ASSIGNED } err = PrepareWebhooks(issue.Repo, HOOK_EVENT_PULL_REQUEST, apiPullRequest) + } else { + apiIssues := &api.IssuesPayload{ + Index: issue.Index, + Issue: issue.APIFormat(), + Repository: issue.Repo.APIFormat(nil), + Sender: doer.APIFormat(), + } + if isRemoveAssignee { + apiIssues.Action = api.HOOK_ISSUE_UNASSIGNED + } else { + apiIssues.Action = api.HOOK_ISSUE_ASSIGNED + } + err = PrepareWebhooks(issue.Repo, HOOK_EVENT_ISSUES, apiIssues) } if err != nil { log.Error(4, "PrepareWebhooks [is_pull: %v, remove_assignee: %v]: %v", issue.IsPull, isRemoveAssignee, err) @@ -715,10 +783,20 @@ func NewIssue(repo *Repository, issue *Issue, labelIDs []int64, uuids []string) RepoName: repo.Name, IsPrivate: repo.IsPrivate, }); err != nil { - log.Error(4, "NotifyWatchers: %v", err) + log.Error(2, "NotifyWatchers: %v", err) } if err = issue.MailParticipants(); err != nil { - log.Error(4, "MailParticipants: %v", err) + log.Error(2, "MailParticipants: %v", err) + } + + if err = PrepareWebhooks(repo, HOOK_EVENT_ISSUES, &api.IssuesPayload{ + Action: api.HOOK_ISSUE_OPENED, + Index: issue.Index, + Issue: issue.APIFormat(), + Repository: repo.APIFormat(nil), + Sender: issue.Poster.APIFormat(), + }); err != nil { + log.Error(2, "PrepareWebhooks: %v", err) } return nil |