IssueDiscussionsRefactor: Do changes after data format change and fix dummy data.

This commit is contained in:
Fatih Acet 2017-06-28 23:53:46 +03:00
parent 44ccf2b114
commit d24e47a983
5 changed files with 43 additions and 34 deletions

View file

@ -7,23 +7,17 @@ import MarkdownField from '../../vue_shared/components/markdown/field.vue';
export default { export default {
props: {}, props: {},
data() { data() {
const { create_note_path, state } = window.gl.issueData;
const { currentUserData } = window.gl;
return { return {
note: '', note: '',
markdownPreviewUrl: '', markdownPreviewUrl: '',
markdownDocsUrl: '', markdownDocsUrl: '',
// FIXME: @fatihacet - Fix the mock data below.
noteType: 'comment', noteType: 'comment',
issueState: 'open', issueState: state,
endpoint: '/gitlab-org/gitlab-ce/notes', endpoint: create_note_path,
author: { author: currentUserData,
avatar_url: 'http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon',
id: 1,
name: 'Administrator',
path: '/root',
state: 'active',
username: 'root',
},
}; };
}, },
components: { components: {
@ -47,13 +41,12 @@ export default {
methods: { methods: {
handleSave() { handleSave() {
const data = { const data = {
endpoint: `${this.endpoint}?full_data=1`, endpoint: this.endpoint,
noteData: { noteData: {
target_type: 'issue', full_data: true,
target_id: '89',
note: { note: {
noteable_type: 'Issue', noteable_type: 'Issue',
noteable_id: 89, noteable_id: window.gl.issueData.id,
note: this.note, note: this.note,
} }
}, },
@ -64,12 +57,14 @@ export default {
} }
this.$store.dispatch('createNewNote', data) this.$store.dispatch('createNewNote', data)
.then(() => { .then((res) => {
if (res.errors) {
return this.handleError();
}
this.discard(); this.discard();
}) })
.catch(() => { .catch(this.handleError);
new Flash('Something went wrong while adding your comment. Please try again.'); // eslint-disable-line
});
}, },
discard() { discard() {
this.note = ''; this.note = '';
@ -78,6 +73,9 @@ export default {
setNoteType(type) { setNoteType(type) {
this.noteType = type; this.noteType = type;
}, },
handleError() {
new Flash('Something went wrong while adding your comment. Please try again.'); // eslint-disable-line
},
}, },
mounted() { mounted() {
const issuableDataEl = document.getElementById('js-issuable-app-initial-data'); const issuableDataEl = document.getElementById('js-issuable-app-initial-data');

View file

@ -19,7 +19,7 @@ export default {
return { return {
registerLink: '#', registerLink: '#',
signInLink: '#', signInLink: '#',
newNotePath: '', newNotePath: window.gl.issueData.create_note_path,
isReplying: false, isReplying: false,
}; };
}, },
@ -30,6 +30,9 @@ export default {
author() { author() {
return this.discussion.author; return this.discussion.author;
}, },
canReply() {
return window.gl.issueData.current_user.can_create_note;
},
}, },
components: { components: {
IssueNote, IssueNote,
@ -48,10 +51,6 @@ export default {
this.registerLink = registerLink.getAttribute('href'); this.registerLink = registerLink.getAttribute('href');
this.signInLink = signInLink.getAttribute('href'); this.signInLink = signInLink.getAttribute('href');
} }
// TODO: @fatihacet - Reimplement this when we have data for it.
// const newNotePath = document.querySelector('.js-main-target-form').getAttribute('action');
// this.newNotePath = `${newNotePath}?full_data=1`;
}, },
methods: { methods: {
toggleDiscussion() { toggleDiscussion() {
@ -73,6 +72,7 @@ export default {
target_type: 'issue', target_type: 'issue',
target_id: this.discussion.noteable_id, target_id: this.discussion.noteable_id,
note: { note }, note: { note },
full_data: true,
}, },
}; };
@ -130,7 +130,7 @@ export default {
<div class="flash-container"></div> <div class="flash-container"></div>
<div class="discussion-reply-holder"> <div class="discussion-reply-holder">
<button <button
v-if="note.can_reply && !isReplying" v-if="canReply && !isReplying"
@click="showReplyForm" @click="showReplyForm"
type="button" type="button"
class="btn btn-text-field" class="btn btn-text-field"
@ -141,7 +141,7 @@ export default {
:updateHandler="saveReply" :updateHandler="saveReply"
:cancelHandler="cancelReplyForm" /> :cancelHandler="cancelReplyForm" />
<div <div
v-if="!note.can_reply" v-if="!canReply"
class="disabled-comment text-center"> class="disabled-comment text-center">
Please Please
<a :href="registerLink">register</a> <a :href="registerLink">register</a>

View file

@ -104,8 +104,8 @@ export default {
<issue-note-actions <issue-note-actions
:accessLevel="note.human_access" :accessLevel="note.human_access"
:canAward="note.emoji_awardable" :canAward="note.emoji_awardable"
:canEdit="note.can_edit" :canEdit="note.current_user.can_edit"
:canDelete="note.can_edit" :canDelete="note.current_user.can_edit"
:reportAbusePath="note.report_abuse_path" :reportAbusePath="note.report_abuse_path"
:editHandler="editHandler" :editHandler="editHandler"
:deleteHandler="deleteHandler" /> :deleteHandler="deleteHandler" />

View file

@ -1,5 +1,5 @@
<script> <script>
import { glEmojiTag } from '~/behaviors/gl_emoji'; import * as Emoji from '../../emoji';
import emojiSmiling from 'icons/_emoji_slightly_smiling_face.svg'; import emojiSmiling from 'icons/_emoji_slightly_smiling_face.svg';
import emojiSmile from 'icons/_emoji_smile.svg'; import emojiSmile from 'icons/_emoji_smile.svg';
import emojiSmiley from 'icons/_emoji_smiley.svg'; import emojiSmiley from 'icons/_emoji_smiley.svg';
@ -66,7 +66,7 @@ export default {
}, },
methods: { methods: {
getAwardHTML(name) { getAwardHTML(name) {
return glEmojiTag(name); return Emoji.glEmojiTag(name);
}, },
getAwardClassBindings(awardList, awardName) { getAwardClassBindings(awardList, awardName) {
return { return {

View file

@ -53,8 +53,16 @@ const mutations = {
} }
}, },
addNewNote(storeState, note) { addNewNote(storeState, note) {
// TODO: @fatihacet - When we get the correct data from server update the store const { discussion_id, type } = note;
// storeState.notes.push(note); const noteData = {
expanded: true,
id: discussion_id,
individual_note: !(type === 'DiscussionNote'),
notes: [ note ],
reply_id: discussion_id,
};
storeState.notes.push(noteData);
}, },
}; };
@ -100,7 +108,10 @@ const actions = {
.createNewNote(endpoint, noteData) .createNewNote(endpoint, noteData)
.then(res => res.json()) .then(res => res.json())
.then((res) => { .then((res) => {
context.commit('addNewNote', res); if (!res.errors) {
context.commit('addNewNote', res);
}
return res;
}); });
}, },
}; };