Made post upload stop button abort current AJAX
This commit is contained in:
parent
7e1b901a84
commit
dd8050f250
2 changed files with 25 additions and 4 deletions
|
@ -3,6 +3,11 @@ var App = App || {};
|
||||||
App.API = function(_, jQuery, promise, appState) {
|
App.API = function(_, jQuery, promise, appState) {
|
||||||
|
|
||||||
var baseUrl = '/api/';
|
var baseUrl = '/api/';
|
||||||
|
var AJAX_UNSENT = 0;
|
||||||
|
var AJAX_OPENED = 1;
|
||||||
|
var AJAX_HEADERS_RECEIVED = 2;
|
||||||
|
var AJAX_LOADING = 3;
|
||||||
|
var AJAX_DONE = 4;
|
||||||
|
|
||||||
function get(url, data) {
|
function get(url, data) {
|
||||||
return request('GET', url, data);
|
return request('GET', url, data);
|
||||||
|
@ -24,8 +29,9 @@ App.API = function(_, jQuery, promise, appState) {
|
||||||
var fullUrl = baseUrl + '/' + url;
|
var fullUrl = baseUrl + '/' + url;
|
||||||
fullUrl = fullUrl.replace(/\/{2,}/, '/');
|
fullUrl = fullUrl.replace(/\/{2,}/, '/');
|
||||||
|
|
||||||
return promise.make(function(resolve, reject) {
|
var xhr = null;
|
||||||
jQuery.ajax({
|
var apiPromise = promise.make(function(resolve, reject) {
|
||||||
|
xhr = jQuery.ajax({
|
||||||
headers: {
|
headers: {
|
||||||
'X-Authorization-Token': appState.get('loginToken') || '',
|
'X-Authorization-Token': appState.get('loginToken') || '',
|
||||||
},
|
},
|
||||||
|
@ -46,6 +52,8 @@ App.API = function(_, jQuery, promise, appState) {
|
||||||
data: data,
|
data: data,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
apiPromise.xhr = xhr;
|
||||||
|
return apiPromise;
|
||||||
}
|
}
|
||||||
|
|
||||||
function stripMeta(data) {
|
function stripMeta(data) {
|
||||||
|
@ -62,7 +70,13 @@ App.API = function(_, jQuery, promise, appState) {
|
||||||
get: get,
|
get: get,
|
||||||
post: post,
|
post: post,
|
||||||
put: put,
|
put: put,
|
||||||
delete: _delete
|
delete: _delete,
|
||||||
|
|
||||||
|
AJAX_UNSENT: AJAX_UNSENT,
|
||||||
|
AJAX_OPENED: AJAX_OPENED,
|
||||||
|
AJAX_HEADERS_RECEIVED: AJAX_HEADERS_RECEIVED,
|
||||||
|
AJAX_LOADING: AJAX_LOADING,
|
||||||
|
AJAX_DONE: AJAX_DONE,
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -23,6 +23,7 @@ App.Presenters.PostUploadPresenter = function(
|
||||||
var fileDropper;
|
var fileDropper;
|
||||||
var interactionEnabled = true;
|
var interactionEnabled = true;
|
||||||
var currentUploadId = null;
|
var currentUploadId = null;
|
||||||
|
var currentUploadXhr = null;
|
||||||
|
|
||||||
function init(params, loaded) {
|
function init(params, loaded) {
|
||||||
topNavigationPresenter.select('upload');
|
topNavigationPresenter.select('upload');
|
||||||
|
@ -533,6 +534,9 @@ App.Presenters.PostUploadPresenter = function(
|
||||||
function stopUpload() {
|
function stopUpload() {
|
||||||
currentUploadId = null;
|
currentUploadId = null;
|
||||||
showUploadError('Upload stopped.');
|
showUploadError('Upload stopped.');
|
||||||
|
if (currentUploadXhr && currentUploadXhr.readystate !== api.AJAX_DONE) {
|
||||||
|
currentUploadXhr.abort();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function uploadNextPost() {
|
function uploadNextPost() {
|
||||||
|
@ -566,7 +570,10 @@ App.Presenters.PostUploadPresenter = function(
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
promise.wait(api.post('/posts', formData))
|
var apiPromise = api.post('/posts', formData);
|
||||||
|
currentUploadXhr = apiPromise.xhr;
|
||||||
|
|
||||||
|
promise.wait(apiPromise)
|
||||||
.then(function(response) {
|
.then(function(response) {
|
||||||
$row.slideUp(function(response) {
|
$row.slideUp(function(response) {
|
||||||
if (priorUploadId === currentUploadId) {
|
if (priorUploadId === currentUploadId) {
|
||||||
|
|
Loading…
Reference in a new issue