diff options
Diffstat (limited to 'app/graphql/resolvers')
-rw-r--r-- | app/graphql/resolvers/base_issues_resolver.rb | 13 | ||||
-rw-r--r-- | app/graphql/resolvers/base_resolver.rb | 2 | ||||
-rw-r--r-- | app/graphql/resolvers/concerns/issue_resolver_arguments.rb | 1 | ||||
-rw-r--r-- | app/graphql/resolvers/groups_resolver.rb | 2 | ||||
-rw-r--r-- | app/graphql/resolvers/work_item_resolver.rb | 2 | ||||
-rw-r--r-- | app/graphql/resolvers/work_items/types_resolver.rb | 10 |
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 |