085f717529
I found myself wondering whether a PR I scheduled for automerge was actually merged. It was, but I didn't receive a mail notification for it - that makes sense considering I am the doer and usually don't want to receive such notifications. But ideally I want to receive a notification when a PR was merged because I scheduled it for automerge. This PR implements exactly that. The implementation works, but I wonder if there's a way to avoid passing the "This PR was automerged" state down so much. I tried solving this via the database (checking if there's an automerge scheduled for this PR when sending the notification) but that did not work reliably, probably because sending the notification happens async and the entry might have already been deleted. My implementation might be the most straightforward but maybe not the most elegant. Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: Lauris BH <lauris@nix.lv> Co-authored-by: Andrew Thornton <art27@cantab.net> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
65 lines
4.6 KiB
Go
65 lines
4.6 KiB
Go
// Copyright 2018 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 base
|
|
|
|
import (
|
|
issues_model "code.gitea.io/gitea/models/issues"
|
|
packages_model "code.gitea.io/gitea/models/packages"
|
|
repo_model "code.gitea.io/gitea/models/repo"
|
|
user_model "code.gitea.io/gitea/models/user"
|
|
"code.gitea.io/gitea/modules/repository"
|
|
)
|
|
|
|
// Notifier defines an interface to notify receiver
|
|
type Notifier interface {
|
|
Run()
|
|
NotifyCreateRepository(doer, u *user_model.User, repo *repo_model.Repository)
|
|
NotifyMigrateRepository(doer, u *user_model.User, repo *repo_model.Repository)
|
|
NotifyDeleteRepository(doer *user_model.User, repo *repo_model.Repository)
|
|
NotifyForkRepository(doer *user_model.User, oldRepo, repo *repo_model.Repository)
|
|
NotifyRenameRepository(doer *user_model.User, repo *repo_model.Repository, oldRepoName string)
|
|
NotifyTransferRepository(doer *user_model.User, repo *repo_model.Repository, oldOwnerName string)
|
|
NotifyNewIssue(issue *issues_model.Issue, mentions []*user_model.User)
|
|
NotifyIssueChangeStatus(*user_model.User, *issues_model.Issue, *issues_model.Comment, bool)
|
|
NotifyDeleteIssue(*user_model.User, *issues_model.Issue)
|
|
NotifyIssueChangeMilestone(doer *user_model.User, issue *issues_model.Issue, oldMilestoneID int64)
|
|
NotifyIssueChangeAssignee(doer *user_model.User, issue *issues_model.Issue, assignee *user_model.User, removed bool, comment *issues_model.Comment)
|
|
NotifyPullReviewRequest(doer *user_model.User, issue *issues_model.Issue, reviewer *user_model.User, isRequest bool, comment *issues_model.Comment)
|
|
NotifyIssueChangeContent(doer *user_model.User, issue *issues_model.Issue, oldContent string)
|
|
NotifyIssueClearLabels(doer *user_model.User, issue *issues_model.Issue)
|
|
NotifyIssueChangeTitle(doer *user_model.User, issue *issues_model.Issue, oldTitle string)
|
|
NotifyIssueChangeRef(doer *user_model.User, issue *issues_model.Issue, oldRef string)
|
|
NotifyIssueChangeLabels(doer *user_model.User, issue *issues_model.Issue,
|
|
addedLabels, removedLabels []*issues_model.Label)
|
|
NotifyNewPullRequest(pr *issues_model.PullRequest, mentions []*user_model.User)
|
|
NotifyMergePullRequest(pr *issues_model.PullRequest, doer *user_model.User)
|
|
NotifyAutoMergePullRequest(pr *issues_model.PullRequest, doer *user_model.User)
|
|
NotifyPullRequestSynchronized(doer *user_model.User, pr *issues_model.PullRequest)
|
|
NotifyPullRequestReview(pr *issues_model.PullRequest, review *issues_model.Review, comment *issues_model.Comment, mentions []*user_model.User)
|
|
NotifyPullRequestCodeComment(pr *issues_model.PullRequest, comment *issues_model.Comment, mentions []*user_model.User)
|
|
NotifyPullRequestChangeTargetBranch(doer *user_model.User, pr *issues_model.PullRequest, oldBranch string)
|
|
NotifyPullRequestPushCommits(doer *user_model.User, pr *issues_model.PullRequest, comment *issues_model.Comment)
|
|
NotifyPullRevieweDismiss(doer *user_model.User, review *issues_model.Review, comment *issues_model.Comment)
|
|
NotifyCreateIssueComment(doer *user_model.User, repo *repo_model.Repository,
|
|
issue *issues_model.Issue, comment *issues_model.Comment, mentions []*user_model.User)
|
|
NotifyUpdateComment(*user_model.User, *issues_model.Comment, string)
|
|
NotifyDeleteComment(*user_model.User, *issues_model.Comment)
|
|
NotifyNewWikiPage(doer *user_model.User, repo *repo_model.Repository, page, comment string)
|
|
NotifyEditWikiPage(doer *user_model.User, repo *repo_model.Repository, page, comment string)
|
|
NotifyDeleteWikiPage(doer *user_model.User, repo *repo_model.Repository, page string)
|
|
NotifyNewRelease(rel *repo_model.Release)
|
|
NotifyUpdateRelease(doer *user_model.User, rel *repo_model.Release)
|
|
NotifyDeleteRelease(doer *user_model.User, rel *repo_model.Release)
|
|
NotifyPushCommits(pusher *user_model.User, repo *repo_model.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits)
|
|
NotifyCreateRef(doer *user_model.User, repo *repo_model.Repository, refType, refFullName, refID string)
|
|
NotifyDeleteRef(doer *user_model.User, repo *repo_model.Repository, refType, refFullName string)
|
|
NotifySyncPushCommits(pusher *user_model.User, repo *repo_model.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits)
|
|
NotifySyncCreateRef(doer *user_model.User, repo *repo_model.Repository, refType, refFullName, refID string)
|
|
NotifySyncDeleteRef(doer *user_model.User, repo *repo_model.Repository, refType, refFullName string)
|
|
NotifyRepoPendingTransfer(doer, newOwner *user_model.User, repo *repo_model.Repository)
|
|
NotifyPackageCreate(doer *user_model.User, pd *packages_model.PackageDescriptor)
|
|
NotifyPackageDelete(doer *user_model.User, pd *packages_model.PackageDescriptor)
|
|
}
|