@@ -9,10 +9,11 @@ import (
99
1010 "code.gitea.io/gitea/modules/log"
1111 "code.gitea.io/gitea/modules/util"
12- "github.com/go-xorm/core"
13- "github.com/go-xorm/xorm"
12+ api "code.gitea.io/sdk/gitea"
1413
1514 "github.com/go-xorm/builder"
15+ "github.com/go-xorm/core"
16+ "github.com/go-xorm/xorm"
1617)
1718
1819// ReviewType defines the sort of feedback a review gives
@@ -233,6 +234,43 @@ func createReview(e Engine, opts CreateReviewOptions) (*Review, error) {
233234 if _ , err := e .Insert (review ); err != nil {
234235 return nil , err
235236 }
237+
238+ var reviewHookType HookEventType
239+
240+ switch opts .Type {
241+ case ReviewTypeApprove :
242+ reviewHookType = HookEventPullRequestApproved
243+ case ReviewTypeComment :
244+ reviewHookType = HookEventPullRequestComment
245+ case ReviewTypeReject :
246+ reviewHookType = HookEventPullRequestRejected
247+ default :
248+ // unsupported review webhook type here
249+ return review , nil
250+ }
251+
252+ pr := opts .Issue .PullRequest
253+
254+ if err := pr .LoadIssue (); err != nil {
255+ return nil , err
256+ }
257+
258+ mode , err := AccessLevel (opts .Issue .Poster , opts .Issue .Repo )
259+ if err != nil {
260+ return nil , err
261+ }
262+
263+ if err := PrepareWebhooks (opts .Issue .Repo , reviewHookType , & api.PullRequestPayload {
264+ Action : api .HookIssueSynchronized ,
265+ Index : opts .Issue .Index ,
266+ PullRequest : pr .APIFormat (),
267+ Repository : opts .Issue .Repo .APIFormat (mode ),
268+ Sender : opts .Reviewer .APIFormat (),
269+ }); err != nil {
270+ return nil , err
271+ }
272+ go HookQueue .Add (opts .Issue .Repo .ID )
273+
236274 return review , nil
237275}
238276
@@ -285,10 +323,10 @@ type PullReviewersWithType struct {
285323func GetReviewersByPullID (pullID int64 ) (issueReviewers []* PullReviewersWithType , err error ) {
286324 irs := []* PullReviewersWithType {}
287325 if x .Dialect ().DBType () == core .MSSQL {
288- err = x .SQL (`SELECT [user].*, review.type, review.review_updated_unix FROM
289- (SELECT review.id, review.type, review.reviewer_id, max(review.updated_unix) as review_updated_unix
290- FROM review WHERE review.issue_id=? AND (review.type = ? OR review.type = ?)
291- GROUP BY review.id, review.type, review.reviewer_id) as review
326+ err = x .SQL (`SELECT [user].*, review.type, review.review_updated_unix FROM
327+ (SELECT review.id, review.type, review.reviewer_id, max(review.updated_unix) as review_updated_unix
328+ FROM review WHERE review.issue_id=? AND (review.type = ? OR review.type = ?)
329+ GROUP BY review.id, review.type, review.reviewer_id) as review
292330INNER JOIN [user] ON review.reviewer_id = [user].id ORDER BY review_updated_unix DESC` ,
293331 pullID , ReviewTypeApprove , ReviewTypeReject ).
294332 Find (& irs )
0 commit comments