summaryrefslogtreecommitdiffstats
path: root/services/issue/status.go
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2021-11-21 17:11:48 +0800
committerGitHub <noreply@github.com>2021-11-21 17:11:48 +0800
commit0add627182388ac63fd04b94cdf912fb87fd0326 (patch)
tree17144fd985993ef4739874b3c304d0a10f8ee84f /services/issue/status.go
parentab09296d374aedd1eec813ca007810a76e6625e9 (diff)
downloadgitea-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.go22
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
}