diff --git a/www/core/components/courses/services/delegate.js b/www/core/components/courses/services/delegate.js index dd37748ec9f..dd6810568b3 100644 --- a/www/core/components/courses/services/delegate.js +++ b/www/core/components/courses/services/delegate.js @@ -176,18 +176,14 @@ angular.module('mm.core.courses') * @protected */ self.updateNavHandlersForCourse = function(courseId) { - var promises = []; - - $mmUtil.emptyArray(coursesHandlers[courseId]); + var promises = [], + enabledForCourse = []; angular.forEach(enabledNavHandlers, function(handler) { // Checks if the handler is enabled for the user. var promise = $q.when(handler.instance.isEnabledForCourse(courseId)).then(function(enabled) { if (enabled) { - coursesHandlers[courseId].push({ - controller: handler.instance.getController(courseId), - priority: handler.priority - }); + enabledForCourse.push(handler); } else { return $q.reject(); } @@ -202,6 +198,15 @@ angular.module('mm.core.courses') }).catch(function() { // Never fails. return true; + }).finally(function() { + // Update the coursesHandlers array with the new enabled addons. + $mmUtil.emptyArray(coursesHandlers[courseId]); + angular.forEach(enabledForCourse, function(handler) { + coursesHandlers[courseId].push({ + controller: handler.instance.getController(courseId), + priority: handler.priority + }); + }); }); };