1# frozen_string_literal: true 2 3module Issues 4 module ResolveDiscussions 5 include Gitlab::Utils::StrongMemoize 6 7 attr_reader :merge_request_to_resolve_discussions_of_iid, :discussion_to_resolve_id 8 9 # rubocop:disable Gitlab/ModuleWithInstanceVariables 10 def filter_resolve_discussion_params 11 @merge_request_to_resolve_discussions_of_iid ||= params.delete(:merge_request_to_resolve_discussions_of) 12 @discussion_to_resolve_id ||= params.delete(:discussion_to_resolve) 13 end 14 # rubocop:enable Gitlab/ModuleWithInstanceVariables 15 16 # rubocop: disable CodeReuse/ActiveRecord 17 def merge_request_to_resolve_discussions_of 18 strong_memoize(:merge_request_to_resolve_discussions_of) do 19 MergeRequestsFinder.new(current_user, project_id: project.id) 20 .find_by(iid: merge_request_to_resolve_discussions_of_iid) 21 end 22 end 23 # rubocop: enable CodeReuse/ActiveRecord 24 25 def discussions_to_resolve 26 return [] unless merge_request_to_resolve_discussions_of 27 28 @discussions_to_resolve ||= # rubocop:disable Gitlab/ModuleWithInstanceVariables 29 if discussion_to_resolve_id 30 discussion_or_nil = merge_request_to_resolve_discussions_of 31 .find_discussion(discussion_to_resolve_id) 32 Array(discussion_or_nil) 33 else 34 merge_request_to_resolve_discussions_of 35 .discussions_to_be_resolved 36 end 37 end 38 end 39end 40