summaryrefslogtreecommitdiff
path: root/app/services/issues
diff options
context:
space:
mode:
authorDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-02-16 00:26:33 -0200
committerDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-02-20 12:10:26 -0200
commite81061a211fedf9adaca8b053b6633988fdd5644 (patch)
tree4855440c7b31169eb2fc53ee8f80083cf21c8e26 /app/services/issues
parent48ddf9a407e0f98949301de7a2cbd7d62f8a4e47 (diff)
downloadgitlab-ce-e81061a211fedf9adaca8b053b6633988fdd5644.tar.gz
Marks pending tasks for an user as done when he edit an issue
Diffstat (limited to 'app/services/issues')
-rw-r--r--app/services/issues/update_service.rb23
1 files changed, 22 insertions, 1 deletions
diff --git a/app/services/issues/update_service.rb b/app/services/issues/update_service.rb
index e6afcb91652..fb9571247cc 100644
--- a/app/services/issues/update_service.rb
+++ b/app/services/issues/update_service.rb
@@ -4,7 +4,11 @@ module Issues
update(issue)
end
- def handle_changes(issue)
+ def handle_changes(issue, options = {})
+ if have_changes?(issue, options)
+ task_service.mark_as_done(issue, current_user)
+ end
+
if issue.previous_changes.include?('milestone_id')
create_milestone_note(issue)
end
@@ -23,5 +27,22 @@ module Issues
def close_service
Issues::CloseService
end
+
+ private
+
+ def have_changes?(issue, options = {})
+ valid_attrs = [:title, :description, :assignee_id, :milestone_id]
+
+ attrs_changed = valid_attrs.any? do |attr|
+ issue.previous_changes.include?(attr.to_s)
+ end
+
+ old_labels = options[:old_labels]
+ labels_changed = old_labels && issue.labels != old_labels
+
+ if attrs_changed || labels_changed
+ task_service.mark_as_done(issue, current_user)
+ end
+ end
end
end