Commit 44d0cb49 authored by Donald Cook's avatar Donald Cook

Allow multiple descriptionVersions

Also updated naming
parent c719bfb5
...@@ -515,7 +515,7 @@ export const removeConvertedDiscussion = ({ commit }, noteId) => ...@@ -515,7 +515,7 @@ export const removeConvertedDiscussion = ({ commit }, noteId) =>
export const setCurrentDiscussionId = ({ commit }, discussionId) => export const setCurrentDiscussionId = ({ commit }, discussionId) =>
commit(types.SET_CURRENT_DISCUSSION_ID, discussionId); commit(types.SET_CURRENT_DISCUSSION_ID, discussionId);
export const fetchDescriptionVersion = ({ dispatch }, { endpoint, startingVersion }) => { export const fetchDescriptionVersion = ({ dispatch }, { endpoint, startingVersion, versionId }) => {
let requestUrl = endpoint; let requestUrl = endpoint;
if (startingVersion) { if (startingVersion) {
...@@ -526,7 +526,7 @@ export const fetchDescriptionVersion = ({ dispatch }, { endpoint, startingVersio ...@@ -526,7 +526,7 @@ export const fetchDescriptionVersion = ({ dispatch }, { endpoint, startingVersio
return axios return axios
.get(requestUrl) .get(requestUrl)
.then(res => { .then(res => {
dispatch('receiveDescriptionVersion', res.data); dispatch('receiveDescriptionVersion', { descriptionVersion: res.data, versionId });
}) })
.catch(error => { .catch(error => {
dispatch('receiveDescriptionVersionError', error); dispatch('receiveDescriptionVersionError', error);
......
...@@ -28,7 +28,7 @@ export const getUserData = state => state.userData || {}; ...@@ -28,7 +28,7 @@ export const getUserData = state => state.userData || {};
export const getUserDataByProp = state => prop => state.userData && state.userData[prop]; export const getUserDataByProp = state => prop => state.userData && state.userData[prop];
export const descriptionVersion = state => state.descriptionVersion; export const descriptionVersions = state => state.descriptionVersions;
export const notesById = state => export const notesById = state =>
state.discussions.reduce((acc, note) => { state.discussions.reduce((acc, note) => {
......
...@@ -28,7 +28,7 @@ export default () => ({ ...@@ -28,7 +28,7 @@ export default () => ({
commentsDisabled: false, commentsDisabled: false,
resolvableDiscussionsCount: 0, resolvableDiscussionsCount: 0,
unresolvedDiscussionsCount: 0, unresolvedDiscussionsCount: 0,
descriptionVersion: null, descriptionVersions: {},
}, },
actions, actions,
getters, getters,
......
...@@ -288,9 +288,9 @@ export default { ...@@ -288,9 +288,9 @@ export default {
[types.REQUEST_DESCRIPTION_VERSION](state) { [types.REQUEST_DESCRIPTION_VERSION](state) {
state.isLoadingDescriptionVersion = true; state.isLoadingDescriptionVersion = true;
}, },
[types.RECEIVE_DESCRIPTION_VERSION](state, descriptionVersion) { [types.RECEIVE_DESCRIPTION_VERSION](state, { descriptionVersion, versionId }) {
state.isLoadingDescriptionVersion = false; const descriptionVersions = { ...state.descriptionVersions, [versionId]: descriptionVersion };
state.descriptionVersion = descriptionVersion; Object.assign(state, { descriptionVersions, isLoadingDescriptionVersion: false });
}, },
[types.RECEIVE_DESCRIPTION_VERSION_ERROR](state) { [types.RECEIVE_DESCRIPTION_VERSION_ERROR](state) {
state.isLoadingDescriptionVersion = false; state.isLoadingDescriptionVersion = false;
......
...@@ -54,7 +54,7 @@ export default { ...@@ -54,7 +54,7 @@ export default {
}; };
}, },
computed: { computed: {
...mapGetters(['targetNoteHash', 'descriptionVersion']), ...mapGetters(['targetNoteHash', 'descriptionVersions']),
...mapState(['isLoadingDescriptionVersion']), ...mapState(['isLoadingDescriptionVersion']),
noteAnchorId() { noteAnchorId() {
return `note_${this.note.id}`; return `note_${this.note.id}`;
...@@ -81,6 +81,9 @@ export default { ...@@ -81,6 +81,9 @@ export default {
.children().length > MAX_VISIBLE_COMMIT_LIST_COUNT .children().length > MAX_VISIBLE_COMMIT_LIST_COUNT
); );
}, },
descriptionVersion() {
return this.descriptionVersions[this.note.description_version_id];
},
}, },
mounted() { mounted() {
initMRPopovers(this.$el.querySelectorAll('.gfm-merge_request')); initMRPopovers(this.$el.querySelectorAll('.gfm-merge_request'));
...@@ -104,7 +107,11 @@ export default { ...@@ -104,7 +107,11 @@ export default {
<span v-html="actionTextHtml"></span> <span v-html="actionTextHtml"></span>
<template v-if="canSeeDescriptionVersion" slot="extra-controls"> <template v-if="canSeeDescriptionVersion" slot="extra-controls">
&middot; &middot;
<button type="button" class="btn-blank btn-link" @click="toggleDescriptionVersion"> <button
type="button"
class="btn-blank btn-link"
@click="toggleDescriptionVersion(note.description_version_id)"
>
{{ __('Compare with previous version') }} {{ __('Compare with previous version') }}
<icon :name="descriptionVersionToggleIcon" :size="12" class="append-left-5" /> <icon :name="descriptionVersionToggleIcon" :size="12" class="append-left-5" />
</button> </button>
......
...@@ -25,15 +25,16 @@ export default { ...@@ -25,15 +25,16 @@ export default {
methods: { methods: {
toggleDescriptionVersion() { toggleDescriptionVersion() {
this.isDescriptionVersionExpanded = !this.isDescriptionVersionExpanded; this.isDescriptionVersionExpanded = !this.isDescriptionVersionExpanded;
const versionId = this.note.description_version_id;
if (this.descriptionVersion) { if (this.descriptionVersions?.[versionId]) {
return false; return false;
} }
const endpoint = this.note.description_diff_path; const endpoint = this.note.description_diff_path;
const startingVersion = this.note.start_description_version_id; const startingVersion = this.note.start_description_version_id;
return this.fetchDescriptionVersion({ endpoint, startingVersion }); return this.fetchDescriptionVersion({ endpoint, startingVersion, versionId });
}, },
deleteDescriptionVersion() { deleteDescriptionVersion() {
const endpoint = this.note.delete_description_version_path; const endpoint = this.note.delete_description_version_path;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment