61 lines
1.4 KiB
JavaScript
61 lines
1.4 KiB
JavaScript
/* eslint-disable object-shorthand, func-names, space-before-function-paren, comma-dangle, no-else-return, quotes, max-len */
|
|
/* global CommentsStore */
|
|
/* global ResolveService */
|
|
|
|
import Vue from 'vue';
|
|
|
|
const ResolveDiscussionBtn = Vue.extend({
|
|
props: {
|
|
discussionId: String,
|
|
mergeRequestId: Number,
|
|
canResolve: Boolean,
|
|
},
|
|
data: function() {
|
|
return {
|
|
discussion: {},
|
|
};
|
|
},
|
|
computed: {
|
|
showButton: function () {
|
|
if (this.discussion) {
|
|
return this.discussion.isResolvable();
|
|
} else {
|
|
return false;
|
|
}
|
|
},
|
|
isDiscussionResolved: function () {
|
|
if (this.discussion) {
|
|
return this.discussion.isResolved();
|
|
} else {
|
|
return false;
|
|
}
|
|
},
|
|
buttonText: function () {
|
|
if (this.isDiscussionResolved) {
|
|
return "Unresolve discussion";
|
|
} else {
|
|
return "Resolve discussion";
|
|
}
|
|
},
|
|
loading: function () {
|
|
if (this.discussion) {
|
|
return this.discussion.loading;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
},
|
|
methods: {
|
|
resolve: function () {
|
|
ResolveService.toggleResolveForDiscussion(this.mergeRequestId, this.discussionId);
|
|
}
|
|
},
|
|
created: function () {
|
|
CommentsStore.createDiscussion(this.discussionId, this.canResolve);
|
|
|
|
this.discussion = CommentsStore.state[this.discussionId];
|
|
}
|
|
});
|
|
|
|
Vue.component('resolve-discussion-btn', ResolveDiscussionBtn);
|