diff --git a/app/assets/javascripts/merge_request.js b/app/assets/javascripts/merge_request.js index 1e02703cbe78ee94f8f11d7864df936b068ad297..c837583dd45a40025f0bd4a585d46d73f2405daf 100644 --- a/app/assets/javascripts/merge_request.js +++ b/app/assets/javascripts/merge_request.js @@ -5,7 +5,6 @@ import { createAlert } from '~/alert'; import { TYPE_MERGE_REQUEST } from '~/issues/constants'; import toast from '~/vue_shared/plugins/global_toast'; import { __ } from '~/locale'; -import eventHub from '~/vue_merge_request_widget/event_hub'; import { loadingIconForLegacyJS } from '~/loading_icon_for_legacy_js'; import axios from './lib/utils/axios_utils'; import { addDelimiter } from './lib/utils/text_utility'; @@ -146,10 +145,6 @@ MergeRequest.decreaseCounter = function (by = 1) { }; MergeRequest.toggleDraftStatus = function (title, isReady) { - if (!window.gon?.features?.realtimeMrStatusChange) { - eventHub.$emit('MRWidgetUpdateRequested'); - } - if (isReady) { toast(__('Marked as ready. Merging is now allowed.')); } else { diff --git a/app/assets/javascripts/merge_requests/components/sticky_header.vue b/app/assets/javascripts/merge_requests/components/sticky_header.vue index a66490b5f7512fa6c2be2e0673c435956de08a5d..c6e8a9ea582874e33b34b410994f8937b4089784 100644 --- a/app/assets/javascripts/merge_requests/components/sticky_header.vue +++ b/app/assets/javascripts/merge_requests/components/sticky_header.vue @@ -25,7 +25,7 @@ export default { }; }, skip() { - return !this.issuableId || !this.glFeatures.realtimeMrStatusChange; + return !this.issuableId; }, result({ data: { mergeRequestMergeStatusUpdated } }) { if (mergeRequestMergeStatusUpdated) { diff --git a/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals.vue b/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals.vue index ad78de8728f5dd40f7bc6c5731f7c87713d8f741..95fa01c23f14a5373c5b1e93cd8c84ef732139cb 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals.vue @@ -7,7 +7,6 @@ import { HTTP_STATUS_UNAUTHORIZED } from '~/lib/utils/http_status'; import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; import { s__, __, sprintf } from '~/locale'; import { getIdFromGraphQLId } from '~/graphql_shared/utils'; -import eventHub from '../../event_hub'; import approvalsMixin from '../../mixins/approvals'; import StateContainer from '../state_container.vue'; import { INVALID_RULES_DOCS_PATH } from '../../constants'; @@ -215,11 +214,6 @@ export default { this.clearError(); return serviceFn() .then(() => { - if (!window.gon?.features?.realtimeMrStatusChange) { - eventHub.$emit('MRWidgetUpdateRequested'); - eventHub.$emit('ApprovalUpdated'); - } - // TODO: Remove this line when we move to Apollo subscriptions this.$apollo.queries.approvals.refetch(); }) diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue index fad0830388e47e5573f5cdedfe0bf64da7896f96..52cdafd4717d5549eb96098620c0f7df52f5878d 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue @@ -97,7 +97,7 @@ export default { return readyToMergeSubscription; }, skip() { - return !this.mr?.id || this.loading || !window.gon?.features?.realtimeMrStatusChange; + return !this.mr?.id || this.loading; }, variables() { return { diff --git a/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue b/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue index e9efc8e75be7794a58749ad38e63e5b5f250223f..ab899436accf611f79c324e24282a1bdcb0b5475 100644 --- a/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue +++ b/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue @@ -134,7 +134,7 @@ export default { return getStateSubscription; }, skip() { - return !this.mr?.id || this.loading || !window.gon?.features?.realtimeMrStatusChange; + return !this.mr?.id || this.loading; }, variables() { return { diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb index 6558dc10994adaa694b477c04d0b45937b63a3e5..4e91392692f9cdf6da6105d33aafb330a15e6360 100644 --- a/app/controllers/projects/merge_requests_controller.rb +++ b/app/controllers/projects/merge_requests_controller.rb @@ -45,7 +45,6 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo push_frontend_feature_flag(:deprecate_vulnerabilities_feedback, @project) push_frontend_feature_flag(:moved_mr_sidebar, project) push_frontend_feature_flag(:mr_experience_survey, project) - push_frontend_feature_flag(:realtime_mr_status_change, project) push_frontend_feature_flag(:saved_replies, current_user) push_frontend_feature_flag(:code_quality_inline_drawer, project) push_frontend_feature_flag(:auto_merge_labels_mr_widget, project) diff --git a/app/graphql/graphql_triggers.rb b/app/graphql/graphql_triggers.rb index 7abd1258958b662fb76a0615a275540d09ff300c..527eb50b644e97897ffc87a75ae43bd7f3555edb 100644 --- a/app/graphql/graphql_triggers.rb +++ b/app/graphql/graphql_triggers.rb @@ -48,8 +48,6 @@ def self.merge_request_reviewers_updated(merge_request) end def self.merge_request_merge_status_updated(merge_request) - return unless Feature.enabled?(:realtime_mr_status_change, merge_request.project) - GitlabSchema.subscriptions.trigger( :merge_request_merge_status_updated, { issuable_id: merge_request.to_gid }, merge_request ) diff --git a/config/feature_flags/development/realtime_mr_status_change.yml b/config/feature_flags/development/realtime_mr_status_change.yml deleted file mode 100644 index a922ba7d12a396a37623192e6526252f72af96c1..0000000000000000000000000000000000000000 --- a/config/feature_flags/development/realtime_mr_status_change.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: realtime_mr_status_change -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/103011 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/385077 -milestone: '15.7' -type: development -group: group::code review -default_enabled: true diff --git a/ee/spec/frontend/vue_merge_request_widget/ee_mr_widget_options_spec.js b/ee/spec/frontend/vue_merge_request_widget/ee_mr_widget_options_spec.js index 1c3dbb21e8d24f1738237d795137bc3581cb89d0..a09a790615a50a6a34ae286255e5dc39e39fa866 100644 --- a/ee/spec/frontend/vue_merge_request_widget/ee_mr_widget_options_spec.js +++ b/ee/spec/frontend/vue_merge_request_widget/ee_mr_widget_options_spec.js @@ -52,6 +52,8 @@ import _Deployment from '~/vue_merge_request_widget/components/deployment/deploy import securityReportMergeRequestDownloadPathsQuery from '~/vue_shared/security_reports/graphql/queries/security_report_merge_request_download_paths.query.graphql'; import getStateQuery from '~/vue_merge_request_widget/queries/get_state.query.graphql'; +import getStateSubscription from '~/vue_merge_request_widget/queries/get_state.subscription.graphql'; +import readyToMergeSubscription from '~/vue_merge_request_widget/queries/states/ready_to_merge.subscription.graphql'; import readyToMergeQuery from 'ee_else_ce/vue_merge_request_widget/queries/states/ready_to_merge.query.graphql'; import mergeQuery from '~/vue_merge_request_widget/queries/states/new_ready_to_merge.query.graphql'; import approvalsQuery from 'ee_else_ce/vue_merge_request_widget/components/approvals/queries/approvals.query.graphql'; @@ -115,6 +117,8 @@ describe('ee merge request widget options', () => { return newSub; }, ], + [getStateSubscription, () => createMockApolloSubscription()], + [readyToMergeSubscription, () => createMockApolloSubscription()], ]; const apolloProvider = createMockApollo(queryHandlers); diff --git a/spec/frontend/vue_merge_request_widget/components/approvals/approvals_spec.js b/spec/frontend/vue_merge_request_widget/components/approvals/approvals_spec.js index 724f9ea0346a1aade6650a3e64f24915c30d1724..2aed037be6f0fd659a74f44abd6090f88a04bb8b 100644 --- a/spec/frontend/vue_merge_request_widget/components/approvals/approvals_spec.js +++ b/spec/frontend/vue_merge_request_widget/components/approvals/approvals_spec.js @@ -243,10 +243,6 @@ describe('MRWidget approvals', () => { it('calls service approve', () => { expect(service.approveMergeRequest).toHaveBeenCalled(); }); - - it('emits to eventHub', () => { - expect(eventHub.$emit).toHaveBeenCalledWith('MRWidgetUpdateRequested'); - }); }); describe('and error', () => { @@ -297,10 +293,6 @@ describe('MRWidget approvals', () => { it('calls service unapprove', () => { expect(service.unapproveMergeRequest).toHaveBeenCalled(); }); - - it('emits to eventHub', () => { - expect(eventHub.$emit).toHaveBeenCalledWith('MRWidgetUpdateRequested'); - }); }); describe('and error', () => { diff --git a/spec/frontend/vue_merge_request_widget/mr_widget_options_spec.js b/spec/frontend/vue_merge_request_widget/mr_widget_options_spec.js index daa45a9e876b585af452fd459fb7919dabcb33e3..db97a93599310f05f834c2c2288d6bce5eb61c01 100644 --- a/spec/frontend/vue_merge_request_widget/mr_widget_options_spec.js +++ b/spec/frontend/vue_merge_request_widget/mr_widget_options_spec.js @@ -33,6 +33,7 @@ import StatusIcon from '~/vue_merge_request_widget/components/extensions/status_ import securityReportMergeRequestDownloadPathsQuery from '~/vue_shared/security_reports/graphql/queries/security_report_merge_request_download_paths.query.graphql'; import getStateQuery from '~/vue_merge_request_widget/queries/get_state.query.graphql'; import getStateSubscription from '~/vue_merge_request_widget/queries/get_state.subscription.graphql'; +import readyToMergeSubscription from '~/vue_merge_request_widget/queries/states/ready_to_merge.subscription.graphql'; import readyToMergeQuery from 'ee_else_ce/vue_merge_request_widget/queries/states/ready_to_merge.query.graphql'; import approvalsQuery from 'ee_else_ce/vue_merge_request_widget/components/approvals/queries/approvals.query.graphql'; import approvedBySubscription from 'ee_else_ce/vue_merge_request_widget/components/approvals/queries/approvals.subscription.graphql'; @@ -72,6 +73,7 @@ describe('MrWidgetOptions', () => { let queryResponse; let wrapper; let mock; + let stateSubscription; const COLLABORATION_MESSAGE = 'Members who can merge are allowed to add commits'; const findApprovalsWidget = () => wrapper.findComponent(Approvals); @@ -117,6 +119,7 @@ describe('MrWidgetOptions', () => { }, }; stateQueryHandler = jest.fn().mockResolvedValue(queryResponse); + stateSubscription = createMockApolloSubscription(); const mounting = fullMount ? mount : shallowMount; const queryHandlers = [ @@ -137,6 +140,8 @@ describe('MrWidgetOptions', () => { ]; const subscriptionHandlers = [ [approvedBySubscription, () => mockedApprovalsSubscription], + [getStateSubscription, () => stateSubscription], + [readyToMergeSubscription, () => createMockApolloSubscription()], ...(options.apolloSubscriptions || []), ]; const apolloProvider = createMockApollo(queryHandlers); @@ -1312,11 +1317,8 @@ describe('MrWidgetOptions', () => { }); describe('when the MR is updated by observing its status', () => { - let stateSubscription; - beforeEach(() => { window.gon.features.realtimeMrStatusChange = true; - stateSubscription = createMockApolloSubscription(); }); it("shows the Preparing widget when the MR reports it's not ready yet", async () => { @@ -1326,9 +1328,7 @@ describe('MrWidgetOptions', () => { state: 'opened', detailedMergeStatus: 'PREPARING', }, - { - apolloSubscriptions: [[getStateSubscription, () => stateSubscription]], - }, + {}, {}, false, ); @@ -1343,9 +1343,7 @@ describe('MrWidgetOptions', () => { state: 'opened', detailedMergeStatus: 'PREPARING', }, - { - apolloSubscriptions: [[getStateSubscription, () => stateSubscription]], - }, + {}, {}, false, ); diff --git a/spec/graphql/graphql_triggers_spec.rb b/spec/graphql/graphql_triggers_spec.rb index f59ce805fcda237273e4a4b651f0ac1bd48aeac5..864818351a119dc872473fb7a9d5aa9af7544de4 100644 --- a/spec/graphql/graphql_triggers_spec.rb +++ b/spec/graphql/graphql_triggers_spec.rb @@ -116,20 +116,6 @@ GraphqlTriggers.merge_request_merge_status_updated(merge_request) end - - context 'when realtime_mr_status_change feature flag is disabled' do - before do - stub_feature_flags(realtime_mr_status_change: false) - end - - it 'does not trigger realtime_mr_status_change subscription' do - merge_request = build_stubbed(:merge_request) - - expect(GitlabSchema.subscriptions).not_to receive(:trigger) - - GraphqlTriggers.merge_request_merge_status_updated(merge_request) - end - end end describe '.merge_request_approval_state_updated' do