Fix: make API work in private windows
This commit is contained in:
parent
4db8a9ea9a
commit
762c7de9ce
27
js/msg.js
27
js/msg.js
|
@ -13,6 +13,15 @@ const msg = (() => {
|
||||||
handler: null,
|
handler: null,
|
||||||
clone: deepCopy
|
clone: deepCopy
|
||||||
};
|
};
|
||||||
|
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
|
||||||
|
if (message._msg === 'getMsg') {
|
||||||
|
const data = window._msg.storage.get(message.id);
|
||||||
|
if (!message.keepStorage) {
|
||||||
|
window._msg.storage.delete(message.id);
|
||||||
|
}
|
||||||
|
sendResponse(data);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
const runtimeSend = promisify(chrome.runtime.sendMessage.bind(chrome.runtime));
|
const runtimeSend = promisify(chrome.runtime.sendMessage.bind(chrome.runtime));
|
||||||
const tabSend = chrome.tabs && promisify(chrome.tabs.sendMessage.bind(chrome.tabs));
|
const tabSend = chrome.tabs && promisify(chrome.tabs.sendMessage.bind(chrome.tabs));
|
||||||
|
@ -195,6 +204,10 @@ const msg = (() => {
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleMessage(message, sender, sendResponse) {
|
function handleMessage(message, sender, sendResponse) {
|
||||||
|
if (message._msg) {
|
||||||
|
// internal message
|
||||||
|
return;
|
||||||
|
}
|
||||||
const handlers = message.target === 'tab' ?
|
const handlers = message.target === 'tab' ?
|
||||||
handler.tab.concat(handler.both) : message.target === 'extension' ?
|
handler.tab.concat(handler.both) : message.target === 'extension' ?
|
||||||
handler.extension.concat(handler.both) :
|
handler.extension.concat(handler.both) :
|
||||||
|
@ -251,12 +264,22 @@ const msg = (() => {
|
||||||
if (bg === undefined) {
|
if (bg === undefined) {
|
||||||
return preparing.then(() => exchangeGet(message, keepStorage));
|
return preparing.then(() => exchangeGet(message, keepStorage));
|
||||||
}
|
}
|
||||||
message.data = bg._msg.storage.get(message.id);
|
if (!bg) {
|
||||||
|
// FF's private window
|
||||||
|
return runtimeSend({_msg: 'getMsg', id: message.id, keepStorage})
|
||||||
|
.then(exchange);
|
||||||
|
}
|
||||||
|
let data = bg._msg.storage.get(message.id);
|
||||||
if (keepStorage) {
|
if (keepStorage) {
|
||||||
message.data = deepCopy(message.data);
|
data = deepCopy(message.data);
|
||||||
} else {
|
} else {
|
||||||
bg._msg.storage.delete(message.id);
|
bg._msg.storage.delete(message.id);
|
||||||
}
|
}
|
||||||
|
exchange(data);
|
||||||
|
|
||||||
|
function exchange(newData) {
|
||||||
|
message.data = newData;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function exchangeSet(message) {
|
function exchangeSet(message) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user