Skip to content

Commit ed261f1

Browse files
committed
More improvements
1 parent 406884a commit ed261f1

File tree

7 files changed

+38
-21
lines changed

7 files changed

+38
-21
lines changed

models/issues/dependency_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func TestCreateIssueDependency(t *testing.T) {
4949
assert.False(t, left)
5050

5151
// Close #2 and check again
52-
_, err = issues_model.ChangeIssueStatus(db.DefaultContext, issue2, user1, true)
52+
_, err = issues_model.CloseIssue(db.DefaultContext, issue2, user1)
5353
assert.NoError(t, err)
5454

5555
left, err = issues_model.IssueNoDependenciesLeft(db.DefaultContext, issue1)

models/issues/issue_update.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,16 +118,28 @@ func doChangeIssueStatus(ctx context.Context, issue *Issue, doer *user_model.Use
118118
})
119119
}
120120

121+
// CloseIssue changes issue status to closed.
122+
func CloseIssue(ctx context.Context, issue *Issue, doer *user_model.User) (*Comment, error) {
123+
if err := issue.LoadRepo(ctx); err != nil {
124+
return nil, err
125+
}
126+
if err := issue.LoadPoster(ctx); err != nil {
127+
return nil, err
128+
}
129+
130+
return changeIssueStatus(ctx, issue, doer, true, false)
131+
}
132+
121133
// ChangeIssueStatus changes issue status to open or closed.
122-
func ChangeIssueStatus(ctx context.Context, issue *Issue, doer *user_model.User, isClosed bool) (*Comment, error) {
134+
func ReopenIssue(ctx context.Context, issue *Issue, doer *user_model.User) (*Comment, error) {
123135
if err := issue.LoadRepo(ctx); err != nil {
124136
return nil, err
125137
}
126138
if err := issue.LoadPoster(ctx); err != nil {
127139
return nil, err
128140
}
129141

130-
return changeIssueStatus(ctx, issue, doer, isClosed, false)
142+
return changeIssueStatus(ctx, issue, doer, false, false)
131143
}
132144

133145
// ChangeIssueTitle changes the title of this issue, as the given user.

models/issues/issue_xref_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ func TestXRef_ResolveCrossReferences(t *testing.T) {
9898
i1 := testCreateIssue(t, 1, 2, "title1", "content1", false)
9999
i2 := testCreateIssue(t, 1, 2, "title2", "content2", false)
100100
i3 := testCreateIssue(t, 1, 2, "title3", "content3", false)
101-
_, err := issues_model.ChangeIssueStatus(db.DefaultContext, i3, d, true)
101+
_, err := issues_model.CloseIssue(db.DefaultContext, i3, d)
102102
assert.NoError(t, err)
103103

104104
pr := testCreatePR(t, 1, 2, "titlepr", fmt.Sprintf("closes #%d", i1.Index))

routers/web/repo/issue.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3166,7 +3166,7 @@ func NewComment(ctx *context.Context) {
31663166
ctx.Flash.Info(ctx.Tr("repo.pulls.open_unmerged_pull_exists", pr.Index))
31673167
} else {
31683168
closeOrReopen := form.Status == "close"
3169-
if closeOrReopen {
3169+
if closeOrReopen && !issue.IsClosed {
31703170
if err := issue_service.CloseIssue(ctx, issue, ctx.Doer, ""); err != nil {
31713171
log.Error("CloseIssue: %v", err)
31723172
if issues_model.IsErrDependenciesLeft(err) {
@@ -3184,7 +3184,7 @@ func NewComment(ctx *context.Context) {
31843184
}
31853185
log.Trace("Issue [%d] status changed to closed: %v", issue.ID, issue.IsClosed)
31863186
}
3187-
} else {
3187+
} else if !closeOrReopen && issue.IsClosed {
31883188
if err := issue_service.ReopenIssue(ctx, issue, ctx.Doer, ""); err != nil {
31893189
log.Error("ReopenIssue: %v", err)
31903190
}

services/issue/commit.go

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -188,17 +188,22 @@ func UpdateIssuesCommit(ctx context.Context, doer *user_model.User, repo *repo_m
188188
continue
189189
}
190190
}
191-
isClosed := ref.Action == references.XRefActionCloses
192-
if isClosed && len(ref.TimeLog) > 0 {
193-
if err := issueAddTime(ctx, refIssue, doer, c.Timestamp, ref.TimeLog); err != nil {
194-
return err
191+
192+
closeOrReopen := ref.Action == references.XRefActionCloses
193+
refIssue.Repo = refRepo
194+
if closeOrReopen && !refIssue.IsClosed {
195+
if len(ref.TimeLog) > 0 {
196+
if err := issueAddTime(ctx, refIssue, doer, c.Timestamp, ref.TimeLog); err != nil {
197+
return err
198+
}
195199
}
196-
}
197-
if isClosed && !refIssue.IsClosed {
198-
refIssue.Repo = refRepo
199200
if err := CloseIssue(ctx, refIssue, doer, c.Sha1); err != nil {
200201
return err
201202
}
203+
} else if !closeOrReopen && refIssue.IsClosed {
204+
if err := ReopenIssue(ctx, refIssue, doer, c.Sha1); err != nil {
205+
return err
206+
}
202207
}
203208
}
204209
}

services/issue/status.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414

1515
// CloseIssue close and issue.
1616
func CloseIssue(ctx context.Context, issue *issues_model.Issue, doer *user_model.User, commitID string) error {
17-
comment, err := issues_model.ChangeIssueStatus(ctx, issue, doer, true)
17+
comment, err := issues_model.CloseIssue(ctx, issue, doer)
1818
if err != nil {
1919
if issues_model.IsErrDependenciesLeft(err) {
2020
if err := issues_model.FinishIssueStopwatchIfPossible(ctx, doer, issue); err != nil {
@@ -36,15 +36,11 @@ func CloseIssue(ctx context.Context, issue *issues_model.Issue, doer *user_model
3636
// ReopenIssue reopen an issue.
3737
// FIXME: If some issues dependent this one are closed, should we also reopen them?
3838
func ReopenIssue(ctx context.Context, issue *issues_model.Issue, doer *user_model.User, commitID string) error {
39-
comment, err := issues_model.ChangeIssueStatus(ctx, issue, doer, false)
39+
comment, err := issues_model.ReopenIssue(ctx, issue, doer)
4040
if err != nil {
4141
return err
4242
}
4343

44-
if err := issues_model.FinishIssueStopwatchIfPossible(ctx, doer, issue); err != nil {
45-
return err
46-
}
47-
4844
notify_service.IssueChangeStatus(ctx, doer, commitID, issue, comment, false)
4945

5046
return nil

services/pull/merge.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,14 +242,18 @@ func handleCloseCrossReferences(ctx context.Context, pr *issues_model.PullReques
242242
if err = ref.Issue.LoadRepo(ctx); err != nil {
243243
return err
244244
}
245-
isClosed := ref.RefAction == references.XRefActionCloses
246-
if isClosed && !ref.Issue.IsClosed {
245+
closeOrReopen := ref.RefAction == references.XRefActionCloses
246+
if closeOrReopen && !ref.Issue.IsClosed {
247247
if err = issue_service.CloseIssue(ctx, ref.Issue, doer, pr.MergedCommitID); err != nil {
248248
// Allow ErrDependenciesLeft
249249
if !issues_model.IsErrDependenciesLeft(err) {
250250
return err
251251
}
252252
}
253+
} else if !closeOrReopen && ref.Issue.IsClosed {
254+
if err = issue_service.ReopenIssue(ctx, ref.Issue, doer, pr.MergedCommitID); err != nil {
255+
return err
256+
}
253257
}
254258
}
255259
return nil

0 commit comments

Comments
 (0)