signal-desktop/js/panel_controller.js
lilia f0dcf44b9f Use onClosed instead of onSuspend
Renames extension.windows.beforeUnload to onSuspend, to match the
underlying chrome api call. onClosed fires when the frontend app window
is closed, while onSuspend fires when the background page is closed or
refreshed (which amounts to an app restart).

Frontend views are initialized iff the inbox window is opened, and so
should always be listening to onClosed in order to know when they are no
longer needed.

// FREEBIE
2015-11-08 10:49:31 -08:00

96 lines
2.7 KiB
JavaScript

/*global $, Whisper, Backbone, textsecure, extension*/
/*
* vim: ts=4:sw=4:expandtab
*/
// This script should only be included in background.html
(function () {
'use strict';
window.Whisper = window.Whisper || {};
window.setUnreadCount = function(count) {
if (count > 0) {
extension.navigator.setBadgeText(count);
} else {
extension.navigator.setBadgeText("");
}
};
window.isFocused = function() {
return inboxFocused;
};
window.isOpen = function() {
return inboxOpened;
};
window.drawAttention = function() {
if (inboxOpened && !inboxFocused) {
extension.windows.drawAttention(inboxWindowId);
}
};
/* Inbox window controller */
var inboxFocused = false;
var inboxOpened = false;
var inboxWindowId = 'inbox';
var appWindow = null;
window.openInbox = function() {
if (inboxOpened === false) {
inboxOpened = true;
extension.windows.open({
id: 'inbox',
url: 'index.html',
focused: true,
width: 580,
height: 440,
minWidth: 600,
minHeight: 360
}, function (windowInfo) {
appWindow = windowInfo;
inboxWindowId = appWindow.id;
appWindow.onClosed.addListener(function () {
inboxOpened = false;
appWindow = null;
});
appWindow.contentWindow.addEventListener('blur', function() {
inboxFocused = false;
});
appWindow.contentWindow.addEventListener('focus', function() {
inboxFocused = true;
});
// close the inbox if background.html is refreshed
extension.windows.onSuspend(function() {
// TODO: reattach after reload instead of closing.
extension.windows.remove(inboxWindowId);
});
});
} else if (inboxOpened === true) {
extension.windows.focus(inboxWindowId, function (error) {
if (error) {
inboxOpened = false;
openInbox();
}
});
}
};
var open;
window.openConversation = function(conversation) {
if (inboxOpened === true) {
appWindow.contentWindow.openConversation(conversation);
} else {
open = conversation;
}
openInbox();
};
window.getOpenConversation = function() {
var o = open;
open = null;
return o;
};
})();