(function () { 'use strict'; angular .module('app.offline') .factory('offlineInterceptor', offlineInterceptor); offlineInterceptor.$inject = ['API_ENDPOINT', 'offlineStorageService', 'store']; function offlineInterceptor(API_ENDPOINT, offlineStorageService, store) { var api = API_ENDPOINT.replace(/\//g, "\\/"); return { response: response, responseError: responseError }; function response(response) { var url; if (_validIntercept(response)) { url = response.config.url; if (_matchApi(url)) { offlineStorageService.set(_getUrlKey(url), response.data); offlineStorageService.findImage(response.data); } } return response; } function responseError(response) { var url; if (_validIntercept(response)) { url = response.config.url; if (_matchApi(url)) { response.data = offlineStorageService.get(_getUrlKey(url)); } } return response; } function _validIntercept(response) { return _verifyStore() && response.config.method === 'GET'; } function _verifyStore() { return store.get('token') && store.get('profileComplete'); } function _getUrlKey(url) { return url.replace(API_ENDPOINT, '').replace(/\//g, '.'); } function _matchApi(url) { return url.match(api); } } })();