angular.module('focaConfiguracion') .factory("interceptorRequest", [ '$injector', function($injector) { function reintentarRequest(httpConfig) { var $timeout = $injector.get('$timeout'); return $timeout(function() { var $http = $injector.get('$http'); return $http(httpConfig.config); }, 10000); } function updateDataSqlite(request) { var sqliteService = $injector.get('focaSqliteService'); sqliteService.updateQuery( request.config.url, JSON.stringify(request.config.data), request.config.method, JSON.stringify(request.data)); } function getDataSqlite(request) { return new Promise(function(resolve) { var sqliteService = $injector.get('focaSqliteService'); sqliteService.getQuery( request.config.url, JSON.stringify(request.config.data), request.config.method, respuesta); function respuesta(config) { if (config) { var request = { data: JSON.parse(config.response), status: 200 }; resolve(request); } else { resolve(false); } } }); } var request = { responseError: async function(config) { if (config.status === -1) { var data = await getDataSqlite(config); if (!data) { return reintentarRequest(config); } else { config.data = data.data; return config; } } else { return config; } }, response: function(response) { if (typeof response.data !== 'string') { updateDataSqlite(response); } return response; } } return request; } ]).config(['$httpProvider', function($httpProvider) { $httpProvider.interceptors.push('interceptorRequest'); }]);