Abstract chrome browser action and windows stuff
This commit is contained in:
parent
71da6a1df1
commit
607d5d3307
5 changed files with 45 additions and 12 deletions
|
@ -59,10 +59,10 @@
|
|||
var opened = false;
|
||||
var panel = 0;
|
||||
|
||||
chrome.browserAction.onClicked.addListener(function () {
|
||||
extension.browserAction(function () {
|
||||
if (opened === false) {
|
||||
opened = true;
|
||||
chrome.windows.create({
|
||||
extension.windows.open({
|
||||
url: 'index.html',
|
||||
type: 'panel',
|
||||
focused: true,
|
||||
|
@ -73,9 +73,9 @@
|
|||
panel = window.id;
|
||||
});
|
||||
} else if (opened === true) {
|
||||
chrome.windows.update(panel, { focused: true });
|
||||
extension.windows.focus(panel);
|
||||
}
|
||||
chrome.windows.onRemoved.addListener(function (windowId) {
|
||||
extension.windows.onClosed(function (windowId) {
|
||||
if (windowId === panel) {
|
||||
panel = 0;
|
||||
opened = false;
|
||||
|
@ -226,7 +226,7 @@
|
|||
var windowMap = Whisper.windowMap = new Whisper.Bimap('windowId', 'modelId');
|
||||
|
||||
// make sure panels are cleaned up on close
|
||||
chrome.windows.onRemoved.addListener(function (windowId) {
|
||||
extension.windows.onClosed(function (windowId) {
|
||||
if (windowMap.windowId[windowId]) {
|
||||
closeConversation(windowId);
|
||||
}
|
||||
|
|
|
@ -51,6 +51,36 @@
|
|||
});
|
||||
};
|
||||
|
||||
extension.windows = {
|
||||
open: function(options, callback) {
|
||||
chrome.windows.create(options, callback);
|
||||
},
|
||||
|
||||
focus: function(id, callback) {
|
||||
chrome.windows.update(id, { focused: true }, callback);
|
||||
},
|
||||
|
||||
onClosed: function(callback) {
|
||||
chrome.windows.onRemoved.addListener(callback);
|
||||
},
|
||||
|
||||
getCurrent: function(callback) {
|
||||
chrome.windows.getCurrent(callback);
|
||||
},
|
||||
|
||||
remove: function(windowId) {
|
||||
chrome.windows.remove(windowId);
|
||||
},
|
||||
|
||||
getBackground: function() {
|
||||
return chrome.extension.getBackgroundPage();
|
||||
}
|
||||
};
|
||||
|
||||
extension.browserAction = function(callback) {
|
||||
chrome.browserAction.onClicked.addListener(callback);
|
||||
};
|
||||
|
||||
window.textsecure = window.textsecure || {};
|
||||
window.textsecure.registration = {
|
||||
done: function () {
|
||||
|
|
|
@ -22,18 +22,21 @@
|
|||
function loadConversation (id) {
|
||||
var conversation = new Whisper.Conversation({ id: id });
|
||||
conversation.fetch().then(function () {
|
||||
new Whisper.ConversationView({ model: conversation}).render().$el.appendTo($('#conversation-container'));
|
||||
new Whisper.ConversationView({
|
||||
model: conversation
|
||||
}).render().$el.appendTo($('#conversation-container'));
|
||||
});
|
||||
};
|
||||
|
||||
var bg = chrome.extension.getBackgroundPage();
|
||||
var bg = extension.windows.getBackground();
|
||||
|
||||
chrome.windows.getCurrent(function (windowInfo) {
|
||||
extension.windows.getCurrent(function (windowInfo) {
|
||||
var windowId = window.document.title = windowInfo.id;
|
||||
|
||||
// close the panel if background.html is refreshed
|
||||
bg.addEventListener('beforeunload', function () {
|
||||
chrome.windows.remove(windowId);
|
||||
// TODO: reattach after reload instead of closing.
|
||||
extension.windows.remove(windowId);
|
||||
});
|
||||
|
||||
loadConversation(bg.Whisper.windowMap.modelIdFrom(windowId));
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
// prevent multiple copies of the same conversation from being opened
|
||||
if (!windowId) {
|
||||
// open the panel
|
||||
chrome.windows.create({
|
||||
extension.windows.open({
|
||||
url: 'conversation.html',
|
||||
type: 'panel',
|
||||
focused: true,
|
||||
|
@ -48,7 +48,7 @@
|
|||
});
|
||||
} else {
|
||||
// focus the panel
|
||||
chrome.windows.update(windowId, { focused: true }, function () {
|
||||
extension.windows.focus(windowId, function () {
|
||||
if (chrome.runtime.lastError) {
|
||||
// panel isn't actually open...
|
||||
window.closeConversation(windowId);
|
||||
|
|
|
@ -19,7 +19,7 @@ var Whisper = Whisper || {};
|
|||
(function () {
|
||||
'use strict';
|
||||
|
||||
var bg = chrome.extension.getBackgroundPage();
|
||||
var bg = extension.windows.getBackground();
|
||||
|
||||
// list of conversations, showing user/group and last message sent
|
||||
Whisper.ConversationListItemView = Backbone.View.extend({
|
||||
|
|
Loading…
Reference in a new issue