@@ -8,7 +8,6 @@ import ( | |||
"fmt" | |||
"code.gitea.io/gitea/modules/log" | |||
api "code.gitea.io/gitea/modules/structs" | |||
"code.gitea.io/gitea/modules/util" | |||
"github.com/go-xorm/xorm" | |||
@@ -235,42 +234,6 @@ func createReview(e Engine, opts CreateReviewOptions) (*Review, error) { | |||
return nil, err | |||
} | |||
var reviewHookType HookEventType | |||
switch opts.Type { | |||
case ReviewTypeApprove: | |||
reviewHookType = HookEventPullRequestApproved | |||
case ReviewTypeComment: | |||
reviewHookType = HookEventPullRequestComment | |||
case ReviewTypeReject: | |||
reviewHookType = HookEventPullRequestRejected | |||
default: | |||
// unsupported review webhook type here | |||
return review, nil | |||
} | |||
pr := opts.Issue.PullRequest | |||
if err := pr.LoadIssue(); err != nil { | |||
return nil, err | |||
} | |||
mode, err := AccessLevel(opts.Issue.Poster, opts.Issue.Repo) | |||
if err != nil { | |||
return nil, err | |||
} | |||
if err := PrepareWebhooks(opts.Issue.Repo, reviewHookType, &api.PullRequestPayload{ | |||
Action: api.HookIssueSynchronized, | |||
Index: opts.Issue.Index, | |||
PullRequest: pr.APIFormat(), | |||
Repository: opts.Issue.Repo.APIFormat(mode), | |||
Sender: opts.Reviewer.APIFormat(), | |||
}); err != nil { | |||
return nil, err | |||
} | |||
go HookQueue.Add(opts.Issue.Repo.ID) | |||
return review, nil | |||
} | |||
@@ -0,0 +1,57 @@ | |||
// Copyright 2019 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 pull | |||
import ( | |||
"code.gitea.io/gitea/models" | |||
api "code.gitea.io/gitea/modules/structs" | |||
) | |||
// CreateReview creates a new review based on opts | |||
func CreateReview(opts models.CreateReviewOptions) (*models.Review, error) { | |||
review, err := models.CreateReview(opts) | |||
if err != nil { | |||
return nil, err | |||
} | |||
var reviewHookType models.HookEventType | |||
switch opts.Type { | |||
case models.ReviewTypeApprove: | |||
reviewHookType = models.HookEventPullRequestApproved | |||
case models.ReviewTypeComment: | |||
reviewHookType = models.HookEventPullRequestComment | |||
case models.ReviewTypeReject: | |||
reviewHookType = models.HookEventPullRequestRejected | |||
default: | |||
// unsupported review webhook type here | |||
return review, nil | |||
} | |||
pr := opts.Issue.PullRequest | |||
if err := pr.LoadIssue(); err != nil { | |||
return nil, err | |||
} | |||
mode, err := models.AccessLevel(opts.Issue.Poster, opts.Issue.Repo) | |||
if err != nil { | |||
return nil, err | |||
} | |||
if err := models.PrepareWebhooks(opts.Issue.Repo, reviewHookType, &api.PullRequestPayload{ | |||
Action: api.HookIssueSynchronized, | |||
Index: opts.Issue.Index, | |||
PullRequest: pr.APIFormat(), | |||
Repository: opts.Issue.Repo.APIFormat(mode), | |||
Sender: opts.Reviewer.APIFormat(), | |||
}); err != nil { | |||
return nil, err | |||
} | |||
go models.HookQueue.Add(opts.Issue.Repo.ID) | |||
return review, nil | |||
} |
@@ -12,6 +12,7 @@ import ( | |||
"code.gitea.io/gitea/modules/context" | |||
"code.gitea.io/gitea/modules/log" | |||
"code.gitea.io/gitea/modules/notification" | |||
pull_service "code.gitea.io/gitea/modules/pull" | |||
) | |||
// CreateCodeComment will create a code comment including an pending review if required | |||
@@ -53,7 +54,7 @@ func CreateCodeComment(ctx *context.Context, form auth.CodeCommentForm) { | |||
} | |||
// No pending review exists | |||
// Create a new pending review for this issue & user | |||
if review, err = models.CreateReview(models.CreateReviewOptions{ | |||
if review, err = pull_service.CreateReview(models.CreateReviewOptions{ | |||
Type: models.ReviewTypePending, | |||
Reviewer: ctx.User, | |||
Issue: issue, | |||
@@ -61,6 +62,7 @@ func CreateCodeComment(ctx *context.Context, form auth.CodeCommentForm) { | |||
ctx.ServerError("CreateCodeComment", err) | |||
return | |||
} | |||
} | |||
} | |||
if review.ID == 0 { |