From a620d15a9fc794e4e45063f9f603030e6155599f Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Wed, 8 Mar 2023 01:20:00 -0700 Subject: [PATCH] Add a getter to check whether a file has already been loaded --- app/assets/javascripts/diffs/store/getters.js | 6 ++++++ spec/frontend/diffs/store/getters_spec.js | 13 +++++++++++++ 2 files changed, 19 insertions(+) diff --git a/app/assets/javascripts/diffs/store/getters.js b/app/assets/javascripts/diffs/store/getters.js index f530c05ae1e1a3..10a6a872fe4945 100644 --- a/app/assets/javascripts/diffs/store/getters.js +++ b/app/assets/javascripts/diffs/store/getters.js @@ -90,6 +90,12 @@ export const getDiffFileDiscussions = (state, getters, rootState, rootGetters) = export const getDiffFileByHash = (state) => (fileHash) => state.diffFiles.find((file) => file.file_hash === fileHash); +export function isTreePathLoaded(state) { + return (path) => { + return Boolean(state.treeEntries[path]?.diffLoaded); + }; +} + export const flatBlobsList = (state) => Object.values(state.treeEntries).filter((f) => f.type === 'blob'); diff --git a/spec/frontend/diffs/store/getters_spec.js b/spec/frontend/diffs/store/getters_spec.js index 70e0689786a9cd..ed7b6699e2c3a7 100644 --- a/spec/frontend/diffs/store/getters_spec.js +++ b/spec/frontend/diffs/store/getters_spec.js @@ -288,6 +288,19 @@ describe('Diffs Module Getters', () => { }); }); + describe('isTreePathLoaded', () => { + it.each` + desc | loaded | path | bool + ${'the file exists and has been loaded'} | ${true} | ${'path/tofile'} | ${true} + ${'the file exists and has not been loaded'} | ${false} | ${'path/tofile'} | ${false} + ${'the file does not exist'} | ${false} | ${'tofile/path'} | ${false} + `('returns $bool when $desc', ({ loaded, path, bool }) => { + localState.treeEntries['path/tofile'] = { diffLoaded: loaded }; + + expect(getters.isTreePathLoaded(localState)(path)).toBe(bool); + }); + }); + describe('allBlobs', () => { it('returns an array of blobs', () => { localState.treeEntries = { -- GitLab