From 148e4ae7e81af03bd4ca497fbc75463129fedfa6 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Mon, 17 Apr 2017 12:21:12 +0300 Subject: [PATCH] Ability to ignore loading state for some device API calls --- ui/src/app/api/device.service.js | 8 ++++---- ui/src/app/global-interceptor.service.js | 17 ++++++++++++----- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/ui/src/app/api/device.service.js b/ui/src/app/api/device.service.js index 2c4a100ec4..b369e90b57 100644 --- a/ui/src/app/api/device.service.js +++ b/ui/src/app/api/device.service.js @@ -51,7 +51,7 @@ function DeviceService($http, $q, $filter, userService, telemetryWebsocketServic return service; - function getTenantDevices(pageLink) { + function getTenantDevices(pageLink, config) { var deferred = $q.defer(); var url = '/api/tenant/devices?limit=' + pageLink.limit; if (angular.isDefined(pageLink.textSearch)) { @@ -63,7 +63,7 @@ function DeviceService($http, $q, $filter, userService, telemetryWebsocketServic if (angular.isDefined(pageLink.textOffset)) { url += '&textOffset=' + pageLink.textOffset; } - $http.get(url, null).then(function success(response) { + $http.get(url, config).then(function success(response) { deferred.resolve(response.data); }, function fail() { deferred.reject(); @@ -425,7 +425,7 @@ function DeviceService($http, $q, $filter, userService, telemetryWebsocketServic } } - function getDeviceAttributes(deviceId, attributeScope, query, successCallback) { + function getDeviceAttributes(deviceId, attributeScope, query, successCallback, config) { var deferred = $q.defer(); var subscriptionId = deviceId + attributeScope; var das = deviceAttributesSubscriptionMap[subscriptionId]; @@ -445,7 +445,7 @@ function DeviceService($http, $q, $filter, userService, telemetryWebsocketServic } } else { var url = '/api/plugins/telemetry/' + deviceId + '/values/attributes/' + attributeScope; - $http.get(url, null).then(function success(response) { + $http.get(url, config).then(function success(response) { processDeviceAttributes(response.data, query, deferred, successCallback); }, function fail() { deferred.reject(); diff --git a/ui/src/app/global-interceptor.service.js b/ui/src/app/global-interceptor.service.js index 8ba6c04bbe..86cd676940 100644 --- a/ui/src/app/global-interceptor.service.js +++ b/ui/src/app/global-interceptor.service.js @@ -111,11 +111,12 @@ export default function GlobalInterceptor($rootScope, $q, $injector) { function request(config) { var rejected = false; if (config.url.startsWith('/api/')) { - $rootScope.loading = !isInternalUrlPrefix(config.url); + var isLoading = !isInternalUrlPrefix(config.url); + updateLoadingState(config, isLoading); if (isTokenBasedAuthEntryPoint(config.url)) { if (!getUserService().updateAuthorizationHeader(config.headers) && !getUserService().refreshTokenPending()) { - $rootScope.loading = false; + updateLoadingState(config, false); rejected = true; getUserService().clearJwtToken(false); return $q.reject({ data: {message: getTranslate().instant('access.unauthorized')}, status: 401, config: config}); @@ -131,21 +132,21 @@ export default function GlobalInterceptor($rootScope, $q, $injector) { function requestError(rejection) { if (rejection.config.url.startsWith('/api/')) { - $rootScope.loading = false; + updateLoadingState(rejection.config, false); } return $q.reject(rejection); } function response(response) { if (response.config.url.startsWith('/api/')) { - $rootScope.loading = false; + updateLoadingState(response.config, false); } return response; } function responseError(rejection) { if (rejection.config.url.startsWith('/api/')) { - $rootScope.loading = false; + updateLoadingState(rejection.config, false); } var unhandled = false; var ignoreErrors = rejection.config.ignoreErrors; @@ -184,4 +185,10 @@ export default function GlobalInterceptor($rootScope, $q, $injector) { } return $q.reject(rejection); } + + function updateLoadingState(config, isLoading) { + if (!config || angular.isUndefined(config.ignoreLoading) || !config.ignoreLoading) { + $rootScope.loading = isLoading; + } + } }