gitlab-org--gitlab-foss/app/assets/javascripts/diff_notes/components/resolve_btn.js.es6
2016-07-26 13:44:51 +01:00

68 lines
1.6 KiB
JavaScript

((w) => {
w.ResolveBtn = Vue.extend({
mixins: [
ButtonMixins
],
props: {
noteId: Number,
discussionId: String,
resolved: Boolean,
namespacePath: String,
projectPath: String,
},
data: function () {
return {
comments: CommentsStore.state,
loading: false
};
},
computed: {
buttonText: function () {
if (this.isResolved) {
return "Mark as unresolved";
} else {
return "Mark as resolved";
}
},
isResolved: function () { return CommentsStore.get(this.discussionId, this.noteId); },
},
methods: {
updateTooltip: function () {
$(this.$els.button)
.tooltip('hide')
.tooltip('fixTitle');
},
resolve: function () {
let promise;
this.loading = true;
if (this.isResolved) {
promise = ResolveService
.unresolve(this.namespace, this.noteId);
} else {
promise = ResolveService
.resolve(this.namespace, this.noteId);
}
promise.then((response) => {
this.loading = false;
if (response.status === 200) {
CommentsStore.update(this.discussionId, this.noteId, !this.isResolved);
}
this.$nextTick(this.updateTooltip);
});
}
},
compiled: function () {
$(this.$els.button).tooltip();
},
destroyed: function () {
CommentsStore.delete(this.discussionId, this.noteId)
},
created: function () {
CommentsStore.create(this.discussionId, this.noteId, this.resolved)
}
});
}(window));