@@ -520,3 +520,65 @@ func (m *webhookNotifier) NotifyPushCommits(pusher *models.User, repo *models.Re
520520 log .Error ("PrepareWebhooks: %v" , err )
521521 }
522522}
523+
524+ func (m * webhookNotifier ) NotifyPullRequestReview (pr * models.PullRequest , review * models.Review , comment * models.Comment ) {
525+ var reviewHookType models.HookEventType
526+
527+ switch review .Type {
528+ case models .ReviewTypeApprove :
529+ reviewHookType = models .HookEventPullRequestApproved
530+ case models .ReviewTypeComment :
531+ reviewHookType = models .HookEventPullRequestComment
532+ case models .ReviewTypeReject :
533+ reviewHookType = models .HookEventPullRequestRejected
534+ default :
535+ // unsupported review webhook type here
536+ log .Error ("Unsupported review webhook type" )
537+ return
538+ }
539+
540+ if err := pr .LoadIssue (); err != nil {
541+ log .Error ("pr.LoadIssue: %v" , err )
542+ return
543+ }
544+
545+ mode , err := models .AccessLevel (review .Issue .Poster , review .Issue .Repo )
546+ if err != nil {
547+ log .Error ("models.AccessLevel: %v" , err )
548+ return
549+ }
550+ if err := webhook .PrepareWebhooks (review .Issue .Repo , reviewHookType , & api.PullRequestPayload {
551+ Action : api .HookIssueSynchronized ,
552+ Index : review .Issue .Index ,
553+ PullRequest : pr .APIFormat (),
554+ Repository : review .Issue .Repo .APIFormat (mode ),
555+ Sender : review .Reviewer .APIFormat (),
556+ Review : & api.ReviewPayload {
557+ Type : string (reviewHookType ),
558+ Content : review .Content ,
559+ },
560+ }); err != nil {
561+ log .Error ("PrepareWebhooks: %v" , err )
562+ }
563+ }
564+
565+ func (m * webhookNotifier ) NotifyPullRequestSynchronized (doer * models.User , pr * models.PullRequest ) {
566+ if err := pr .LoadIssue (); err != nil {
567+ log .Error ("pr.LoadIssue: %v" , err )
568+ return
569+ }
570+ if err := pr .Issue .LoadAttributes (); err != nil {
571+ log .Error ("LoadAttributes: %v" , err )
572+ return
573+ }
574+
575+ if err := webhook .PrepareWebhooks (pr .Issue .Repo , models .HookEventPullRequest , & api.PullRequestPayload {
576+ Action : api .HookIssueSynchronized ,
577+ Index : pr .Issue .Index ,
578+ PullRequest : pr .Issue .PullRequest .APIFormat (),
579+ Repository : pr .Issue .Repo .APIFormat (models .AccessModeNone ),
580+ Sender : doer .APIFormat (),
581+ }); err != nil {
582+ log .Error ("PrepareWebhooks [pull_id: %v]: %v" , pr .ID , err )
583+ }
584+ }
0 commit comments