* extract actions on new issue from models to services * improve code * rename services/issues to services/issuetags/v1.10.0-rc1
@@ -1225,31 +1225,6 @@ func NewIssue(repo *Repository, issue *Issue, labelIDs []int64, assigneeIDs []in | |||
} | |||
sess.Close() | |||
if err = NotifyWatchers(&Action{ | |||
ActUserID: issue.Poster.ID, | |||
ActUser: issue.Poster, | |||
OpType: ActionCreateIssue, | |||
Content: fmt.Sprintf("%d|%s", issue.Index, issue.Title), | |||
RepoID: repo.ID, | |||
Repo: repo, | |||
IsPrivate: repo.IsPrivate, | |||
}); err != nil { | |||
log.Error("NotifyWatchers: %v", err) | |||
} | |||
mode, _ := AccessLevel(issue.Poster, issue.Repo) | |||
if err = PrepareWebhooks(repo, HookEventIssues, &api.IssuePayload{ | |||
Action: api.HookIssueOpened, | |||
Index: issue.Index, | |||
Issue: issue.APIFormat(), | |||
Repository: repo.APIFormat(mode), | |||
Sender: issue.Poster.APIFormat(), | |||
}); err != nil { | |||
log.Error("PrepareWebhooks: %v", err) | |||
} else { | |||
go HookQueue.Add(issue.RepoID) | |||
} | |||
return nil | |||
} | |||
@@ -19,6 +19,7 @@ import ( | |||
api "code.gitea.io/gitea/modules/structs" | |||
"code.gitea.io/gitea/modules/timeutil" | |||
"code.gitea.io/gitea/modules/util" | |||
issue_service "code.gitea.io/gitea/services/issue" | |||
milestone_service "code.gitea.io/gitea/services/milestone" | |||
) | |||
@@ -217,7 +218,7 @@ func CreateIssue(ctx *context.APIContext, form api.CreateIssueOption) { | |||
form.Labels = make([]int64, 0) | |||
} | |||
if err := models.NewIssue(ctx.Repo.Repository, issue, form.Labels, assigneeIDs, nil); err != nil { | |||
if err := issue_service.NewIssue(ctx.Repo.Repository, issue, form.Labels, assigneeIDs, nil); err != nil { | |||
if models.IsErrUserDoesNotHaveAccessToRepo(err) { | |||
ctx.Error(400, "UserDoesNotHaveAccessToRepo", err) | |||
return |
@@ -27,6 +27,7 @@ import ( | |||
api "code.gitea.io/gitea/modules/structs" | |||
"code.gitea.io/gitea/modules/util" | |||
comment_service "code.gitea.io/gitea/services/comments" | |||
issue_service "code.gitea.io/gitea/services/issue" | |||
milestone_service "code.gitea.io/gitea/services/milestone" | |||
"github.com/unknwon/com" | |||
@@ -571,7 +572,7 @@ func NewIssuePost(ctx *context.Context, form auth.CreateIssueForm) { | |||
Content: form.Content, | |||
Ref: form.Ref, | |||
} | |||
if err := models.NewIssue(repo, issue, labelIDs, assigneeIDs, attachments); err != nil { | |||
if err := issue_service.NewIssue(repo, issue, labelIDs, assigneeIDs, attachments); err != nil { | |||
if models.IsErrUserDoesNotHaveAccessToRepo(err) { | |||
ctx.Error(400, "UserDoesNotHaveAccessToRepo", err.Error()) | |||
return |
@@ -0,0 +1,47 @@ | |||
// 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 issue | |||
import ( | |||
"fmt" | |||
"code.gitea.io/gitea/models" | |||
"code.gitea.io/gitea/modules/log" | |||
api "code.gitea.io/gitea/modules/structs" | |||
) | |||
// NewIssue creates new issue with labels for repository. | |||
func NewIssue(repo *models.Repository, issue *models.Issue, labelIDs []int64, assigneeIDs []int64, uuids []string) error { | |||
if err := models.NewIssue(repo, issue, labelIDs, assigneeIDs, uuids); err != nil { | |||
return err | |||
} | |||
if err := models.NotifyWatchers(&models.Action{ | |||
ActUserID: issue.Poster.ID, | |||
ActUser: issue.Poster, | |||
OpType: models.ActionCreateIssue, | |||
Content: fmt.Sprintf("%d|%s", issue.Index, issue.Title), | |||
RepoID: repo.ID, | |||
Repo: repo, | |||
IsPrivate: repo.IsPrivate, | |||
}); err != nil { | |||
log.Error("NotifyWatchers: %v", err) | |||
} | |||
mode, _ := models.AccessLevel(issue.Poster, issue.Repo) | |||
if err := models.PrepareWebhooks(repo, models.HookEventIssues, &api.IssuePayload{ | |||
Action: api.HookIssueOpened, | |||
Index: issue.Index, | |||
Issue: issue.APIFormat(), | |||
Repository: repo.APIFormat(mode), | |||
Sender: issue.Poster.APIFormat(), | |||
}); err != nil { | |||
log.Error("PrepareWebhooks: %v", err) | |||
} else { | |||
go models.HookQueue.Add(issue.RepoID) | |||
} | |||
return nil | |||
} |