diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-05 00:07:49 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-05 00:07:49 +0000 |
commit | 77237c5a6b9044f58beabc54d3589e5fa09cbfba (patch) | |
tree | f43188047fe8955f6cf78e05ae9c2e8f6a019e0b /app/services/issues | |
parent | 2fd92f2dc784ade9cb4e1c33dd60cbfad7b86818 (diff) | |
download | gitlab-ce-77237c5a6b9044f58beabc54d3589e5fa09cbfba.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/services/issues')
-rw-r--r-- | app/services/issues/base_service.rb | 12 | ||||
-rw-r--r-- | app/services/issues/close_service.rb | 2 | ||||
-rw-r--r-- | app/services/issues/create_service.rb | 1 | ||||
-rw-r--r-- | app/services/issues/reopen_service.rb | 1 | ||||
-rw-r--r-- | app/services/issues/update_service.rb | 20 |
5 files changed, 34 insertions, 2 deletions
diff --git a/app/services/issues/base_service.rb b/app/services/issues/base_service.rb index 974f7e598ca..9e72f6dad8d 100644 --- a/app/services/issues/base_service.rb +++ b/app/services/issues/base_service.rb @@ -34,6 +34,18 @@ module Issues def update_project_counter_caches?(issue) super || issue.confidential_changed? end + + def delete_milestone_closed_issue_counter_cache(milestone) + return unless milestone + + Milestones::ClosedIssuesCountService.new(milestone).delete_cache + end + + def delete_milestone_total_issue_counter_cache(milestone) + return unless milestone + + Milestones::IssuesCountService.new(milestone).delete_cache + end end end diff --git a/app/services/issues/close_service.rb b/app/services/issues/close_service.rb index ce955b07648..21e9a2210fb 100644 --- a/app/services/issues/close_service.rb +++ b/app/services/issues/close_service.rb @@ -38,6 +38,8 @@ module Issues issue.update_project_counter_caches store_first_mentioned_in_commit_at(issue, closed_via) if closed_via.is_a?(MergeRequest) + + delete_milestone_closed_issue_counter_cache(issue.milestone) end issue diff --git a/app/services/issues/create_service.rb b/app/services/issues/create_service.rb index e8879d4df66..7869509aa9c 100644 --- a/app/services/issues/create_service.rb +++ b/app/services/issues/create_service.rb @@ -29,6 +29,7 @@ module Issues todo_service.new_issue(issuable, current_user) user_agent_detail_service.create resolve_discussions_with_issue(issuable) + delete_milestone_total_issue_counter_cache(issuable.milestone) super end diff --git a/app/services/issues/reopen_service.rb b/app/services/issues/reopen_service.rb index 56d59b235a7..0ffe33dd317 100644 --- a/app/services/issues/reopen_service.rb +++ b/app/services/issues/reopen_service.rb @@ -12,6 +12,7 @@ module Issues execute_hooks(issue, 'reopen') invalidate_cache_counts(issue, users: issue.assignees) issue.update_project_counter_caches + delete_milestone_closed_issue_counter_cache(issue.milestone) end issue diff --git a/app/services/issues/update_service.rb b/app/services/issues/update_service.rb index 68d1657d881..78ebbd7bff2 100644 --- a/app/services/issues/update_service.rb +++ b/app/services/issues/update_service.rb @@ -115,10 +115,26 @@ module Issues end def handle_milestone_change(issue) - return if skip_milestone_email - return unless issue.previous_changes.include?('milestone_id') + invalidate_milestone_issue_counters(issue) + send_milestone_change_notification(issue) + end + + def invalidate_milestone_issue_counters(issue) + issue.previous_changes['milestone_id'].each do |milestone_id| + next unless milestone_id + + milestone = Milestone.find_by_id(milestone_id) + + delete_milestone_closed_issue_counter_cache(milestone) + delete_milestone_total_issue_counter_cache(milestone) + end + end + + def send_milestone_change_notification(issue) + return if skip_milestone_email + if issue.milestone.nil? notification_service.async.removed_milestone_issue(issue, current_user) else |