(function () { 'use strict'; window.Whisper = window.Whisper || {}; Whisper.AppView = Backbone.View.extend({ initialize: function(options) { this.inboxView = null; this.installView = null; this.events = options.events; this.events.on('openStandalone', this.openStandaloneInstaller, this); this.events.on('openConversation', this.openConversation, this); this.events.on('openInstaller', this.openInstaller, this); this.events.on('openInbox', this.openInbox, this); }, openView: function(view) { this.el.innerHTML = ""; this.el.append(view.el); }, openInstaller: function() { this.closeInstaller(); this.installView = new Whisper.InstallView(); if (Whisper.Registration.everDone()) { this.installView.selectStep(3); this.installView.hideDots(); } this.openView(this.installView); }, openStandaloneInstaller: function() { this.closeInstaller(); this.installView = new Whisper.StandaloneRegistrationView(); this.openView(this.installView); }, closeInstaller: function() { if (this.installView) { this.installView.remove(); this.installView = null; } }, openInbox: function(options) { options = options || {}; _.defaults(options, {initialLoadComplete: false}); console.log('open inbox'); this.closeInstaller(); if (!this.inboxView) { return ConversationController.loadPromise().then(function() { this.inboxView = new Whisper.InboxView({ model: self, window: window, initialLoadComplete: initialLoadComplete }); this.openView(this.inboxView); }.bind(this)); } else { if (!$.contains(this.$el, this.inboxView.$el)) { this.openView(this.inboxView); } window.focus(); // FIXME return Promise.resolve(); } }, onEmpty: function() { var view = this.inboxView; if (view) { view.onEmpty(); } }, onProgress: function(count) { var view = this.inboxView; if (view) { view.onProgress(count); } }, openConversation: function(conversation) { if (conversation) { this.openInbox().then(function() { this.inboxView.openConversation(conversation); }.bind(this)); } }, }); })();