@@ -370,11 +370,19 @@ func (issue *Issue) HasLabel(labelID int64) bool {
370
370
371
371
func (issue * Issue ) sendLabelUpdatedWebhook (doer * User ) {
372
372
var err error
373
+
374
+ if err = issue .loadRepo (x ); err != nil {
375
+ log .Error (4 , "loadRepo: %v" , err )
376
+ return
377
+ }
378
+
379
+ if err = issue .loadPoster (x ); err != nil {
380
+ log .Error (4 , "loadPoster: %v" , err )
381
+ return
382
+ }
383
+
384
+ mode , _ := AccessLevel (issue .Poster .ID , issue .Repo )
373
385
if issue .IsPull {
374
- if err = issue .loadRepo (x ); err != nil {
375
- log .Error (4 , "loadRepo: %v" , err )
376
- return
377
- }
378
386
if err = issue .loadPullRequest (x ); err != nil {
379
387
log .Error (4 , "loadPullRequest: %v" , err )
380
388
return
@@ -390,6 +398,14 @@ func (issue *Issue) sendLabelUpdatedWebhook(doer *User) {
390
398
Repository : issue .Repo .APIFormat (AccessModeNone ),
391
399
Sender : doer .APIFormat (),
392
400
})
401
+ } else {
402
+ err = PrepareWebhooks (issue .Repo , HookEventIssues , & api.IssuePayload {
403
+ Action : api .HookIssueLabelUpdated ,
404
+ Index : issue .Index ,
405
+ Issue : issue .APIFormat (),
406
+ Repository : issue .Repo .APIFormat (mode ),
407
+ Sender : doer .APIFormat (),
408
+ })
393
409
}
394
410
if err != nil {
395
411
log .Error (4 , "PrepareWebhooks [is_pull: %v]: %v" , issue .IsPull , err )
@@ -505,6 +521,11 @@ func (issue *Issue) ClearLabels(doer *User) (err error) {
505
521
return fmt .Errorf ("Commit: %v" , err )
506
522
}
507
523
524
+ if err = issue .loadPoster (x ); err != nil {
525
+ return fmt .Errorf ("loadPoster: %v" , err )
526
+ }
527
+
528
+ mode , _ := AccessLevel (issue .Poster .ID , issue .Repo )
508
529
if issue .IsPull {
509
530
err = issue .PullRequest .LoadIssue ()
510
531
if err != nil {
@@ -515,9 +536,17 @@ func (issue *Issue) ClearLabels(doer *User) (err error) {
515
536
Action : api .HookIssueLabelCleared ,
516
537
Index : issue .Index ,
517
538
PullRequest : issue .PullRequest .APIFormat (),
518
- Repository : issue .Repo .APIFormat (AccessModeNone ),
539
+ Repository : issue .Repo .APIFormat (mode ),
519
540
Sender : doer .APIFormat (),
520
541
})
542
+ } else {
543
+ err = PrepareWebhooks (issue .Repo , HookEventIssues , & api.IssuePayload {
544
+ Action : api .HookIssueLabelCleared ,
545
+ Index : issue .Index ,
546
+ Issue : issue .APIFormat (),
547
+ Repository : issue .Repo .APIFormat (mode ),
548
+ Sender : doer .APIFormat (),
549
+ })
521
550
}
522
551
if err != nil {
523
552
log .Error (4 , "PrepareWebhooks [is_pull: %v]: %v" , issue .IsPull , err )
@@ -675,13 +704,14 @@ func (issue *Issue) ChangeStatus(doer *User, repo *Repository, isClosed bool) (e
675
704
return fmt .Errorf ("Commit: %v" , err )
676
705
}
677
706
707
+ mode , _ := AccessLevel (issue .Poster .ID , issue .Repo )
678
708
if issue .IsPull {
679
709
// Merge pull request calls issue.changeStatus so we need to handle separately.
680
710
issue .PullRequest .Issue = issue
681
711
apiPullRequest := & api.PullRequestPayload {
682
712
Index : issue .Index ,
683
713
PullRequest : issue .PullRequest .APIFormat (),
684
- Repository : repo .APIFormat (AccessModeNone ),
714
+ Repository : repo .APIFormat (mode ),
685
715
Sender : doer .APIFormat (),
686
716
}
687
717
if isClosed {
@@ -690,6 +720,19 @@ func (issue *Issue) ChangeStatus(doer *User, repo *Repository, isClosed bool) (e
690
720
apiPullRequest .Action = api .HookIssueReOpened
691
721
}
692
722
err = PrepareWebhooks (repo , HookEventPullRequest , apiPullRequest )
723
+ } else {
724
+ apiIssue := & api.IssuePayload {
725
+ Index : issue .Index ,
726
+ Issue : issue .APIFormat (),
727
+ Repository : repo .APIFormat (mode ),
728
+ Sender : doer .APIFormat (),
729
+ }
730
+ if isClosed {
731
+ apiIssue .Action = api .HookIssueClosed
732
+ } else {
733
+ apiIssue .Action = api .HookIssueReOpened
734
+ }
735
+ err = PrepareWebhooks (repo , HookEventIssues , apiIssue )
693
736
}
694
737
if err != nil {
695
738
log .Error (4 , "PrepareWebhooks [is_pull: %v, is_closed: %v]: %v" , issue .IsPull , isClosed , err )
@@ -723,6 +766,7 @@ func (issue *Issue) ChangeTitle(doer *User, title string) (err error) {
723
766
return err
724
767
}
725
768
769
+ mode , _ := AccessLevel (issue .Poster .ID , issue .Repo )
726
770
if issue .IsPull {
727
771
issue .PullRequest .Issue = issue
728
772
err = PrepareWebhooks (issue .Repo , HookEventPullRequest , & api.PullRequestPayload {
@@ -734,10 +778,24 @@ func (issue *Issue) ChangeTitle(doer *User, title string) (err error) {
734
778
},
735
779
},
736
780
PullRequest : issue .PullRequest .APIFormat (),
737
- Repository : issue .Repo .APIFormat (AccessModeNone ),
781
+ Repository : issue .Repo .APIFormat (mode ),
738
782
Sender : doer .APIFormat (),
739
783
})
784
+ } else {
785
+ err = PrepareWebhooks (issue .Repo , HookEventIssues , & api.IssuePayload {
786
+ Action : api .HookIssueEdited ,
787
+ Index : issue .Index ,
788
+ Changes : & api.ChangesPayload {
789
+ Title : & api.ChangesFromPayload {
790
+ From : oldTitle ,
791
+ },
792
+ },
793
+ Issue : issue .APIFormat (),
794
+ Repository : issue .Repo .APIFormat (mode ),
795
+ Sender : issue .Poster .APIFormat (),
796
+ })
740
797
}
798
+
741
799
if err != nil {
742
800
log .Error (4 , "PrepareWebhooks [is_pull: %v]: %v" , issue .IsPull , err )
743
801
} else {
@@ -774,6 +832,7 @@ func (issue *Issue) ChangeContent(doer *User, content string) (err error) {
774
832
return fmt .Errorf ("UpdateIssueCols: %v" , err )
775
833
}
776
834
835
+ mode , _ := AccessLevel (issue .Poster .ID , issue .Repo )
777
836
if issue .IsPull {
778
837
issue .PullRequest .Issue = issue
779
838
err = PrepareWebhooks (issue .Repo , HookEventPullRequest , & api.PullRequestPayload {
@@ -785,9 +844,22 @@ func (issue *Issue) ChangeContent(doer *User, content string) (err error) {
785
844
},
786
845
},
787
846
PullRequest : issue .PullRequest .APIFormat (),
788
- Repository : issue .Repo .APIFormat (AccessModeNone ),
847
+ Repository : issue .Repo .APIFormat (mode ),
789
848
Sender : doer .APIFormat (),
790
849
})
850
+ } else {
851
+ err = PrepareWebhooks (issue .Repo , HookEventIssues , & api.IssuePayload {
852
+ Action : api .HookIssueEdited ,
853
+ Index : issue .Index ,
854
+ Changes : & api.ChangesPayload {
855
+ Body : & api.ChangesFromPayload {
856
+ From : oldContent ,
857
+ },
858
+ },
859
+ Issue : issue .APIFormat (),
860
+ Repository : issue .Repo .APIFormat (mode ),
861
+ Sender : doer .APIFormat (),
862
+ })
791
863
}
792
864
if err != nil {
793
865
log .Error (4 , "PrepareWebhooks [is_pull: %v]: %v" , issue .IsPull , err )
@@ -980,6 +1052,19 @@ func NewIssue(repo *Repository, issue *Issue, labelIDs []int64, assigneeIDs []in
980
1052
log .Error (4 , "MailParticipants: %v" , err )
981
1053
}
982
1054
1055
+ mode , _ := AccessLevel (issue .Poster .ID , issue .Repo )
1056
+ if err = PrepareWebhooks (repo , HookEventIssues , & api.IssuePayload {
1057
+ Action : api .HookIssueOpened ,
1058
+ Index : issue .Index ,
1059
+ Issue : issue .APIFormat (),
1060
+ Repository : repo .APIFormat (mode ),
1061
+ Sender : issue .Poster .APIFormat (),
1062
+ }); err != nil {
1063
+ log .Error (4 , "PrepareWebhooks: %v" , err )
1064
+ } else {
1065
+ go HookQueue .Add (issue .RepoID )
1066
+ }
1067
+
983
1068
return nil
984
1069
}
985
1070
0 commit comments