diff options
Diffstat (limited to 'services/issue/status.go')
-rw-r--r-- | services/issue/status.go | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/services/issue/status.go b/services/issue/status.go index b01ce4bbb8..0a18169a27 100644 --- a/services/issue/status.go +++ b/services/issue/status.go @@ -6,16 +6,30 @@ package issue import ( "code.gitea.io/gitea/models" + "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/modules/notification" ) // ChangeStatus changes issue status to open or closed. -func ChangeStatus(issue *models.Issue, doer *models.User, isClosed bool) (err error) { - comment, err := issue.ChangeStatus(doer, isClosed) +func ChangeStatus(issue *models.Issue, doer *models.User, closed bool) error { + comment, err := issue.ChangeStatus(doer, closed) if err != nil { - return + // Don't return an error when dependencies are open as this would let the push fail + if models.IsErrDependenciesLeft(err) { + if closed { + return models.FinishIssueStopwatchIfPossible(db.DefaultContext, doer, issue) + } + } + return err } - notification.NotifyIssueChangeStatus(doer, issue, comment, isClosed) + if closed { + if err := models.FinishIssueStopwatchIfPossible(db.DefaultContext, doer, issue); err != nil { + return err + } + } + + notification.NotifyIssueChangeStatus(doer, issue, comment, closed) + return nil } |