Skip to content

Instantly share code, notes, and snippets.

@cristoferdomingues
Last active March 10, 2017 19:20
Show Gist options
  • Save cristoferdomingues/a7037f887949c37510203b4bf749cb37 to your computer and use it in GitHub Desktop.
Save cristoferdomingues/a7037f887949c37510203b4bf749cb37 to your computer and use it in GitHub Desktop.
Angular decorator to send exceptions to google analytics when $q error
import _ from 'lodash';
export default function decorating(AnalyticsProvider, $provide) {
'use strict';
AnalyticsProvider.setAccount('UA-64741631-1');
$provide.decorator('$q', function($delegate) {
var defer = $delegate.defer;
$delegate.defer = function() {
var deferred = defer();
deferred.promise.state = deferred.state = 'pending';
deferred.promise.then(function() {
deferred.promise.state = deferred.state = 'fulfilled';
}, function(e) {
if (angular.isString(e)) {
e = { message: e };
}
_.defaults(e, { status: 'ERROR', show: true });
if (e.show) {
window.ga('send', 'exception', {
'exDescription': e.message,
'exFatal': false
});
}
deferred.promise.state = deferred.state = 'rejected';
});
return deferred;
};
return $delegate;
});
}
routing.$inject = ['AnalyticsProvider', '$provide'];
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment