Automatically expand collapsed file if clicked from the tree view
Problem to solve
When using the file tree view in the "Changes" tab of the MR page, clicking on a file that is collapsed does not expand it automatically. That makes it easy to miss that file.
Proposal
Expand collapsed files if clicked from the tree view.
Implementation guide
Add functionality to scrollToFile
(used when "Show one file at a time is disabled") and goToFile
(used when "Show one file at a time is enabled").
The following patch should be the right start and might even be everything that's required:
diff --git a/app/assets/javascripts/diffs/store/actions.js b/app/assets/javascripts/diffs/store/actions.js
index f0a2ca967cfd..8d50410dc9e9 100644
--- a/app/assets/javascripts/diffs/store/actions.js
+++ b/app/assets/javascripts/diffs/store/actions.js
@@ -685,6 +685,22 @@ export const goToFile = ({ state, commit, dispatch, getters }, { path }) => {
commit(types.SET_CURRENT_DIFF_FILE, fileHash);
+ // Expand the file content
+ const file = state.diffFiles.find((f) => f.file_hash === fileHash);
+ if (file) {
+ // Set both manual and automatic collapse to false to ensure the file expands
+ commit(types.SET_FILE_COLLAPSED, {
+ filePath: file.file_path,
+ collapsed: false,
+ trigger: DIFF_FILE_MANUAL_COLLAPSE
+ });
+
+ // If the file is automatically collapsed, load its content
+ if (file.viewer?.automaticallyCollapsed) {
+ notesEventHub.$emit(`loadCollapsedDiff/${fileHash}`);
+ }
+ }
+
const newUrl = new URL(window.location);
newUrl.hash = fileHash;
historyPushState(newUrl, { skipScrolling: true });
@@ -703,6 +719,11 @@ export const scrollToFile = ({ state, commit, getters }, { path }) => {
commit(types.SET_CURRENT_DIFF_FILE, fileHash);
+ const file = state.diffFiles.find((f) => f.file_hash === fileHash);
+ if (file) {
+ commit(types.SET_FILE_COLLAPSED, { filePath: file.file_path, collapsed: false });
+ }
+
if (getters.isVirtualScrollingEnabled) {
eventHub.$emit('scrollToFileHash', fileHash);
Edited by Marcel van Remmerden