From 3fb8cd2d698c07047e3bf6f8153307ef07cdefd3 Mon Sep 17 00:00:00 2001 From: Dmitry Gruzd <dgruzd@gitlab.com> Date: Tue, 6 Feb 2024 11:32:43 +0000 Subject: [PATCH] Revert "Merge branch '427437-preload-autocomplete_sources-members-retry' into 'master'" Changelog: fixed --- app/assets/javascripts/constants.js | 2 - app/assets/javascripts/gl_form.js | 19 +--------- app/assets/javascripts/mr_notes/init_notes.js | 4 -- app/assets/javascripts/notes/index.js | 4 -- .../vue_shared/components/markdown/field.vue | 8 ---- app/controllers/projects/issues_controller.rb | 1 - .../projects/merge_requests_controller.rb | 1 - ...reload_autocomplete_members_issues_mrs.yml | 8 ---- .../issues/user_comments_on_issue_spec.rb | 2 +- .../user_comments_on_merge_request_spec.rb | 6 +-- spec/frontend/gl_form_spec.js | 38 ------------------- .../components/markdown/field_spec.js | 10 ----- .../user_updates_wiki_page_shared_examples.rb | 2 +- 13 files changed, 5 insertions(+), 100 deletions(-) delete mode 100644 config/feature_flags/development/preload_autocomplete_members_issues_mrs.yml diff --git a/app/assets/javascripts/constants.js b/app/assets/javascripts/constants.js index 631968ff531d6..f43a2d5d8ff5b 100644 --- a/app/assets/javascripts/constants.js +++ b/app/assets/javascripts/constants.js @@ -3,5 +3,3 @@ export const getModifierKey = (removeSuffix = false) => { const winKey = `Ctrl${removeSuffix ? '' : '+'}`; return window.gl?.client?.isMac ? '⌘' : winKey; }; - -export const PRELOAD_THROTTLE_TIMEOUT_MS = 4000; diff --git a/app/assets/javascripts/gl_form.js b/app/assets/javascripts/gl_form.js index ed2d1dbb7d205..f4008fe3cc927 100644 --- a/app/assets/javascripts/gl_form.js +++ b/app/assets/javascripts/gl_form.js @@ -5,7 +5,6 @@ import GfmAutoComplete, { defaultAutocompleteConfig } from 'ee_else_ce/gfm_auto_ import { disableButtonIfEmptyField } from '~/lib/utils/common_utils'; import dropzoneInput from './dropzone_input'; import { addMarkdownListeners, removeMarkdownListeners } from './lib/utils/text_markdown'; -import { PRELOAD_THROTTLE_TIMEOUT_MS } from './constants'; export default class GLForm { /** @@ -18,11 +17,10 @@ export default class GLForm { * By default, the backend embeds these in the global object gl.GfmAutocomplete.dataSources. * Use this param to override them. */ - constructor(form, enableGFM = {}, forceNew = false, gfmDataSources = {}, preloadMembers = false) { + constructor(form, enableGFM = {}, forceNew = false, gfmDataSources = {}) { this.form = form; this.textarea = this.form.find('textarea.js-gfm-input'); this.enableGFM = { ...defaultAutocompleteConfig, ...enableGFM }; - this.preloadMembers = preloadMembers; // Disable autocomplete for keywords which do not have dataSources available let dataSources = (gl.GfmAutoComplete && gl.GfmAutoComplete.dataSources) || {}; @@ -70,21 +68,6 @@ export default class GLForm { ); this.autoComplete = new GfmAutoComplete(dataSources); this.autoComplete.setup(this.form.find('.js-gfm-input'), this.enableGFM); - - if (this.preloadMembers && dataSources?.members) { - // for now the preload is only implemented for the members - // timeout helping to trottle the preloads in the case content_editor - // is set as main comment editor and support for rspec tests - // https://gitlab.com/gitlab-org/gitlab/-/issues/427437 - - requestIdleCallback(() => - setTimeout( - () => this.autoComplete?.fetchData($('.js-gfm-input'), '@'), - PRELOAD_THROTTLE_TIMEOUT_MS, - ), - ); - } - this.formDropzone = dropzoneInput(this.form, { parallelUploads: 1 }); if (this.form.is(':not(.js-no-autosize)')) { diff --git a/app/assets/javascripts/mr_notes/init_notes.js b/app/assets/javascripts/mr_notes/init_notes.js index c9e56a6161f49..265e2a2f8805f 100644 --- a/app/assets/javascripts/mr_notes/init_notes.js +++ b/app/assets/javascripts/mr_notes/init_notes.js @@ -12,7 +12,6 @@ import discussionNavigator from '../notes/components/discussion_navigator.vue'; import NotesApp from '../notes/components/notes_app.vue'; import { getNotesFilterData } from '../notes/utils/get_notes_filter_data'; import initWidget from '../vue_merge_request_widget'; -import { MERGE_REQUEST_NOTEABLE_TYPE } from '../notes/constants'; export default () => { requestIdleCallback( @@ -46,9 +45,6 @@ export default () => { newCommentTemplatePath: notesDataset.newCommentTemplatePath, mrFilter: true, newCustomEmojiPath: notesDataset.newCustomEmojiPath, - preloadMembers: - notesDataset?.noteableType === MERGE_REQUEST_NOTEABLE_TYPE && - gon?.features?.preloadAutocompleteMembersIssuesMrs, }, data() { const noteableData = JSON.parse(notesDataset.noteableData); diff --git a/app/assets/javascripts/notes/index.js b/app/assets/javascripts/notes/index.js index cc9a3d879397c..f9fbe6659ee65 100644 --- a/app/assets/javascripts/notes/index.js +++ b/app/assets/javascripts/notes/index.js @@ -7,7 +7,6 @@ import { getLocationHash } from '~/lib/utils/url_utility'; import NotesApp from './components/notes_app.vue'; import { store } from './stores'; import { getNotesFilterData } from './utils/get_notes_filter_data'; -import { ISSUE_NOTEABLE_TYPE } from './constants'; export default ({ editorAiActions = [] } = {}) => { const el = document.getElementById('js-vue-notes'); @@ -64,9 +63,6 @@ export default ({ editorAiActions = [] } = {}) => { resourceGlobalId: convertToGraphQLId(noteableData.noteableType, noteableData.id), editorAiActions: editorAiActions.map((factory) => factory(noteableData)), newCustomEmojiPath: notesDataset.newCustomEmojiPath, - preloadMembers: - notesDataset.noteableType === ISSUE_NOTEABLE_TYPE && - gon?.features?.preloadAutocompleteMembersIssuesMrs, }, data() { return { diff --git a/app/assets/javascripts/vue_shared/components/markdown/field.vue b/app/assets/javascripts/vue_shared/components/markdown/field.vue index 034d591b6caea..e80f5c7f0927e 100644 --- a/app/assets/javascripts/vue_shared/components/markdown/field.vue +++ b/app/assets/javascripts/vue_shared/components/markdown/field.vue @@ -33,13 +33,6 @@ export default { GlTooltip: GlTooltipDirective, }, mixins: [glFeatureFlagsMixin()], - inject: { - preloadMembers: { - type: Boolean, - required: false, - default: false, - }, - }, props: { /** * This prop should be bound to the value of the `<textarea>` element @@ -285,7 +278,6 @@ export default { }, true, this.autocompleteDataSources, - this.preloadMembers, ); markdownEditorEventHub.$emit(MARKDOWN_EDITOR_READY_EVENT); diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb index 81e3fb60d0c75..7a2b00d5aa6ca 100644 --- a/app/controllers/projects/issues_controller.rb +++ b/app/controllers/projects/issues_controller.rb @@ -71,7 +71,6 @@ class Projects::IssuesController < Projects::ApplicationController push_force_frontend_feature_flag(:linked_work_items, project.linked_work_items_feature_flag_enabled?) push_frontend_feature_flag(:notifications_todos_buttons, current_user) push_frontend_feature_flag(:mention_autocomplete_backend_filtering, project) - push_frontend_feature_flag(:preload_autocomplete_members_issues_mrs, current_user) end around_action :allow_gitaly_ref_name_caching, only: [:discussions] diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb index 6edf57ccc5371..b4ce23de83ce1 100644 --- a/app/controllers/projects/merge_requests_controller.rb +++ b/app/controllers/projects/merge_requests_controller.rb @@ -48,7 +48,6 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo push_frontend_feature_flag(:mention_autocomplete_backend_filtering, project) push_frontend_feature_flag(:pinned_file, project) push_frontend_feature_flag(:merge_request_diff_generated_subscription, project) - push_frontend_feature_flag(:preload_autocomplete_members_issues_mrs, current_user) end around_action :allow_gitaly_ref_name_caching, only: [:index, :show, :diffs, :discussions] diff --git a/config/feature_flags/development/preload_autocomplete_members_issues_mrs.yml b/config/feature_flags/development/preload_autocomplete_members_issues_mrs.yml deleted file mode 100644 index e1789dccaa1b2..0000000000000 --- a/config/feature_flags/development/preload_autocomplete_members_issues_mrs.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: preload_autocomplete_members_issues_mrs -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/139085 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/435698 -milestone: '16.8' -type: development -group: group::global search -default_enabled: false diff --git a/spec/features/issues/user_comments_on_issue_spec.rb b/spec/features/issues/user_comments_on_issue_spec.rb index b6e9754485ebe..d27f3ffebe6f1 100644 --- a/spec/features/issues/user_comments_on_issue_spec.rb +++ b/spec/features/issues/user_comments_on_issue_spec.rb @@ -35,7 +35,7 @@ # do not test quick actions here since guest users don't have permission # to execute all quick actions - it_behaves_like 'edits content using the content editor', { with_quick_actions: false }, quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/439368' + it_behaves_like 'edits content using the content editor', { with_quick_actions: false } it "adds comment with code block" do code_block_content = "Command [1]: /usr/local/bin/git , see [text](doc/text)" diff --git a/spec/features/merge_request/user_comments_on_merge_request_spec.rb b/spec/features/merge_request/user_comments_on_merge_request_spec.rb index d49662edd57ee..d02463efedd1b 100644 --- a/spec/features/merge_request/user_comments_on_merge_request_spec.rb +++ b/spec/features/merge_request/user_comments_on_merge_request_spec.rb @@ -33,7 +33,7 @@ end end - context 'with content editor', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/439368' do + context 'with content editor' do it_behaves_like 'edits content using the content editor' end @@ -94,9 +94,7 @@ end wait_for_requests - page.within('.modal-dialog') do - expect(page).to have_content('Are you sure you want to cancel creating this comment?') - end + expect(page.html).to include('Are you sure you want to cancel creating this comment?') end it 'loads new comment' do diff --git a/spec/frontend/gl_form_spec.js b/spec/frontend/gl_form_spec.js index b99b43d303961..6ad9d9f433881 100644 --- a/spec/frontend/gl_form_spec.js +++ b/spec/frontend/gl_form_spec.js @@ -1,7 +1,6 @@ import autosize from 'autosize'; import $ from 'jquery'; import GLForm from '~/gl_form'; -import GfmAutoComplete from 'ee_else_ce/gfm_auto_complete'; import '~/lib/utils/text_utility'; import '~/lib/utils/common_utils'; @@ -47,43 +46,6 @@ describe('GLForm', () => { expect(setupFormSpy).toHaveBeenCalledWith(customDataSources, false); }); }); - - describe('GfmAutoComplete', () => { - let autocompleteDataFetchSpy; - const updatedMockGl = { ...mockGl }; - - updatedMockGl.GfmAutoComplete.dataSources = { - ...updatedMockGl.GfmAutoComplete.dataSources, - members: '/group/projects/-/autocomplete_sources/members', - }; - - beforeEach(() => { - jest.spyOn(window, 'requestIdleCallback').mockImplementation((cb) => cb()); - - // We need to mock implement fetchData to prevent - // the axios call which is not subject of this test - autocompleteDataFetchSpy = jest - .spyOn(GfmAutoComplete.prototype, 'fetchData') - .mockImplementation(() => 'test'); - - testContext.form = $('<form class="gfm-form"><textarea class="js-gfm-input"></form>'); - testContext.textarea = testContext.form.find('textarea'); - }); - - afterEach(() => { - window.requestIdleCallback.mockRestore(); - autocompleteDataFetchSpy.mockRestore(); - }); - - it('will call fetchdata if preloadMembers is enabled', () => { - window.gl = { ...updatedMockGl }; - - testContext.glForm = new GLForm(testContext.form, {}, true, {}, true); - jest.runAllTimers(); - expect(autocompleteDataFetchSpy).toHaveBeenCalledTimes(1); - expect(autocompleteDataFetchSpy).toHaveBeenCalledWith(expect.any(Object), '@'); - }); - }); }); describe('when instantiated', () => { diff --git a/spec/frontend/vue_shared/components/markdown/field_spec.js b/spec/frontend/vue_shared/components/markdown/field_spec.js index 9d8924c92f7f3..4ade8f28fd0e3 100644 --- a/spec/frontend/vue_shared/components/markdown/field_spec.js +++ b/spec/frontend/vue_shared/components/markdown/field_spec.js @@ -67,9 +67,6 @@ describe('Markdown field component', () => { showContentEditorSwitcher, supportsQuickActions: true, }, - provide: { - preloadMembers: true, - }, mocks: { $apollo: { queries: { @@ -96,9 +93,6 @@ describe('Markdown field component', () => { showContentEditorSwitcher: false, autocompleteDataSources, }, - provide: { - preloadMembers: true, - }, }); } @@ -137,10 +131,6 @@ describe('Markdown field component', () => { commands: '/foobar/-/autocomplete_sources', }); }); - - it('initializes GlForm with autocomplete data sources and preload memebers', () => { - expect(findGlForm().preloadMembers).toBe(true); - }); }); it('renders textarea inside backdrop', () => { diff --git a/spec/support/shared_examples/features/wiki/user_updates_wiki_page_shared_examples.rb b/spec/support/shared_examples/features/wiki/user_updates_wiki_page_shared_examples.rb index 12dc3cfcc6ea9..09444084eb9ac 100644 --- a/spec/support/shared_examples/features/wiki/user_updates_wiki_page_shared_examples.rb +++ b/spec/support/shared_examples/features/wiki/user_updates_wiki_page_shared_examples.rb @@ -152,7 +152,7 @@ it_behaves_like 'edits content using the content editor', { with_expanded_references: false, with_quick_actions: false - }, quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/439368' + } it_behaves_like 'inserts diagrams.net diagram using the content editor' it_behaves_like 'autocompletes items' end -- GitLab