Browse Source

Fixes #1825, API now has 'was cancelled' method, add method to state to detect api request cancellation

pull/1875/head
jlukic 10 years ago
parent
commit
c2be2d246c
2 changed files with 23 additions and 13 deletions
  1. 11
      src/definitions/behaviors/api.js
  2. 25
      src/definitions/behaviors/state.js

11
src/definitions/behaviors/api.js

@ -135,13 +135,17 @@ $.api = $.fn.api = function(parameters) {
}
// call beforesend and get any settings changes
requestSettings = module.get.settings();
requestSettings = module.get.settings();
// check if beforesend cancelled request
// check if before send cancelled request
if(requestSettings === false) {
module.cancelled = true;
module.error(error.beforeSend);
return;
}
else {
module.cancelled = false;
}
if(settings.url) {
// override with url if specified
@ -212,6 +216,9 @@ $.api = $.fn.api = function(parameters) {
},
was: {
cancelled: function() {
return (module.cancelled || false);
},
succesful: function() {
return (module.request && module.request.state() == 'resolved');
},

25
src/definitions/behaviors/state.js

@ -192,13 +192,20 @@ $.fn.state = function(parameters) {
toggle: {
state: function() {
var
apiRequest
apiRequest,
requestCancelled
;
if( module.allows('active') && module.is.enabled() ) {
module.refresh();
if($.fn.api !== undefined) {
apiRequest = $module.api('get request');
if(apiRequest) {
apiRequest = $module.api('get request');
requestCancelled = $module.api('was cancelled');
if( requestCancelled ) {
module.debug('API Request cancelled by beforesend');
settings.activateTest = function(){ return false; };
settings.deactivateTest = function(){ return false; };
}
else if(apiRequest) {
module.listenTo(apiRequest);
return;
}
@ -230,11 +237,6 @@ $.fn.state = function(parameters) {
})
;
}
// xhr exists but set to false, beforeSend killed the xhr
else {
settings.activateTest = function(){ return false; };
settings.deactivateTest = function(){ return false; };
}
},
// checks whether active/inactive state can be given
@ -394,7 +396,7 @@ $.fn.state = function(parameters) {
}
}
else {
module.debug('Text is already sane, ignoring update', text);
module.debug('Text is already set, ignoring update', text);
}
}
},
@ -582,7 +584,7 @@ $.fn.state.settings = {
name : 'State',
// debug output
debug : false,
debug : true,
// verbose debug output
verbose : true,
@ -621,7 +623,8 @@ $.fn.state.settings = {
// error
error: {
method : 'The method you called is not defined.'
beforeSend : 'The before send function has cancelled state change',
method : 'The method you called is not defined.'
},
// metadata

Loading…
Cancel
Save