Skip to content

Commit

Permalink
Fixed $digest already in progress error
Browse files Browse the repository at this point in the history
  • Loading branch information
sahat committed Feb 19, 2016
1 parent fdd92f2 commit 76ba026
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 34 deletions.
60 changes: 33 additions & 27 deletions satellizer.js
Original file line number Diff line number Diff line change
Expand Up @@ -481,11 +481,12 @@ if (typeof module !== 'undefined' && typeof exports !== 'undefined' && module.ex
'$q',
'$http',
'$window',
'$timeout',
'SatellizerPopup',
'SatellizerUtils',
'SatellizerConfig',
'SatellizerStorage',
function($q, $http, $window, popup, utils, config, storage) {
function($q, $http, $window, $timeout, popup, utils, config, storage) {
return function() {
var Oauth2 = {};

Expand All @@ -501,44 +502,49 @@ if (typeof module !== 'undefined' && typeof exports !== 'undefined' && module.ex

Oauth2.open = function(options, userData) {
defaults = utils.merge(options, defaults);
var defer = $q.defer();

var url;
var openPopup;
var stateName = defaults.name + '_state';
$timeout(function () {
var url;
var openPopup;
var stateName = defaults.name + '_state';

if (angular.isFunction(defaults.state)) {
storage.set(stateName, defaults.state());
} else if (angular.isString(defaults.state)) {
storage.set(stateName, defaults.state);
}
if (angular.isFunction(defaults.state)) {
storage.set(stateName, defaults.state());
} else if (angular.isString(defaults.state)) {
storage.set(stateName, defaults.state);
}

url = [defaults.authorizationEndpoint, Oauth2.buildQueryString()].join('?');
url = [defaults.authorizationEndpoint, Oauth2.buildQueryString()].join('?');

if (config.cordova) {
openPopup = popup.open(url, defaults.name, defaults.popupOptions, defaults.redirectUri).eventListener(defaults.redirectUri);
} else {
openPopup = popup.open(url, defaults.name, defaults.popupOptions, defaults.redirectUri).pollPopup(defaults.redirectUri);
}
if (config.cordova) {
openPopup = popup.open(url, defaults.name, defaults.popupOptions, defaults.redirectUri).eventListener(defaults.redirectUri);
} else {
openPopup = popup.open(url, defaults.name, defaults.popupOptions, defaults.redirectUri).pollPopup(defaults.redirectUri);
}

return openPopup
.then(function(oauthData) {
// When no server URL provided, return popup params as-is.
// This is for a scenario when someone wishes to opt out from
// Satellizer's magic by doing authorization code exchange and
// saving a token manually.
if (defaults.responseType === 'token' || !defaults.url) {
return oauthData;
}
return openPopup
.then(function(oauthData) {
// When no server URL provided, return popup params as-is.
// This is for a scenario when someone wishes to opt out from
// Satellizer's magic by doing authorization code exchange and
// saving a token manually.
if (defaults.responseType === 'token' || !defaults.url) {
defer.resolve(oauthData);
}

if (oauthData.state && oauthData.state !== storage.get(stateName)) {
return $q.reject(
return defer.reject(
'The value returned in the state parameter does not match the state value from your original ' +
'authorization code request.'
);
}

return Oauth2.exchangeForToken(oauthData, userData);
});
defer.resolve(Oauth2.exchangeForToken(oauthData, userData));
});
});

return defer.promise;
};

Oauth2.exchangeForToken = function(oauthData, userData) {
Expand Down
Loading

0 comments on commit 76ba026

Please sign in to comment.