Commit a32f291a authored by Fatih Acet's avatar Fatih Acet

IssueNotesRefactor: Separate mounted blocks to methods.

parent 7edc1bc3
...@@ -253,7 +253,7 @@ class AwardsHandler { ...@@ -253,7 +253,7 @@ class AwardsHandler {
}); });
$('.emoji-menu').removeClass('is-visible'); $('.emoji-menu').removeClass('is-visible');
$('.js-add-award.is-active').removeClass('is-active'); return $('.js-add-award.is-active').removeClass('is-active');
} }
addAwardToEmojiBar(votesBlock, emoji, checkForMutuality) { addAwardToEmojiBar(votesBlock, emoji, checkForMutuality) {
......
...@@ -44,6 +44,48 @@ export default { ...@@ -44,6 +44,48 @@ export default {
componentData(note) { componentData(note) {
return note.individual_note ? note.notes[0] : note; return note.individual_note ? note.notes[0] : note;
}, },
fetchNotes() {
const { discussionsPath } = this.$el.parentNode.dataset;
this.$store.dispatch('fetchNotes', discussionsPath)
.then(() => {
this.isLoading = false;
// Scroll to note if we have hash fragment in the page URL
Vue.nextTick(() => {
this.checkLocationHash();
});
})
.catch(() => {
new Flash('Something went wrong while fetching issue comments. Please try again.'); // eslint-disable-line
});
},
initPolling() {
const { notesPath, lastFetchedAt } = this.$el.parentNode.dataset;
const options = {
endpoint: `${notesPath}?full_data=1`,
lastFetchedAt,
};
// FIXME: @fatihacet Implement real polling mechanism
setInterval(() => {
this.$store.dispatch('poll', options)
.then((res) => {
options.lastFetchedAt = res.last_fetched_at;
})
.catch(() => {
new Flash('Something went wrong while fetching latest comments.'); // eslint-disable-line
});
}, 15000);
},
bindEventHubListeners() {
eventHub.$on('toggleAward', (data) => {
const { awardName, noteId } = data;
const endpoint = this.notesById[noteId].toggle_award_path;
this.$store.dispatch('toggleAward', { endpoint, awardName, noteId });
});
},
checkLocationHash() { checkLocationHash() {
const hash = gl.utils.getLocationHash(); const hash = gl.utils.getLocationHash();
const $el = $(`#${hash}`); const $el = $(`#${hash}`);
...@@ -59,43 +101,9 @@ export default { ...@@ -59,43 +101,9 @@ export default {
}, },
}, },
mounted() { mounted() {
const { discussionsPath, notesPath, lastFetchedAt } = this.$el.parentNode.dataset; this.fetchNotes();
this.initPolling();
this.$store.dispatch('fetchNotes', discussionsPath) this.bindEventHubListeners();
.then(() => {
this.isLoading = false;
// Scroll to note if we have hash fragment in the page URL
Vue.nextTick(() => {
this.checkLocationHash();
});
})
.catch(() => {
new Flash('Something went wrong while fetching issue comments. Please try again.'); // eslint-disable-line
});
const options = {
endpoint: `${notesPath}?full_data=1`,
lastFetchedAt,
};
// FIXME: @fatihacet Implement real polling mechanism
setInterval(() => {
this.$store.dispatch('poll', options)
.then((res) => {
options.lastFetchedAt = res.last_fetched_at;
})
.catch(() => {
new Flash('Something went wrong while fetching latest comments.'); // eslint-disable-line
});
}, 6000);
eventHub.$on('toggleAward', (data) => {
const { awardName, noteId } = data;
const endpoint = this.notesById[noteId].toggle_award_path;
this.$store.dispatch('toggleAward', { endpoint, awardName, noteId });
});
}, },
}; };
</script> </script>
......
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