summaryrefslogtreecommitdiff
path: root/app/graphql/resolvers
diff options
context:
space:
mode:
Diffstat (limited to 'app/graphql/resolvers')
-rw-r--r--app/graphql/resolvers/base_issues_resolver.rb13
-rw-r--r--app/graphql/resolvers/base_resolver.rb2
-rw-r--r--app/graphql/resolvers/concerns/issue_resolver_arguments.rb1
-rw-r--r--app/graphql/resolvers/groups_resolver.rb2
-rw-r--r--app/graphql/resolvers/work_item_resolver.rb2
-rw-r--r--app/graphql/resolvers/work_items/types_resolver.rb10
6 files changed, 24 insertions, 6 deletions
diff --git a/app/graphql/resolvers/base_issues_resolver.rb b/app/graphql/resolvers/base_issues_resolver.rb
index 3e7509b4068..4cae7866a49 100644
--- a/app/graphql/resolvers/base_issues_resolver.rb
+++ b/app/graphql/resolvers/base_issues_resolver.rb
@@ -12,12 +12,14 @@ module Resolvers
required: false,
description: 'Current state of this issue.'
- type Types::IssueType.connection_type, null: true
+ # see app/graphql/types/issue_connection.rb
+ type 'Types::IssueConnection', null: true
NON_STABLE_CURSOR_SORTS = %i[priority_asc priority_desc
popularity_asc popularity_desc
label_priority_asc label_priority_desc
- milestone_due_asc milestone_due_desc].freeze
+ milestone_due_asc milestone_due_desc
+ escalation_status_asc escalation_status_desc].freeze
def continue_issue_resolve(parent, finder, **args)
issues = Gitlab::Graphql::Loaders::IssuableLoader.new(parent, finder).batching_find_all { |q| apply_lookahead(q) }
@@ -31,6 +33,13 @@ module Resolvers
end
end
+ def prepare_params(args, parent)
+ return unless [:escalation_status_asc, :escalation_status_desc].include?(args[:sort])
+ return if Feature.enabled?(:incident_escalations, parent, default_enabled: :yaml)
+
+ args[:sort] = :created_desc # default for sort argument
+ end
+
private
def unconditional_includes
diff --git a/app/graphql/resolvers/base_resolver.rb b/app/graphql/resolvers/base_resolver.rb
index 20ed089d159..dbded8f60a0 100644
--- a/app/graphql/resolvers/base_resolver.rb
+++ b/app/graphql/resolvers/base_resolver.rb
@@ -142,7 +142,7 @@ module Resolvers
def object
super.tap do |obj|
# If the field this resolver is used in is wrapped in a presenter, unwrap its subject
- break obj.subject if obj.is_a?(Gitlab::View::Presenter::Base)
+ break obj.__subject__ if obj.is_a?(Gitlab::View::Presenter::Base)
end
end
diff --git a/app/graphql/resolvers/concerns/issue_resolver_arguments.rb b/app/graphql/resolvers/concerns/issue_resolver_arguments.rb
index 38c79ff52ac..432d6f48607 100644
--- a/app/graphql/resolvers/concerns/issue_resolver_arguments.rb
+++ b/app/graphql/resolvers/concerns/issue_resolver_arguments.rb
@@ -84,6 +84,7 @@ module IssueResolverArguments
prepare_assignee_username_params(args)
prepare_release_tag_params(args)
+ prepare_params(args, parent) if defined?(prepare_params)
finder = IssuesFinder.new(current_user, args)
diff --git a/app/graphql/resolvers/groups_resolver.rb b/app/graphql/resolvers/groups_resolver.rb
index abd3bf9e6e0..6cfdba240f0 100644
--- a/app/graphql/resolvers/groups_resolver.rb
+++ b/app/graphql/resolvers/groups_resolver.rb
@@ -30,7 +30,7 @@ module Resolvers
GroupsFinder
.new(context[:current_user], args.merge(parent: parent))
.execute
- .reorder('name ASC')
+ .reorder(name: :asc)
end
# rubocop: enable CodeReuse/ActiveRecord
end
diff --git a/app/graphql/resolvers/work_item_resolver.rb b/app/graphql/resolvers/work_item_resolver.rb
index 7cf52339815..ad510849f31 100644
--- a/app/graphql/resolvers/work_item_resolver.rb
+++ b/app/graphql/resolvers/work_item_resolver.rb
@@ -12,7 +12,7 @@ module Resolvers
def resolve(id:)
work_item = authorized_find!(id: id)
- return unless Feature.enabled?(:work_items, work_item.project, default_enabled: :yaml)
+ return unless work_item.project.work_items_feature_flag_enabled?
work_item
end
diff --git a/app/graphql/resolvers/work_items/types_resolver.rb b/app/graphql/resolvers/work_items/types_resolver.rb
index 67a9d57d42f..5f9f8ab5572 100644
--- a/app/graphql/resolvers/work_items/types_resolver.rb
+++ b/app/graphql/resolvers/work_items/types_resolver.rb
@@ -11,7 +11,7 @@ module Resolvers
' Argument is experimental and can be removed in the future without notice.'
def resolve(taskable: nil)
- return unless Feature.enabled?(:work_items, object, default_enabled: :yaml)
+ return unless feature_flag_enabled_for_parent?(object)
# This will require a finder in the future when groups/projects get their work item types
# All groups/projects use the default types for now
@@ -20,6 +20,14 @@ module Resolvers
base_scope.order_by_name_asc
end
+
+ private
+
+ def feature_flag_enabled_for_parent?(parent)
+ return false unless parent.is_a?(::Project) || parent.is_a?(::Group)
+
+ parent.work_items_feature_flag_enabled?
+ end
end
end
end