Fixes based on MR discussion around naming, mutations, handling of state
This commit is contained in:
parent
982da16bf2
commit
d4d5ed59f9
|
@ -40,7 +40,7 @@ export default {
|
||||||
:render-diff-file="false"
|
:render-diff-file="false"
|
||||||
:always-expanded="true"
|
:always-expanded="true"
|
||||||
:discussions-by-diff-order="true"
|
:discussions-by-diff-order="true"
|
||||||
@handleNoteDelete="deleteNoteHandler"
|
@noteDeleted="deleteNoteHandler"
|
||||||
/>
|
/>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -49,7 +49,8 @@ export default {
|
||||||
!this.isCollapsed &&
|
!this.isCollapsed &&
|
||||||
!this.file.highlightedDiffLines &&
|
!this.file.highlightedDiffLines &&
|
||||||
!this.isLoadingCollapsedDiff &&
|
!this.isLoadingCollapsedDiff &&
|
||||||
!this.file.tooLarge
|
!this.file.tooLarge &&
|
||||||
|
this.file.text
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
showLoadingIcon() {
|
showLoadingIcon() {
|
||||||
|
@ -76,7 +77,6 @@ export default {
|
||||||
this.file.collapsed = false;
|
this.file.collapsed = false;
|
||||||
this.file.renderIt = true;
|
this.file.renderIt = true;
|
||||||
})
|
})
|
||||||
.then(() => this.$nextTick())
|
|
||||||
.then(() => {
|
.then(() => {
|
||||||
requestIdleCallback(
|
requestIdleCallback(
|
||||||
() => {
|
() => {
|
||||||
|
@ -149,7 +149,7 @@ export default {
|
||||||
class="diff-content loading"
|
class="diff-content loading"
|
||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
v-if="showExpandMessage"
|
v-else-if="showExpandMessage"
|
||||||
class="nothing-here-block diff-collapsed"
|
class="nothing-here-block diff-collapsed"
|
||||||
>
|
>
|
||||||
{{ __('This diff is collapsed.') }}
|
{{ __('This diff is collapsed.') }}
|
||||||
|
|
|
@ -73,7 +73,7 @@ export default {
|
||||||
}),
|
}),
|
||||||
...mapGetters(['isLoggedIn']),
|
...mapGetters(['isLoggedIn']),
|
||||||
lineHref() {
|
lineHref() {
|
||||||
return this.line && this.line.lineCode ? `#${this.line.lineCode}` : '#';
|
return `#${this.line.lineCode || ''}`;
|
||||||
},
|
},
|
||||||
shouldShowCommentButton() {
|
shouldShowCommentButton() {
|
||||||
return (
|
return (
|
||||||
|
@ -87,10 +87,10 @@ export default {
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
hasDiscussions() {
|
hasDiscussions() {
|
||||||
return this.line && this.line.discussions && this.line.discussions.length > 0;
|
return this.line.discussions && this.line.discussions.length > 0;
|
||||||
},
|
},
|
||||||
shouldShowAvatarsOnGutter() {
|
shouldShowAvatarsOnGutter() {
|
||||||
if (this.line && !this.line.type && this.linePosition === LINE_POSITION_RIGHT) {
|
if (!this.line.type && this.linePosition === LINE_POSITION_RIGHT) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return this.showCommentButton && this.hasDiscussions;
|
return this.showCommentButton && this.hasDiscussions;
|
||||||
|
|
|
@ -6,7 +6,7 @@ import noteForm from '../../notes/components/note_form.vue';
|
||||||
import { getNoteFormData } from '../store/utils';
|
import { getNoteFormData } from '../store/utils';
|
||||||
import autosave from '../../notes/mixins/autosave';
|
import autosave from '../../notes/mixins/autosave';
|
||||||
import { DIFF_NOTE_TYPE } from '../constants';
|
import { DIFF_NOTE_TYPE } from '../constants';
|
||||||
import * as utils from '../../notes/stores/utils';
|
import { reduceDiscussionsToLineCodes } from '../../notes/stores/utils';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
|
@ -90,7 +90,7 @@ export default {
|
||||||
|
|
||||||
this.refetchDiscussionById({ path: endpoint, discussionId: result.discussion_id })
|
this.refetchDiscussionById({ path: endpoint, discussionId: result.discussion_id })
|
||||||
.then(selectedDiscussion => {
|
.then(selectedDiscussion => {
|
||||||
const lineCodeDiscussions = utils.reduceDiscussionsToLineCodes([selectedDiscussion]);
|
const lineCodeDiscussions = reduceDiscussionsToLineCodes([selectedDiscussion]);
|
||||||
this.assignDiscussionsToDiff(lineCodeDiscussions);
|
this.assignDiscussionsToDiff(lineCodeDiscussions);
|
||||||
|
|
||||||
this.handleCancelCommentForm();
|
this.handleCancelCommentForm();
|
||||||
|
|
|
@ -29,6 +29,8 @@ export const fetchDiffFiles = ({ state, commit }) => {
|
||||||
.then(handleLocationHash);
|
.then(handleLocationHash);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// This is adding line discussions to the actual lines in the diff tree
|
||||||
|
// once for parallel and once for inline mode
|
||||||
export const assignDiscussionsToDiff = ({ state, commit }, allLineDiscussions) => {
|
export const assignDiscussionsToDiff = ({ state, commit }, allLineDiscussions) => {
|
||||||
Object.values(allLineDiscussions).forEach(discussions => {
|
Object.values(allLineDiscussions).forEach(discussions => {
|
||||||
if (discussions.length > 0) {
|
if (discussions.length > 0) {
|
||||||
|
@ -74,12 +76,10 @@ export const removeDiscussionsFromDiff = ({ state, commit }, removeDiscussion) =
|
||||||
);
|
);
|
||||||
|
|
||||||
if (targetLine) {
|
if (targetLine) {
|
||||||
if (targetLine) {
|
if (targetLine.left && targetLine.left.lineCode === removeDiscussion.line_code) {
|
||||||
if (targetLine.left && targetLine.left.lineCode === removeDiscussion.line_code) {
|
commit(types.REMOVE_LINE_DISCUSSIONS, targetLine.left);
|
||||||
commit(types.REMOVE_LINE_DISCUSSIONS, targetLine.left);
|
} else {
|
||||||
} else {
|
commit(types.REMOVE_LINE_DISCUSSIONS, targetLine.right);
|
||||||
commit(types.REMOVE_LINE_DISCUSSIONS, targetLine.right);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -117,11 +117,7 @@ export const startRenderDiffsQueue = ({ state, commit }) => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return new Promise(resolve => {
|
return checkItem();
|
||||||
checkItem()
|
|
||||||
.then(resolve)
|
|
||||||
.catch(() => {});
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export const setInlineDiffViewType = ({ commit }) => {
|
export const setInlineDiffViewType = ({ commit }) => {
|
||||||
|
|
|
@ -8,7 +8,6 @@ const defaultViewType = INLINE_DIFF_VIEW_TYPE;
|
||||||
|
|
||||||
export default () => ({
|
export default () => ({
|
||||||
isLoading: true,
|
isLoading: true,
|
||||||
loadingMessage: '',
|
|
||||||
endpoint: '',
|
endpoint: '',
|
||||||
basePath: '',
|
basePath: '',
|
||||||
commit: null,
|
commit: null,
|
||||||
|
|
|
@ -73,7 +73,8 @@ export default {
|
||||||
const normalizedData = convertObjectPropsToCamelCase(data, { deep: true });
|
const normalizedData = convertObjectPropsToCamelCase(data, { deep: true });
|
||||||
prepareDiffData(normalizedData);
|
prepareDiffData(normalizedData);
|
||||||
const [newFileData] = normalizedData.diffFiles.filter(f => f.fileHash === file.fileHash);
|
const [newFileData] = normalizedData.diffFiles.filter(f => f.fileHash === file.fileHash);
|
||||||
Object.assign(file, { ...newFileData });
|
const selectedFile = state.diffFiles.find(f => f.fileHash === file.fileHash);
|
||||||
|
Object.assign(selectedFile, { ...newFileData });
|
||||||
},
|
},
|
||||||
|
|
||||||
[types.EXPAND_ALL_FILES](state) {
|
[types.EXPAND_ALL_FILES](state) {
|
||||||
|
|
|
@ -181,6 +181,8 @@ export function trimFirstCharOfLineContent(line = {}) {
|
||||||
return parsedLine;
|
return parsedLine;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This prepares and optimizes the incoming diff data from the server
|
||||||
|
// by setting up incremental rendering and removing unneeded data
|
||||||
export function prepareDiffData(diffData) {
|
export function prepareDiffData(diffData) {
|
||||||
const filesLength = diffData.diffFiles.length;
|
const filesLength = diffData.diffFiles.length;
|
||||||
let showingLines = 0;
|
let showingLines = 0;
|
||||||
|
|
|
@ -266,7 +266,7 @@ Please check your network connection and try again.`;
|
||||||
this.jumpToDiscussion(nextId);
|
this.jumpToDiscussion(nextId);
|
||||||
},
|
},
|
||||||
deleteNoteHandler(note) {
|
deleteNoteHandler(note) {
|
||||||
this.$emit('handleNoteDelete', this.discussion, note);
|
this.$emit('noteDeleted', this.discussion, note);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -31,7 +31,7 @@ export const reduceDiscussionsToLineCodes = selectedDiscussions =>
|
||||||
// For context about line notes: there might be multiple notes with the same line code
|
// For context about line notes: there might be multiple notes with the same line code
|
||||||
const items = acc[note.line_code] || [];
|
const items = acc[note.line_code] || [];
|
||||||
if (note.diff_file) {
|
if (note.diff_file) {
|
||||||
Object.assign(note, { fileHash: note.diff_file.file_hash });
|
// Object.assign(note, { fileHash: note.diff_file.file_hash });
|
||||||
}
|
}
|
||||||
|
|
||||||
items.push(note);
|
items.push(note);
|
||||||
|
|
|
@ -51,6 +51,7 @@ describe('DiffFile', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should have collapsed text and link', done => {
|
it('should have collapsed text and link', done => {
|
||||||
|
vm.file.renderIt = true;
|
||||||
vm.file.collapsed = false;
|
vm.file.collapsed = false;
|
||||||
vm.file.highlightedDiffLines = null;
|
vm.file.highlightedDiffLines = null;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue