CE backport of batch-comments-ee-store-module
This commit is contained in:
parent
86054032b9
commit
294f0f3991
|
@ -1,5 +1,6 @@
|
|||
<script>
|
||||
import { mapGetters } from 'vuex';
|
||||
import draftCommentsMixin from 'ee_else_ce/diffs/mixins/draft_comments';
|
||||
import inlineDiffTableRow from './inline_diff_table_row.vue';
|
||||
import inlineDiffCommentRow from './inline_diff_comment_row.vue';
|
||||
|
||||
|
@ -7,7 +8,10 @@ export default {
|
|||
components: {
|
||||
inlineDiffCommentRow,
|
||||
inlineDiffTableRow,
|
||||
InlineDraftCommentRow: () =>
|
||||
import('ee_component/batch_comments/components/inline_draft_comment_row.vue'),
|
||||
},
|
||||
mixins: [draftCommentsMixin],
|
||||
props: {
|
||||
diffFile: {
|
||||
type: Object,
|
||||
|
@ -54,6 +58,11 @@ export default {
|
|||
:line="line"
|
||||
:help-page-path="helpPagePath"
|
||||
/>
|
||||
<inline-draft-comment-row
|
||||
v-if="shouldRenderDraftRow(diffFile.file_hash, line)"
|
||||
:key="`draft_${index}`"
|
||||
:draft="draftForLine(diffFile.file_hash, line)"
|
||||
/>
|
||||
</template>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
export default {
|
||||
computed: {
|
||||
shouldRenderDraftRow: () => () => false,
|
||||
draftForLine: () => () => ({}),
|
||||
},
|
||||
};
|
|
@ -1,11 +1,9 @@
|
|||
import $ from 'jquery';
|
||||
import Vue from 'vue';
|
||||
import { mapActions, mapState, mapGetters } from 'vuex';
|
||||
import store from 'ee_else_ce/mr_notes/stores';
|
||||
import initNotesApp from './init_notes';
|
||||
import initDiffsApp from '../diffs';
|
||||
import notesApp from '../notes/components/notes_app.vue';
|
||||
import discussionCounter from '../notes/components/discussion_counter.vue';
|
||||
import initDiscussionFilters from '../notes/discussion_filters';
|
||||
import store from './stores';
|
||||
import MergeRequest from '../merge_request';
|
||||
import { resetServiceWorkersPublicPath } from '../lib/utils/webpack';
|
||||
|
||||
|
@ -18,68 +16,7 @@ export default function initMrNotes() {
|
|||
action: mrShowNode.dataset.mrAction,
|
||||
});
|
||||
|
||||
// eslint-disable-next-line no-new
|
||||
new Vue({
|
||||
el: '#js-vue-mr-discussions',
|
||||
name: 'MergeRequestDiscussions',
|
||||
components: {
|
||||
notesApp,
|
||||
},
|
||||
store,
|
||||
data() {
|
||||
const notesDataset = document.getElementById('js-vue-mr-discussions').dataset;
|
||||
const noteableData = JSON.parse(notesDataset.noteableData);
|
||||
noteableData.noteableType = notesDataset.noteableType;
|
||||
noteableData.targetType = notesDataset.targetType;
|
||||
|
||||
return {
|
||||
noteableData,
|
||||
currentUserData: JSON.parse(notesDataset.currentUserData),
|
||||
notesData: JSON.parse(notesDataset.notesData),
|
||||
helpPagePath: notesDataset.helpPagePath,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['discussionTabCounter']),
|
||||
...mapState({
|
||||
activeTab: state => state.page.activeTab,
|
||||
}),
|
||||
},
|
||||
watch: {
|
||||
discussionTabCounter() {
|
||||
this.updateDiscussionTabCounter();
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.setActiveTab(window.mrTabs.getCurrentAction());
|
||||
},
|
||||
mounted() {
|
||||
this.notesCountBadge = $('.issuable-details').find('.notes-tab .badge');
|
||||
$(document).on('visibilitychange', this.updateDiscussionTabCounter);
|
||||
window.mrTabs.eventHub.$on('MergeRequestTabChange', this.setActiveTab);
|
||||
},
|
||||
beforeDestroy() {
|
||||
$(document).off('visibilitychange', this.updateDiscussionTabCounter);
|
||||
window.mrTabs.eventHub.$off('MergeRequestTabChange', this.setActiveTab);
|
||||
},
|
||||
methods: {
|
||||
...mapActions(['setActiveTab']),
|
||||
updateDiscussionTabCounter() {
|
||||
this.notesCountBadge.text(this.discussionTabCounter);
|
||||
},
|
||||
},
|
||||
render(createElement) {
|
||||
return createElement('notes-app', {
|
||||
props: {
|
||||
noteableData: this.noteableData,
|
||||
notesData: this.notesData,
|
||||
userData: this.currentUserData,
|
||||
shouldShow: this.activeTab === 'show',
|
||||
helpPagePath: this.helpPagePath,
|
||||
},
|
||||
});
|
||||
},
|
||||
});
|
||||
initNotesApp();
|
||||
|
||||
// eslint-disable-next-line no-new
|
||||
new Vue({
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
import $ from 'jquery';
|
||||
import Vue from 'vue';
|
||||
import { mapActions, mapState, mapGetters } from 'vuex';
|
||||
import store from 'ee_else_ce/mr_notes/stores';
|
||||
import notesApp from '../notes/components/notes_app.vue';
|
||||
|
||||
export default () => {
|
||||
// eslint-disable-next-line no-new
|
||||
new Vue({
|
||||
el: '#js-vue-mr-discussions',
|
||||
name: 'MergeRequestDiscussions',
|
||||
components: {
|
||||
notesApp,
|
||||
},
|
||||
store,
|
||||
data() {
|
||||
const notesDataset = document.getElementById('js-vue-mr-discussions').dataset;
|
||||
const noteableData = JSON.parse(notesDataset.noteableData);
|
||||
noteableData.noteableType = notesDataset.noteableType;
|
||||
noteableData.targetType = notesDataset.targetType;
|
||||
|
||||
return {
|
||||
noteableData,
|
||||
currentUserData: JSON.parse(notesDataset.currentUserData),
|
||||
notesData: JSON.parse(notesDataset.notesData),
|
||||
helpPagePath: notesDataset.helpPagePath,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['discussionTabCounter']),
|
||||
...mapState({
|
||||
activeTab: state => state.page.activeTab,
|
||||
}),
|
||||
},
|
||||
watch: {
|
||||
discussionTabCounter() {
|
||||
this.updateDiscussionTabCounter();
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.setActiveTab(window.mrTabs.getCurrentAction());
|
||||
},
|
||||
mounted() {
|
||||
this.notesCountBadge = $('.issuable-details').find('.notes-tab .badge');
|
||||
$(document).on('visibilitychange', this.updateDiscussionTabCounter);
|
||||
window.mrTabs.eventHub.$on('MergeRequestTabChange', this.setActiveTab);
|
||||
},
|
||||
beforeDestroy() {
|
||||
$(document).off('visibilitychange', this.updateDiscussionTabCounter);
|
||||
window.mrTabs.eventHub.$off('MergeRequestTabChange', this.setActiveTab);
|
||||
},
|
||||
methods: {
|
||||
...mapActions(['setActiveTab']),
|
||||
updateDiscussionTabCounter() {
|
||||
this.notesCountBadge.text(this.discussionTabCounter);
|
||||
},
|
||||
},
|
||||
render(createElement) {
|
||||
return createElement('notes-app', {
|
||||
props: {
|
||||
noteableData: this.noteableData,
|
||||
notesData: this.notesData,
|
||||
userData: this.currentUserData,
|
||||
shouldShow: this.activeTab === 'show',
|
||||
helpPagePath: this.helpPagePath,
|
||||
},
|
||||
});
|
||||
},
|
||||
});
|
||||
};
|
|
@ -1,6 +1,6 @@
|
|||
import Vue from 'vue';
|
||||
import DiffContentComponent from '~/diffs/components/diff_content.vue';
|
||||
import { createStore } from '~/mr_notes/stores';
|
||||
import { createStore } from 'ee_else_ce/mr_notes/stores';
|
||||
import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
|
||||
import { GREEN_BOX_IMAGE_URL, RED_BOX_IMAGE_URL } from 'spec/test_constants';
|
||||
import '~/behaviors/markdown/render_gfm';
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import Vue from 'vue';
|
||||
import DiffFileComponent from '~/diffs/components/diff_file.vue';
|
||||
import { diffViewerModes, diffViewerErrors } from '~/ide/constants';
|
||||
import store from '~/mr_notes/stores';
|
||||
import store from 'ee_else_ce/mr_notes/stores';
|
||||
import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
|
||||
import diffFileMockData from '../mock_data/diff_file';
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import Vue from 'vue';
|
||||
import '~/behaviors/markdown/render_gfm';
|
||||
import InlineDiffView from '~/diffs/components/inline_diff_view.vue';
|
||||
import store from '~/mr_notes/stores';
|
||||
import store from 'ee_else_ce/mr_notes/stores';
|
||||
import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
|
||||
import diffFileMockData from '../mock_data/diff_file';
|
||||
import discussionsMockData from '../mock_data/diff_discussions';
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import Vue from 'vue';
|
||||
import ParallelDiffView from '~/diffs/components/parallel_diff_view.vue';
|
||||
import store from '~/mr_notes/stores';
|
||||
import store from 'ee_else_ce/mr_notes/stores';
|
||||
import * as constants from '~/diffs/constants';
|
||||
import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
|
||||
import diffFileMockData from '../mock_data/diff_file';
|
||||
|
@ -18,6 +18,10 @@ describe('ParallelDiffView', () => {
|
|||
}).$mount();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
component.$destroy();
|
||||
});
|
||||
|
||||
describe('assigned', () => {
|
||||
describe('diffLines', () => {
|
||||
it('should normalize lines for empty cells', () => {
|
||||
|
|
Loading…
Reference in New Issue