From e1f1f9056fc368ef96c9c3cd6efc44b8f0550a19 Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Wed, 26 Apr 2023 15:29:48 -0600 Subject: [PATCH] Fix diff file load performance markers in file-by-file mode This resolves a console error, but there is no UI/UX change. --- .../javascripts/diffs/components/diff_file.vue | 4 ++-- app/assets/javascripts/diffs/store/actions.js | 2 ++ .../frontend/diffs/components/diff_file_spec.js | 17 +++++++++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/diffs/components/diff_file.vue b/app/assets/javascripts/diffs/components/diff_file.vue index a58178eaef7d2f..4c2cb83ffb3f51 100644 --- a/app/assets/javascripts/diffs/components/diff_file.vue +++ b/app/assets/javascripts/diffs/components/diff_file.vue @@ -250,11 +250,11 @@ export default { async postRender() { const eventsForThisFile = []; - if (this.isFirstFile) { + if (this.isFirstFile || this.viewDiffsFileByFile) { eventsForThisFile.push(EVT_PERF_MARK_FIRST_DIFF_FILE_SHOWN); } - if (this.isLastFile) { + if (this.isLastFile || this.viewDiffsFileByFile) { eventsForThisFile.push(EVT_PERF_MARK_DIFF_FILES_END); } diff --git a/app/assets/javascripts/diffs/store/actions.js b/app/assets/javascripts/diffs/store/actions.js index a70c907314ba7e..c6937c4f207d17 100644 --- a/app/assets/javascripts/diffs/store/actions.js +++ b/app/assets/javascripts/diffs/store/actions.js @@ -112,6 +112,8 @@ export const fetchFileByFile = async ({ state, getters, commit }) => { ? getters.flatBlobsList.find(({ fileHash }) => fileHash === id) : getters.flatBlobsList[0]; + eventHub.$emit(EVT_PERF_MARK_DIFF_FILES_START); + if (treeEntry && !treeEntry.diffLoaded && !getters.getDiffFileByHash(id)) { // Overloading "batch" loading indicators so the UI stays mostly the same commit(types.SET_BATCH_LOADING_STATE, 'loading'); diff --git a/spec/frontend/diffs/components/diff_file_spec.js b/spec/frontend/diffs/components/diff_file_spec.js index 79cd2508757204..8552e69012bc79 100644 --- a/spec/frontend/diffs/components/diff_file_spec.js +++ b/spec/frontend/diffs/components/diff_file_spec.js @@ -166,6 +166,23 @@ describe('DiffFile', () => { }); }, ); + + it('emits the "first file shown" and "files end" events when in File-by-File mode', async () => { + ({ wrapper, store } = createComponent({ + file: getReadableFile(), + first: false, + last: false, + props: { + viewDiffsFileByFile: true, + }, + })); + + await nextTick(); + + expect(eventHub.$emit).toHaveBeenCalledTimes(2); + expect(eventHub.$emit).toHaveBeenCalledWith(EVT_PERF_MARK_FIRST_DIFF_FILE_SHOWN); + expect(eventHub.$emit).toHaveBeenCalledWith(EVT_PERF_MARK_DIFF_FILES_END); + }); }); describe('after loading the diff', () => { -- GitLab