diff --git a/app/assets/javascripts/diffs/store/getters.js b/app/assets/javascripts/diffs/store/getters.js index f530c05ae1e1a3d2f4a9c262379154cccdde25b0..10a6a872fe49459aa498100964ee67f38f84b99b 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 70e0689786a9cd661f4c6cd576868e09573aa849..ed7b6699e2c3a773ca7d4b608db6ab531b1665d3 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 = {