aboutsummaryrefslogtreecommitdiff
path: root/models/issue.go
diff options
context:
space:
mode:
authorUnknwon <u@gogs.io>2016-02-22 12:40:00 -0500
committerUnknwon <u@gogs.io>2016-02-22 12:40:00 -0500
commit912f7b51e90b2e6c4ff01570f1413c736cfc4d04 (patch)
tree9f618018d3f35a090432b04dd7ad962460e4a41f /models/issue.go
parent90fab0be6bc5acce1faa4b97a85ddde5f37f31d9 (diff)
#1821 add actions for close and reopen issues
Diffstat (limited to 'models/issue.go')
-rw-r--r--models/issue.go42
1 files changed, 25 insertions, 17 deletions
diff --git a/models/issue.go b/models/issue.go
index c34c3f55..7d7fb49a 100644
--- a/models/issue.go
+++ b/models/issue.go
@@ -364,7 +364,7 @@ func NewIssue(repo *Repository, issue *Issue, labelIDs []int64, uuids []string)
ActUserID: issue.Poster.Id,
ActUserName: issue.Poster.Name,
ActEmail: issue.Poster.Email,
- OpType: CREATE_ISSUE,
+ OpType: ACTION_CREATE_ISSUE,
Content: fmt.Sprintf("%d|%s", issue.Index, issue.Name),
RepoID: repo.ID,
RepoUserName: repo.Owner.Name,
@@ -1564,9 +1564,24 @@ func createComment(e *xorm.Session, u *User, repo *Repository, issue *Issue, com
return nil, err
}
+ // Compose comment action, could be plain comment, close or reopen issue.
+ // This object will be used to notify watchers in the end of function.
+ act := &Action{
+ ActUserID: u.Id,
+ ActUserName: u.Name,
+ ActEmail: u.Email,
+ Content: fmt.Sprintf("%d|%s", issue.Index, strings.Split(content, "\n")[0]),
+ RepoID: repo.ID,
+ RepoUserName: repo.Owner.Name,
+ RepoName: repo.Name,
+ IsPrivate: repo.IsPrivate,
+ }
+
// Check comment type.
switch cmtType {
case COMMENT_TYPE_COMMENT:
+ act.OpType = ACTION_COMMENT_ISSUE
+
if _, err = e.Exec("UPDATE `issue` SET num_comments=num_comments+1 WHERE id=?", issue.ID); err != nil {
return nil, err
}
@@ -1593,23 +1608,9 @@ func createComment(e *xorm.Session, u *User, repo *Repository, issue *Issue, com
}
}
- // Notify watchers.
- act := &Action{
- ActUserID: u.Id,
- ActUserName: u.Name,
- ActEmail: u.Email,
- OpType: COMMENT_ISSUE,
- Content: fmt.Sprintf("%d|%s", issue.Index, strings.Split(content, "\n")[0]),
- RepoID: repo.ID,
- RepoUserName: repo.Owner.Name,
- RepoName: repo.Name,
- IsPrivate: repo.IsPrivate,
- }
- if err = notifyWatchers(e, act); err != nil {
- return nil, err
- }
-
case COMMENT_TYPE_REOPEN:
+ act.OpType = ACTION_REOPEN_ISSUE
+
if issue.IsPull {
_, err = e.Exec("UPDATE `repository` SET num_closed_pulls=num_closed_pulls-1 WHERE id=?", repo.ID)
} else {
@@ -1619,6 +1620,8 @@ func createComment(e *xorm.Session, u *User, repo *Repository, issue *Issue, com
return nil, err
}
case COMMENT_TYPE_CLOSE:
+ act.OpType = ACTION_CLOSE_ISSUE
+
if issue.IsPull {
_, err = e.Exec("UPDATE `repository` SET num_closed_pulls=num_closed_pulls+1 WHERE id=?", repo.ID)
} else {
@@ -1629,6 +1632,11 @@ func createComment(e *xorm.Session, u *User, repo *Repository, issue *Issue, com
}
}
+ // Notify watchers for whatever action comes in.
+ if err = notifyWatchers(e, act); err != nil {
+ return nil, fmt.Errorf("notifyWatchers: %v", err)
+ }
+
return comment, nil
}