travis-web/app/utils/repo-actions-item-component-mixin.js
Piotr Sarnacki 7649c180dd Fix cancel and restart buttons
Callback functions for restart and cancel where improperly updated while
switching from coffeescript to javascript.
2016-01-07 10:19:29 +01:00

68 lines
1.9 KiB
JavaScript

import Ember from 'ember';
export default Ember.Mixin.create({
restarting: false,
cancelling: false,
userHasPermissionForRepo: function() {
var repo, user;
repo = this.get('repo');
user = this.get('user');
if (user && repo) {
return user.hasAccessToRepo(repo);
}
}.property('user.permissions.[]', 'repo', 'user'),
canCancel: function() {
return this.get('item.canCancel') && this.get('userHasPermissionForRepo');
}.property('userHasPermissionForRepo', 'item.canCancel'),
canRestart: function() {
return this.get('item.canRestart') && this.get('userHasPermissionForRepo');
}.property('userHasPermissionForRepo', 'item.canRestart'),
actions: {
restart: function() {
var onFinished;
if (this.get('restarting')) {
return;
}
this.set('restarting', true);
onFinished = () => {
this.set('restarting', false);
};
return this.get('item').restart().then(onFinished, onFinished);
},
cancel: function() {
var type;
if (this.get('cancelling')) {
return;
}
this.set('cancelling', true);
type = this.get('type');
return this.get('item').cancel().then(() => {
this.set('cancelling', false);
return Travis.flash({
success: (type.capitalize()) + " has been successfully canceled."
});
}, (xhr) => {
this.set('cancelling', false);
if (xhr.status === 422) {
return Travis.flash({
error: "This " + type + " can't be canceled"
});
} else if (xhr.status === 403) {
return Travis.flash({
error: "You don't have sufficient access to cancel this " + type
});
} else {
return Travis.flash({
error: "An error occured when canceling the " + type
});
}
});
}
}
});