* Move issue change content from models to service * fix linttags/v1.21.12.1
| @@ -750,7 +750,6 @@ func (issue *Issue) UpdateAttachments(uuids []string) (err error) { | |||||
| // ChangeContent changes issue content, as the given user. | // ChangeContent changes issue content, as the given user. | ||||
| func (issue *Issue) ChangeContent(doer *User, content string) (err error) { | func (issue *Issue) ChangeContent(doer *User, content string) (err error) { | ||||
| oldContent := issue.Content | |||||
| issue.Content = content | issue.Content = content | ||||
| sess := x.NewSession() | sess := x.NewSession() | ||||
| @@ -769,47 +768,7 @@ func (issue *Issue) ChangeContent(doer *User, content string) (err error) { | |||||
| return err | return err | ||||
| } | } | ||||
| if err = sess.Commit(); err != nil { | |||||
| return err | |||||
| } | |||||
| sess.Close() | |||||
| mode, _ := AccessLevel(issue.Poster, issue.Repo) | |||||
| if issue.IsPull { | |||||
| issue.PullRequest.Issue = issue | |||||
| err = PrepareWebhooks(issue.Repo, HookEventPullRequest, &api.PullRequestPayload{ | |||||
| Action: api.HookIssueEdited, | |||||
| Index: issue.Index, | |||||
| Changes: &api.ChangesPayload{ | |||||
| Body: &api.ChangesFromPayload{ | |||||
| From: oldContent, | |||||
| }, | |||||
| }, | |||||
| PullRequest: issue.PullRequest.APIFormat(), | |||||
| Repository: issue.Repo.APIFormat(mode), | |||||
| Sender: doer.APIFormat(), | |||||
| }) | |||||
| } else { | |||||
| err = PrepareWebhooks(issue.Repo, HookEventIssues, &api.IssuePayload{ | |||||
| Action: api.HookIssueEdited, | |||||
| Index: issue.Index, | |||||
| Changes: &api.ChangesPayload{ | |||||
| Body: &api.ChangesFromPayload{ | |||||
| From: oldContent, | |||||
| }, | |||||
| }, | |||||
| Issue: issue.APIFormat(), | |||||
| Repository: issue.Repo.APIFormat(mode), | |||||
| Sender: doer.APIFormat(), | |||||
| }) | |||||
| } | |||||
| if err != nil { | |||||
| log.Error("PrepareWebhooks [is_pull: %v]: %v", issue.IsPull, err) | |||||
| } else { | |||||
| go HookQueue.Add(issue.RepoID) | |||||
| } | |||||
| return nil | |||||
| return sess.Commit() | |||||
| } | } | ||||
| // GetTasks returns the amount of tasks in the issues content | // GetTasks returns the amount of tasks in the issues content | ||||
| @@ -277,3 +277,41 @@ func (m *webhookNotifier) NotifyNewIssue(issue *models.Issue) { | |||||
| go models.HookQueue.Add(issue.RepoID) | go models.HookQueue.Add(issue.RepoID) | ||||
| } | } | ||||
| } | } | ||||
| func (m *webhookNotifier) NotifyIssueChangeContent(doer *models.User, issue *models.Issue, oldContent string) { | |||||
| mode, _ := models.AccessLevel(issue.Poster, issue.Repo) | |||||
| var err error | |||||
| if issue.IsPull { | |||||
| issue.PullRequest.Issue = issue | |||||
| err = models.PrepareWebhooks(issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{ | |||||
| Action: api.HookIssueEdited, | |||||
| Index: issue.Index, | |||||
| Changes: &api.ChangesPayload{ | |||||
| Body: &api.ChangesFromPayload{ | |||||
| From: oldContent, | |||||
| }, | |||||
| }, | |||||
| PullRequest: issue.PullRequest.APIFormat(), | |||||
| Repository: issue.Repo.APIFormat(mode), | |||||
| Sender: doer.APIFormat(), | |||||
| }) | |||||
| } else { | |||||
| err = models.PrepareWebhooks(issue.Repo, models.HookEventIssues, &api.IssuePayload{ | |||||
| Action: api.HookIssueEdited, | |||||
| Index: issue.Index, | |||||
| Changes: &api.ChangesPayload{ | |||||
| Body: &api.ChangesFromPayload{ | |||||
| From: oldContent, | |||||
| }, | |||||
| }, | |||||
| Issue: issue.APIFormat(), | |||||
| Repository: issue.Repo.APIFormat(mode), | |||||
| Sender: doer.APIFormat(), | |||||
| }) | |||||
| } | |||||
| if err != nil { | |||||
| log.Error("PrepareWebhooks [is_pull: %v]: %v", issue.IsPull, err) | |||||
| } else { | |||||
| go models.HookQueue.Add(issue.RepoID) | |||||
| } | |||||
| } | |||||
| @@ -1066,7 +1066,7 @@ func UpdateIssueContent(ctx *context.Context) { | |||||
| } | } | ||||
| content := ctx.Query("content") | content := ctx.Query("content") | ||||
| if err := issue.ChangeContent(ctx.User, content); err != nil { | |||||
| if err := issue_service.ChangeContent(issue, ctx.User, content); err != nil { | |||||
| ctx.ServerError("ChangeContent", err) | ctx.ServerError("ChangeContent", err) | ||||
| return | return | ||||
| } | } | ||||
| @@ -0,0 +1,23 @@ | |||||
| // 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 ( | |||||
| "code.gitea.io/gitea/models" | |||||
| "code.gitea.io/gitea/modules/notification" | |||||
| ) | |||||
| // ChangeContent changes issue content, as the given user. | |||||
| func ChangeContent(issue *models.Issue, doer *models.User, content string) (err error) { | |||||
| oldContent := issue.Content | |||||
| if err := issue.ChangeContent(doer, content); err != nil { | |||||
| return err | |||||
| } | |||||
| notification.NotifyIssueChangeContent(doer, issue, oldContent) | |||||
| return nil | |||||
| } | |||||