Commit a8badbe5 authored by Clement Ho's avatar Clement Ho

Replace $.post in label manager with axios

parent f35bac57
/* eslint-disable comma-dangle, class-methods-use-this, no-underscore-dangle, no-param-reassign, no-unused-vars, consistent-return, func-names, space-before-function-paren, max-len */ /* eslint-disable comma-dangle, class-methods-use-this, no-underscore-dangle, no-param-reassign, no-unused-vars, consistent-return, func-names, space-before-function-paren, max-len */
import Sortable from 'vendor/Sortable'; import Sortable from 'vendor/Sortable';
import Flash from './flash'; import flash from './flash';
import axios from './lib/utils/axios_utils';
export default class LabelManager { export default class LabelManager {
constructor({ togglePriorityButton, prioritizedLabels, otherLabels } = {}) { constructor({ togglePriorityButton, prioritizedLabels, otherLabels } = {}) {
...@@ -50,11 +51,12 @@ export default class LabelManager { ...@@ -50,11 +51,12 @@ export default class LabelManager {
if (persistState == null) { if (persistState == null) {
persistState = true; persistState = true;
} }
let xhr;
const _this = this; const _this = this;
const url = $label.find('.js-toggle-priority').data('url'); const url = $label.find('.js-toggle-priority').data('url');
let $target = this.prioritizedLabels; let $target = this.prioritizedLabels;
let $from = this.otherLabels; let $from = this.otherLabels;
const rollbackLabelPosition = this.rollbackLabelPosition.bind(this, $label, action);
if (action === 'remove') { if (action === 'remove') {
$target = this.otherLabels; $target = this.otherLabels;
$from = this.prioritizedLabels; $from = this.prioritizedLabels;
...@@ -71,40 +73,34 @@ export default class LabelManager { ...@@ -71,40 +73,34 @@ export default class LabelManager {
return; return;
} }
if (action === 'remove') { if (action === 'remove') {
xhr = $.ajax({ axios.delete(url)
url, .catch(rollbackLabelPosition);
type: 'DELETE'
});
// Restore empty message // Restore empty message
if (!$from.find('li').length) { if (!$from.find('li').length) {
$from.find('.empty-message').removeClass('hidden'); $from.find('.empty-message').removeClass('hidden');
} }
} else { } else {
xhr = this.savePrioritySort($label, action); this.savePrioritySort($label, action)
.catch(rollbackLabelPosition);
} }
return xhr.fail(this.rollbackLabelPosition.bind(this, $label, action));
} }
onPrioritySortUpdate() { onPrioritySortUpdate() {
const xhr = this.savePrioritySort(); this.savePrioritySort()
return xhr.fail(function() { .catch(() => flash(this.errorMessage));
return new Flash(this.errorMessage, 'alert');
});
} }
savePrioritySort() { savePrioritySort() {
return $.post({ return axios.post(this.prioritizedLabels.data('url'), {
url: this.prioritizedLabels.data('url'), label_ids: this.getSortedLabelsIds(),
data: {
label_ids: this.getSortedLabelsIds()
}
}); });
} }
rollbackLabelPosition($label, originalAction) { rollbackLabelPosition($label, originalAction) {
const action = originalAction === 'remove' ? 'add' : 'remove'; const action = originalAction === 'remove' ? 'add' : 'remove';
this.toggleLabelPriority($label, action, false); this.toggleLabelPriority($label, action, false);
return new Flash(this.errorMessage, 'alert'); return flash(this.errorMessage);
} }
getSortedLabelsIds() { getSortedLabelsIds() {
......
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