summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/diffs/store/mutations.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/diffs/store/mutations.js')
-rw-r--r--app/assets/javascripts/diffs/store/mutations.js80
1 files changed, 41 insertions, 39 deletions
diff --git a/app/assets/javascripts/diffs/store/mutations.js b/app/assets/javascripts/diffs/store/mutations.js
index a4986e26966..8cfdded1f9b 100644
--- a/app/assets/javascripts/diffs/store/mutations.js
+++ b/app/assets/javascripts/diffs/store/mutations.js
@@ -45,26 +45,28 @@ export default {
},
[types.SET_DIFF_DATA](state, data) {
+ let files = state.diffFiles;
+
if (
- !(
- gon &&
- gon.features &&
- gon.features.diffsBatchLoad &&
- window.location.search.indexOf('diff_id') === -1
- )
+ !(gon?.features?.diffsBatchLoad && window.location.search.indexOf('diff_id') === -1) &&
+ data.diff_files
) {
- prepareDiffData(data);
+ files = prepareDiffData(data, files);
}
Object.assign(state, {
...convertObjectPropsToCamelCase(data),
+ diffFiles: files,
});
},
[types.SET_DIFF_DATA_BATCH](state, data) {
- prepareDiffData(data);
+ const files = prepareDiffData(data, state.diffFiles);
- state.diffFiles.push(...data.diff_files);
+ Object.assign(state, {
+ ...convertObjectPropsToCamelCase(data),
+ diffFiles: files,
+ });
},
[types.RENDER_FILE](state, file) {
@@ -88,11 +90,11 @@ export default {
if (!diffFile) return;
- if (diffFile.highlighted_diff_lines) {
+ if (diffFile.highlighted_diff_lines.length) {
diffFile.highlighted_diff_lines.find(l => l.line_code === lineCode).hasForm = hasForm;
}
- if (diffFile.parallel_diff_lines) {
+ if (diffFile.parallel_diff_lines.length) {
const line = diffFile.parallel_diff_lines.find(l => {
const { left, right } = l;
@@ -153,13 +155,13 @@ export default {
},
[types.EXPAND_ALL_FILES](state) {
- state.diffFiles = state.diffFiles.map(file => ({
- ...file,
- viewer: {
- ...file.viewer,
- collapsed: false,
- },
- }));
+ state.diffFiles.forEach(file => {
+ Object.assign(file, {
+ viewer: Object.assign(file.viewer, {
+ collapsed: false,
+ }),
+ });
+ });
},
[types.SET_LINE_DISCUSSIONS_FOR_FILE](state, { discussion, diffPositionByLineCode, hash }) {
@@ -197,29 +199,29 @@ export default {
};
};
- state.diffFiles = state.diffFiles.map(diffFile => {
- if (diffFile.file_hash === fileHash) {
- const file = { ...diffFile };
-
- if (file.highlighted_diff_lines) {
- file.highlighted_diff_lines = file.highlighted_diff_lines.map(line =>
- setDiscussionsExpanded(lineCheck(line) ? mapDiscussions(line) : line),
- );
+ state.diffFiles.forEach(file => {
+ if (file.file_hash === fileHash) {
+ if (file.highlighted_diff_lines.length) {
+ file.highlighted_diff_lines.forEach(line => {
+ Object.assign(
+ line,
+ setDiscussionsExpanded(lineCheck(line) ? mapDiscussions(line) : line),
+ );
+ });
}
- if (file.parallel_diff_lines) {
- file.parallel_diff_lines = file.parallel_diff_lines.map(line => {
+ if (file.parallel_diff_lines.length) {
+ file.parallel_diff_lines.forEach(line => {
const left = line.left && lineCheck(line.left);
const right = line.right && lineCheck(line.right);
if (left || right) {
- return {
- ...line,
+ Object.assign(line, {
left: line.left ? setDiscussionsExpanded(mapDiscussions(line.left)) : null,
right: line.right
? setDiscussionsExpanded(mapDiscussions(line.right, () => !left))
: null,
- };
+ });
}
return line;
@@ -227,15 +229,15 @@ export default {
}
if (!file.parallel_diff_lines || !file.highlighted_diff_lines) {
- file.discussions = (file.discussions || [])
+ const newDiscussions = (file.discussions || [])
.filter(d => d.id !== discussion.id)
.concat(discussion);
- }
- return file;
+ Object.assign(file, {
+ discussions: newDiscussions,
+ });
+ }
}
-
- return diffFile;
});
},
@@ -259,9 +261,9 @@ export default {
[types.TOGGLE_LINE_DISCUSSIONS](state, { fileHash, lineCode, expanded }) {
const selectedFile = state.diffFiles.find(f => f.file_hash === fileHash);
- updateLineInFile(selectedFile, lineCode, line =>
- Object.assign(line, { discussionsExpanded: expanded }),
- );
+ updateLineInFile(selectedFile, lineCode, line => {
+ Object.assign(line, { discussionsExpanded: expanded });
+ });
},
[types.TOGGLE_FOLDER_OPEN](state, path) {