summaryrefslogtreecommitdiff
path: root/app/services/issues/base_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/issues/base_service.rb')
-rw-r--r--app/services/issues/base_service.rb36
1 files changed, 16 insertions, 20 deletions
diff --git a/app/services/issues/base_service.rb b/app/services/issues/base_service.rb
index 3aa842eb9a8..058c398df02 100644
--- a/app/services/issues/base_service.rb
+++ b/app/services/issues/base_service.rb
@@ -1,12 +1,11 @@
module Issues
class BaseService < ::IssuableBaseService
- attr_reader :merge_request_for_resolving_discussions, :discussion_to_resolve
-
+ attr_reader :merge_request_for_resolving_discussions_iid, :discussion_to_resolve_id
def initialize(*args)
super
- @merge_request_for_resolving_discussions ||= params.delete(:merge_request_for_resolving_discussions)
- @discussion_to_resolve ||= params.delete(:discussion_to_resolve)
+ @merge_request_for_resolving_discussions_iid ||= params.delete(:merge_request_for_resolving_discussions)
+ @discussion_to_resolve_id ||= params.delete(:discussion_to_resolve)
end
def hook_data(issue, action)
@@ -17,25 +16,22 @@ module Issues
end
def merge_request_for_resolving_discussions
- @merge_request_for_resolving_discussions ||= discussion_to_resolve.try(:noteable)
- end
-
- def for_all_discussions_in_a_merge_request?
- discussion_to_resolve.nil? && merge_request_for_resolving_discussions
- end
-
- def for_single_discussion?
- discussion_to_resolve && discussion_to_resolve.noteable == merge_request_for_resolving_discussions
+ @merge_request_for_resolving_discussions ||= MergeRequestsFinder.new(current_user, project_id: project.id).
+ execute.
+ find_by(iid: merge_request_for_resolving_discussions_iid)
end
def discussions_to_resolve
- @discussions_to_resolve ||= if for_all_discussions_in_a_merge_request?
- merge_request_for_resolving_discussions.resolvable_discussions
- elsif for_single_discussion?
- Array(discussion_to_resolve)
- else
- []
- end
+ return [] unless merge_request_for_resolving_discussions
+
+ @discussions_to_resolve ||= NotesFinder.new(project, current_user, {
+ discussion_id: discussion_to_resolve_id,
+ target_type: MergeRequest.name.underscore,
+ target_id: merge_request_for_resolving_discussions.id
+ }).
+ execute.
+ discussions.
+ select(&:to_be_resolved?)
end
private