From e05988ff5dba379551781c2eff468115459954ff Mon Sep 17 00:00:00 2001 From: John Mitchell Date: Tue, 3 Nov 2015 21:58:01 -0500 Subject: [PATCH 1/2] resolve config with a promise on the login route --- awx/ui/client/src/app.js | 8 ++++---- awx/ui/client/src/helpers/LoadConfig.js | 3 +++ .../client/src/login/loginModal/loginModal.controller.js | 8 +++++--- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/awx/ui/client/src/app.js b/awx/ui/client/src/app.js index 9e56c7af35..4ecec25808 100644 --- a/awx/ui/client/src/app.js +++ b/awx/ui/client/src/app.js @@ -834,9 +834,9 @@ var tower = angular.module('Tower', [ }]); }]) - .run(['$compile', '$cookieStore', '$rootScope', '$log', 'CheckLicense', '$location', 'Authorization', 'LoadBasePaths', 'Timer', 'ClearScope', 'HideStream', 'Socket', + .run(['$q', '$compile', '$cookieStore', '$rootScope', '$log', 'CheckLicense', '$location', 'Authorization', 'LoadBasePaths', 'Timer', 'ClearScope', 'HideStream', 'Socket', 'LoadConfig', 'Store', 'ShowSocketHelp', 'AboutAnsibleHelp', 'pendoService', - function ($compile, $cookieStore, $rootScope, $log, CheckLicense, $location, Authorization, LoadBasePaths, Timer, ClearScope, HideStream, Socket, + function ($q, $compile, $cookieStore, $rootScope, $log, CheckLicense, $location, Authorization, LoadBasePaths, Timer, ClearScope, HideStream, Socket, LoadConfig, Store, ShowSocketHelp, AboutAnsibleHelp, pendoService) { @@ -1063,8 +1063,8 @@ var tower = angular.module('Tower', [ if (!$AnsibleConfig) { - // there may be time lag when loading the config file, so temporarily use what's in local storage - $AnsibleConfig = Store('AnsibleConfig'); + // create a promise that will resolve when $AnsibleConfig is loaded + $rootScope.loginConfig = $q.defer(); } //the authorization controller redirects to the home page automatcially if there is no last path defined. in order to override diff --git a/awx/ui/client/src/helpers/LoadConfig.js b/awx/ui/client/src/helpers/LoadConfig.js index 0a55b55fd7..96201ed1f0 100644 --- a/awx/ui/client/src/helpers/LoadConfig.js +++ b/awx/ui/client/src/helpers/LoadConfig.js @@ -39,16 +39,19 @@ angular.module('LoadConfigHelper', ['Utilities']) if(angular.isObject(response.data)){ $AnsibleConfig = _.extend($AnsibleConfig, response.data); Store('AnsibleConfig', $AnsibleConfig); + $rootScope.loginConfig.resolve('config loaded'); $rootScope.$emit('ConfigReady'); } else { $log.info('local_settings.json is not a valid object'); + $rootScope.loginConfig.resolve('config loaded'); $rootScope.$emit('ConfigReady'); } }, function() { //local_settings.json not found $log.info('local_settings.json not found'); + $rootScope.loginConfig.resolve('config loaded'); $rootScope.$emit('ConfigReady'); }); }); diff --git a/awx/ui/client/src/login/loginModal/loginModal.controller.js b/awx/ui/client/src/login/loginModal/loginModal.controller.js index 6b2bbb9f03..a2aefb3fdb 100644 --- a/awx/ui/client/src/login/loginModal/loginModal.controller.js +++ b/awx/ui/client/src/login/loginModal/loginModal.controller.js @@ -111,10 +111,12 @@ export default ['$log', '$cookieStore', '$compile', '$window', '$rootScope', '$l }); - scope.customLogo = ($AnsibleConfig.custom_logo) ? "custom_console_logo.png" : "tower_console_logo.png"; + $rootScope.loginConfig.promise.then(function () { + scope.customLogo = ($AnsibleConfig.custom_logo) ? "custom_console_logo.png" : "tower_console_logo.png"; - scope.customLoginInfo = $AnsibleConfig.custom_login_info; - scope.customLoginInfoPresent = (scope.customLoginInfo) ? true : false; + scope.customLoginInfo = $AnsibleConfig.custom_login_info; + scope.customLoginInfoPresent = ($AnsibleConfig.customLoginInfo) ? true : false; + }); // Reset the login form //scope.loginForm.login_username.$setPristine(); From ecb445e688e3d38d480acc94a26045d2490fd76a Mon Sep 17 00:00:00 2001 From: John Mitchell Date: Tue, 3 Nov 2015 22:39:39 -0500 Subject: [PATCH 2/2] dont resolve a promise that hasnt been set up --- awx/ui/client/src/helpers/LoadConfig.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/awx/ui/client/src/helpers/LoadConfig.js b/awx/ui/client/src/helpers/LoadConfig.js index 96201ed1f0..ac3d1d54ac 100644 --- a/awx/ui/client/src/helpers/LoadConfig.js +++ b/awx/ui/client/src/helpers/LoadConfig.js @@ -39,19 +39,25 @@ angular.module('LoadConfigHelper', ['Utilities']) if(angular.isObject(response.data)){ $AnsibleConfig = _.extend($AnsibleConfig, response.data); Store('AnsibleConfig', $AnsibleConfig); - $rootScope.loginConfig.resolve('config loaded'); + if ($rootScope.loginConfig) { + $rootScope.loginConfig.resolve('config loaded'); + } $rootScope.$emit('ConfigReady'); } else { $log.info('local_settings.json is not a valid object'); - $rootScope.loginConfig.resolve('config loaded'); + if ($rootScope.loginConfig) { + $rootScope.loginConfig.resolve('config loaded'); + } $rootScope.$emit('ConfigReady'); } }, function() { //local_settings.json not found $log.info('local_settings.json not found'); - $rootScope.loginConfig.resolve('config loaded'); + if ($rootScope.loginConfig) { + $rootScope.loginConfig.resolve('config loaded'); + } $rootScope.$emit('ConfigReady'); }); });