f0dcf44b9f
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
96 lines
2.7 KiB
JavaScript
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;
|
|
};
|
|
})();
|