mirror of
https://github.com/signalapp/Signal-Desktop.git
synced 2026-04-20 16:38:21 +01:00
All Whisper.events listeners are now defined and bound in background.js, and we no longer need global methods for opening the inbox and conversation views, as those are handled by AppView or internally by InboxView. // FREEBIE
88 lines
2.7 KiB
JavaScript
88 lines
2.7 KiB
JavaScript
(function () {
|
|
'use strict';
|
|
|
|
window.Whisper = window.Whisper || {};
|
|
|
|
Whisper.AppView = Backbone.View.extend({
|
|
initialize: function(options) {
|
|
this.inboxView = null;
|
|
this.installView = null;
|
|
},
|
|
events: {
|
|
'click .openInstaller': 'openInstaller',
|
|
'click .openStandalone': 'openStandalone',
|
|
'openInbox': 'openInbox',
|
|
},
|
|
openView: function(view) {
|
|
this.el.innerHTML = "";
|
|
this.el.append(view.el);
|
|
this.delegateEvents();
|
|
},
|
|
openInstaller: function() {
|
|
this.closeInstaller();
|
|
this.installView = new Whisper.InstallView();
|
|
if (Whisper.Registration.everDone()) {
|
|
this.installView.selectStep(3);
|
|
this.installView.hideDots();
|
|
}
|
|
this.openView(this.installView);
|
|
},
|
|
openStandalone: function() {
|
|
if (window.config.environment !== 'production') {
|
|
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(null, conversation);
|
|
}.bind(this));
|
|
}
|
|
},
|
|
});
|
|
})();
|