@@ -520,3 +520,65 @@ func (m *webhookNotifier) NotifyPushCommits(pusher *models.User, repo *models.Re
520
520
log .Error ("PrepareWebhooks: %v" , err )
521
521
}
522
522
}
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