diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2021-11-21 17:11:48 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-21 17:11:48 +0800 |
commit | 0add627182388ac63fd04b94cdf912fb87fd0326 (patch) | |
tree | 17144fd985993ef4739874b3c304d0a10f8ee84f /services/issue/status.go | |
parent | ab09296d374aedd1eec813ca007810a76e6625e9 (diff) | |
download | gitea-0add627182388ac63fd04b94cdf912fb87fd0326.tar.gz gitea-0add627182388ac63fd04b94cdf912fb87fd0326.zip |
Fix close issue but time watcher still running (#17643)
* Fix close issue but time watcher still running
* refactor stopwatch codes
* Fix test
* Fix test
* Fix typo
* Fix test
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 } |