summaryrefslogtreecommitdiff
path: root/app/finders/issuable_finder.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/finders/issuable_finder.rb')
-rw-r--r--app/finders/issuable_finder.rb30
1 files changed, 9 insertions, 21 deletions
diff --git a/app/finders/issuable_finder.rb b/app/finders/issuable_finder.rb
index d1885b5ae08..086dadcf5b7 100644
--- a/app/finders/issuable_finder.rb
+++ b/app/finders/issuable_finder.rb
@@ -50,7 +50,7 @@ class IssuableFinder
attr_reader :original_params
attr_writer :parent
- delegate(*%i[assignee milestones], to: :params)
+ delegate(*%i[milestones], to: :params)
class << self
def scalar_params
@@ -148,7 +148,6 @@ class IssuableFinder
# Negates all params found in `negatable_params`
def filter_negated_items(items)
- items = by_negated_assignee(items)
items = by_negated_label(items)
items = by_negated_milestone(items)
items = by_negated_release(items)
@@ -365,32 +364,21 @@ class IssuableFinder
def by_author(items)
Issuables::AuthorFilter.new(
- items,
params: original_params,
or_filters_enabled: or_filters_enabled?
- ).filter
+ ).filter(items)
end
def by_assignee(items)
- if params.filter_by_no_assignee?
- items.unassigned
- elsif params.filter_by_any_assignee?
- items.assigned
- elsif params.assignee
- items.assigned_to(params.assignee)
- elsif params.assignee_id? || params.assignee_username? # assignee not found
- items.none
- else
- items
- end
+ assignee_filter.filter(items)
end
- def by_negated_assignee(items)
- # We want CE users to be able to say "Issues not assigned to either PersonA nor PersonB"
- if not_params.assignees.present?
- items.not_assigned_to(not_params.assignees)
- else
- items
+ def assignee_filter
+ strong_memoize(:assignee_filter) do
+ Issuables::AssigneeFilter.new(
+ params: original_params,
+ or_filters_enabled: or_filters_enabled?
+ )
end
end