Move issue change content from models to service (#8711)
* Move issue change content from models to service * fix lint
This commit is contained in:
		
							parent
							
								
									56ebc0c003
								
							
						
					
					
						commit
						f694bb45d7
					
				
					 4 changed files with 63 additions and 43 deletions
				
			
		|  | @ -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 sess.Commit() | ||||||
| 		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 |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 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 | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
							
								
								
									
										23
									
								
								services/issue/content.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								services/issue/content.go
									
									
									
									
									
										Normal file
									
								
							|  | @ -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 | ||||||
|  | } | ||||||
		Loading…
	
		Reference in a new issue