summaryrefslogtreecommitdiffstats
path: root/services/issue/status.go
diff options
context:
space:
mode:
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
}