UNPKG

kongadmin

Version:
81 lines (73 loc) 2.69 kB
/** * Interceptor for $http and $sailSocket request to handle possible errors and show * that error to user automatically. Message is shown by application 'Message' service * which uses noty library. * * @todo Add option to skip showing automatic error message */ (function() { 'use strict'; angular.module('frontend.core.interceptors') .factory('ErrorInterceptor', [ '$q', '$injector', function($q, $injector) { return { /** * Interceptor method which is triggered whenever response occurs on $http queries. Note * that this has some sails.js specified hack for errors that returns HTTP 200 status. * * This is maybe sails.js bug, but I'm not sure of that. * * @param {*} response * * @returns {*|Promise} */ response: function responseCallback(response) { if ( response.data && response.data.error && response.data.status && response.data.status !== 200 ) { return $q.reject(response); } else { return response || $q.when(response); } }, /** * Interceptor method that is triggered whenever response error occurs on $http requests. * * @param {*} response * * @returns {*|Promise} */ responseError: function responseErrorCallback(response) { var message = ''; if (response.data && response.data.error) { message = response.data.error; } else if (response.data && response.data.message) { message = response.data.message; } else { if (typeof response.data === 'string') { message = response.data; } else if (response.statusText) { message = response.statusText; } else { message = $injector.get('HttpStatusService').getStatusCodeText(response.status); } message = message + ' <span class="text-small">(HTTP status ' + response.status + ')</span>'; } //if(response.data.goTo) { // $injector.get('$state').go(response.data.goTo); // return $q.reject(response); //} //if (message) { // $injector.get('MessageService').error(message); //} return $q.reject(response); } }; } ]) ; }());