diff options
author | Filipa Lacerda <filipa@gitlab.com> | 2018-07-05 12:05:57 +0000 |
---|---|---|
committer | Phil Hughes <me@iamphill.com> | 2018-07-05 12:05:57 +0000 |
commit | 49828db524ad1d1a5dfd954e9635e0bdaedea5df (patch) | |
tree | bf8304e1078b1bb1a8018f8179cbeb89aa518db4 /app/assets/javascripts/notes/components/diff_with_note.vue | |
parent | 8b0e2628099c34a9ac352b6a9a05605613c45a53 (diff) | |
download | gitlab-ce-49828db524ad1d1a5dfd954e9635e0bdaedea5df.tar.gz |
Improves performance on MR refactor and adds specs
Diffstat (limited to 'app/assets/javascripts/notes/components/diff_with_note.vue')
-rw-r--r-- | app/assets/javascripts/notes/components/diff_with_note.vue | 159 |
1 files changed, 82 insertions, 77 deletions
diff --git a/app/assets/javascripts/notes/components/diff_with_note.vue b/app/assets/javascripts/notes/components/diff_with_note.vue index d321f2ce15e..9c2908c477e 100644 --- a/app/assets/javascripts/notes/components/diff_with_note.vue +++ b/app/assets/javascripts/notes/components/diff_with_note.vue @@ -1,89 +1,94 @@ <script> -import { mapState, mapActions } from 'vuex'; -import imageDiffHelper from '~/image_diff/helpers/index'; -import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils'; -import DiffFileHeader from '~/diffs/components/diff_file_header.vue'; -import SkeletonLoadingContainer from '~/vue_shared/components/skeleton_loading_container.vue'; -import { trimFirstCharOfLineContent } from '~/diffs/store/utils'; + import { mapState, mapActions } from 'vuex'; + import imageDiffHelper from '~/image_diff/helpers/index'; + import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils'; + import DiffFileHeader from '~/diffs/components/diff_file_header.vue'; + import SkeletonLoadingContainer from '~/vue_shared/components/skeleton_loading_container.vue'; + import { trimFirstCharOfLineContent } from '~/diffs/store/utils'; -export default { - components: { - DiffFileHeader, - SkeletonLoadingContainer, - }, - props: { - discussion: { - type: Object, - required: true, + export default { + components: { + DiffFileHeader, + SkeletonLoadingContainer, }, - }, - data() { - return { - error: false, - }; - }, - computed: { - ...mapState({ - noteableData: state => state.notes.noteableData, - }), - hasTruncatedDiffLines() { - return this.discussion.truncatedDiffLines && this.discussion.truncatedDiffLines.length !== 0; + props: { + discussion: { + type: Object, + required: true, + }, }, - isDiscussionsExpanded() { - return true; // TODO: @fatihacet - Fix this. + data() { + return { + error: false, + }; }, - isCollapsed() { - return this.diffFile.collapsed || false; - }, - isImageDiff() { - return !this.diffFile.text; - }, - diffFileClass() { - const { text } = this.diffFile; - return text ? 'text-file' : 'js-image-file'; - }, - diffFile() { - return convertObjectPropsToCamelCase(this.discussion.diffFile, { deep: true }); - }, - imageDiffHtml() { - return this.discussion.imageDiffHtml; - }, - currentUser() { - return this.noteableData.current_user; - }, - userColorScheme() { - return window.gon.user_color_scheme; - }, - normalizedDiffLines() { - const lines = this.discussion.truncatedDiffLines || []; + computed: { + ...mapState({ + noteableData: state => state.notes.noteableData, + }), + hasTruncatedDiffLines() { + return this.discussion.truncatedDiffLines && + this.discussion.truncatedDiffLines.length !== 0; + }, + isDiscussionsExpanded() { + return true; // TODO: @fatihacet - Fix this. + }, + isCollapsed() { + return this.diffFile.collapsed || false; + }, + isImageDiff() { + return !this.diffFile.text; + }, + diffFileClass() { + const { text } = this.diffFile; + return text ? 'text-file' : 'js-image-file'; + }, + diffFile() { + return convertObjectPropsToCamelCase(this.discussion.diffFile, { deep: true }); + }, + imageDiffHtml() { + return this.discussion.imageDiffHtml; + }, + currentUser() { + return this.noteableData.current_user; + }, + userColorScheme() { + return window.gon.user_color_scheme; + }, + normalizedDiffLines() { + if (this.discussion.truncatedDiffLines) { + return this.discussion.truncatedDiffLines.map(line => + trimFirstCharOfLineContent(convertObjectPropsToCamelCase(line)), + ); + } - return lines.map(line => trimFirstCharOfLineContent(convertObjectPropsToCamelCase(line))); + return []; + }, }, - }, - mounted() { - if (this.isImageDiff) { - const canCreateNote = false; - const renderCommentBadge = true; - imageDiffHelper.initImageDiff(this.$refs.fileHolder, canCreateNote, renderCommentBadge); - } else if (!this.hasTruncatedDiffLines) { - this.fetchDiff(); - } - }, - methods: { - ...mapActions(['fetchDiscussionDiffLines']), - rowTag(html) { - return html.outerHTML ? 'tr' : 'template'; + mounted() { + if (this.isImageDiff) { + const canCreateNote = false; + const renderCommentBadge = true; + imageDiffHelper.initImageDiff(this.$refs.fileHolder, canCreateNote, renderCommentBadge); + } else if (!this.hasTruncatedDiffLines) { + this.fetchDiff(); + } }, - fetchDiff() { - this.error = false; - this.fetchDiscussionDiffLines(this.discussion) - .then(this.highlight) - .catch(() => { - this.error = true; - }); + methods: { + ...mapActions(['fetchDiscussionDiffLines']), + rowTag(html) { + return html.outerHTML ? 'tr' : 'template'; + }, + fetchDiff() { + this.error = false; + this.fetchDiscussionDiffLines(this.discussion) + .then(this.highlight) + .catch(() => { + this.error = true; + }); + }, }, - }, -}; + }; </script> <template> |