public/lib/error-service.js (36 lines of code) (raw):
/**
* Decorates Angular's exception handler. Broadcasts an event that can be
* intercepted by the wfUserMessage directive for display.
*/
export function wfErrorExceptionHandlerDecorator($delegate, $injector) {
return function wfErrorExceptionHandler(ex, cause) {
var messageData = ex && errorData[ex.name] || errorData.Error;
var $rootScope = $injector.get('$rootScope');
$rootScope.$broadcast('userMessage.show', messageData);
console.error(ex);
$delegate(ex, cause);
};
}
/**
* Maps error types to data for the user-message component.
*/
var errorData = {
'SessionError': {
name: 'sessionError',
dismissable: false,
showOverlay: true,
messageType: 'error'
},
'TimeoutError': {
name: 'timeoutError',
dismissable: false,
showOverlay: true,
messageType: 'error'
},
'PresenceError': {
name: 'presenceError',
dismissable: true,
showOverlay: false,
messageType: 'error'
},
'Error': {
name: 'error',
dismissable: true,
showOverlay: false,
timeout: 10000,
messageType: 'error'
}
};