diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-10-20 11:43:02 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-10-20 11:43:02 +0300 |
commit | d9ab72d6080f594d0b3cae15f14b3ef2c6c638cb (patch) | |
tree | 2341ef426af70ad1e289c38036737e04b0aa5007 /app/serializers | |
parent | d6e514dd13db8947884cd58fe2a9c2a063400a9b (diff) |
Add latest changes from gitlab-org/gitlab@14-4-stable-eev14.4.0-rc42
Diffstat (limited to 'app/serializers')
-rw-r--r-- | app/serializers/feature_flag_entity.rb | 4 | ||||
-rw-r--r-- | app/serializers/feature_flag_scope_entity.rb | 12 | ||||
-rw-r--r-- | app/serializers/member_entity.rb | 6 | ||||
-rw-r--r-- | app/serializers/merge_request_metrics_helper.rb | 28 | ||||
-rw-r--r-- | app/serializers/merge_request_poll_cached_widget_entity.rb | 25 | ||||
-rw-r--r-- | app/serializers/merge_request_widget_entity.rb | 5 |
6 files changed, 42 insertions, 38 deletions
diff --git a/app/serializers/feature_flag_entity.rb b/app/serializers/feature_flag_entity.rb index 80cf869a389..196a4cd504f 100644 --- a/app/serializers/feature_flag_entity.rb +++ b/app/serializers/feature_flag_entity.rb @@ -24,8 +24,8 @@ class FeatureFlagEntity < Grape::Entity project_feature_flag_path(feature_flag.project, feature_flag) end - expose :scopes, with: FeatureFlagScopeEntity do |feature_flag| - feature_flag.scopes.sort_by(&:id) + expose :scopes do |_ff| + [] end expose :strategies, with: FeatureFlags::StrategyEntity do |feature_flag| diff --git a/app/serializers/feature_flag_scope_entity.rb b/app/serializers/feature_flag_scope_entity.rb deleted file mode 100644 index 0450797a545..00000000000 --- a/app/serializers/feature_flag_scope_entity.rb +++ /dev/null @@ -1,12 +0,0 @@ -# frozen_string_literal: true - -class FeatureFlagScopeEntity < Grape::Entity - include RequestAwareEntity - - expose :id - expose :active - expose :environment_scope - expose :created_at - expose :updated_at - expose :strategies -end diff --git a/app/serializers/member_entity.rb b/app/serializers/member_entity.rb index 5100a41638e..d7221109ecb 100644 --- a/app/serializers/member_entity.rb +++ b/app/serializers/member_entity.rb @@ -44,6 +44,8 @@ class MemberEntity < Grape::Entity MemberUserEntity.represent(member.user, source: options[:source]) end + expose :state + expose :invite, if: -> (member) { member.invite? } do expose :email do |member| member.invite_email @@ -56,6 +58,10 @@ class MemberEntity < Grape::Entity expose :can_resend do |member| member.can_resend_invite? end + + expose :user_state do |member| + member.respond_to?(:invited_user_state) ? member.invited_user_state : "" + end end end diff --git a/app/serializers/merge_request_metrics_helper.rb b/app/serializers/merge_request_metrics_helper.rb new file mode 100644 index 00000000000..fb1769d0aa6 --- /dev/null +++ b/app/serializers/merge_request_metrics_helper.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +module MergeRequestMetricsHelper + # There are cases where where metrics object doesn't exist and it needs to be rebuilt. + # TODO: Once https://gitlab.com/gitlab-org/gitlab/-/issues/342508 has been resolved and + # all merge requests have metrics we can remove this helper method. + def build_metrics(merge_request) + # There's no need to query and serialize metrics data for merge requests that are not + # merged or closed. + return unless merge_request.merged? || merge_request.closed? + return merge_request.metrics if merge_request.merged? && merge_request.metrics&.merged_by_id + return merge_request.metrics if merge_request.closed? && merge_request.metrics&.latest_closed_by_id + + build_metrics_from_events(merge_request) + end + + private + + def build_metrics_from_events(merge_request) + closed_event = merge_request.closed_event + merge_event = merge_request.merge_event + + MergeRequest::Metrics.new(latest_closed_at: closed_event&.updated_at, + latest_closed_by: closed_event&.author, + merged_at: merge_event&.updated_at, + merged_by: merge_event&.author) + end +end diff --git a/app/serializers/merge_request_poll_cached_widget_entity.rb b/app/serializers/merge_request_poll_cached_widget_entity.rb index 7fba52cbe17..8b0f3c8eb74 100644 --- a/app/serializers/merge_request_poll_cached_widget_entity.rb +++ b/app/serializers/merge_request_poll_cached_widget_entity.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class MergeRequestPollCachedWidgetEntity < IssuableEntity + include MergeRequestMetricsHelper + expose :auto_merge_enabled expose :state expose :merged_commit_sha @@ -158,29 +160,6 @@ class MergeRequestPollCachedWidgetEntity < IssuableEntity @presenters ||= {} @presenters[merge_request] ||= MergeRequestPresenter.new(merge_request, current_user: current_user) # rubocop: disable CodeReuse/Presenter end - - # Once SchedulePopulateMergeRequestMetricsWithEventsData fully runs, - # we can remove this method and just serialize MergeRequest#metrics - # instead. See https://gitlab.com/gitlab-org/gitlab-foss/issues/41587 - def build_metrics(merge_request) - # There's no need to query and serialize metrics data for merge requests that are not - # merged or closed. - return unless merge_request.merged? || merge_request.closed? - return merge_request.metrics if merge_request.merged? && merge_request.metrics&.merged_by_id - return merge_request.metrics if merge_request.closed? && merge_request.metrics&.latest_closed_by_id - - build_metrics_from_events(merge_request) - end - - def build_metrics_from_events(merge_request) - closed_event = merge_request.closed_event - merge_event = merge_request.merge_event - - MergeRequest::Metrics.new(latest_closed_at: closed_event&.updated_at, - latest_closed_by: closed_event&.author, - merged_at: merge_event&.updated_at, - merged_by: merge_event&.author) - end end MergeRequestPollCachedWidgetEntity.prepend_mod_with('MergeRequestPollCachedWidgetEntity') diff --git a/app/serializers/merge_request_widget_entity.rb b/app/serializers/merge_request_widget_entity.rb index 1c033dee5ff..1e4289ce774 100644 --- a/app/serializers/merge_request_widget_entity.rb +++ b/app/serializers/merge_request_widget_entity.rb @@ -83,7 +83,10 @@ class MergeRequestWidgetEntity < Grape::Entity end expose :is_dismissed_suggest_pipeline do |_merge_request| - current_user && current_user.dismissed_callout?(feature_name: SUGGEST_PIPELINE) + next true unless current_user + next true unless Gitlab::CurrentSettings.suggest_pipeline_enabled? + + current_user.dismissed_callout?(feature_name: SUGGEST_PIPELINE) end expose :human_access do |merge_request| |