Fixed top navigation loading glitch
A race condition occurred - router could execute promise.abortAll() even when top navigation didn't fully load. This caused top navigation presenter to throw "broken promise" error, which is reserved for promises made after core modules have been loaded.
This commit is contained in:
parent
640b66a324
commit
6e09f90251
2 changed files with 8 additions and 6 deletions
|
@ -2,9 +2,9 @@ var App = App || {};
|
|||
|
||||
App.Bootstrap = function(auth, router, util, promise, presenterManager) {
|
||||
|
||||
presenterManager.init();
|
||||
|
||||
promise.wait(auth.tryLoginFromCookie())
|
||||
promise.wait(
|
||||
auth.tryLoginFromCookie(),
|
||||
presenterManager.init())
|
||||
.then(startRouting)
|
||||
.fail(function(error) {
|
||||
promise.wait(auth.loginAnonymous())
|
||||
|
|
|
@ -1,14 +1,16 @@
|
|||
var App = App || {};
|
||||
|
||||
App.PresenterManager = function(jQuery, topNavigationPresenter, keyboard) {
|
||||
App.PresenterManager = function(jQuery, promise, topNavigationPresenter, keyboard) {
|
||||
|
||||
var lastContentPresenter = null;
|
||||
var $spinner;
|
||||
var spinnerTimeout;
|
||||
|
||||
function init() {
|
||||
initPresenter(topNavigationPresenter, [], function() {});
|
||||
$spinner = jQuery('body').find('#wait');
|
||||
return promise.make(function(resolve, reject) {
|
||||
initPresenter(topNavigationPresenter, [], resolve);
|
||||
});
|
||||
}
|
||||
|
||||
function initPresenter(presenter, args, loaded) {
|
||||
|
@ -72,4 +74,4 @@ App.PresenterManager = function(jQuery, topNavigationPresenter, keyboard) {
|
|||
|
||||
};
|
||||
|
||||
App.DI.registerSingleton('presenterManager', ['jQuery', 'topNavigationPresenter', 'keyboard'], App.PresenterManager);
|
||||
App.DI.registerSingleton('presenterManager', ['jQuery', 'promise', 'topNavigationPresenter', 'keyboard'], App.PresenterManager);
|
||||
|
|
Loading…
Reference in a new issue