-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathreadable_background.js
More file actions
49 lines (42 loc) · 1.62 KB
/
readable_background.js
File metadata and controls
49 lines (42 loc) · 1.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
const isChrome = !window['browser'] && !!chrome;
// Prefer the more standard `browser` before Chrome API
const browser = isChrome ? chrome : window['browser'];
const baseUrl = 'https://readableextension.app';
const characterMapResourceUri = '/character-map.json';
function sendMessageToCurrentTab(currentTabId, message) {
if (currentTabId >= 0) {
browser.tabs.sendMessage(currentTabId, message);
}
}
function createActiveTabMessenger(message) {
return {
send: function () {
if (isChrome) {
browser.tabs.getSelected(function ({ id }) { sendMessageToCurrentTab(id, message); });
} else {
browser.tabs.query({ active: true }).then(function (currentTabs) { sendMessageToCurrentTab(currentTabs[0].id, message); })
}
}
};
}
const domChangedOnActiveTabMessenger = createActiveTabMessenger("DOM_CHANGED_ON_ACTIVE_TAB");
browser.runtime.onMessage.addListener(function (message) {
if (message === 'DOM_CHANGED') {
domChangedOnActiveTabMessenger.send();
}
});
let characterMap;
browser.runtime.onMessage.addListener(function (message) {
if (message === 'NEED_CHARACTER_MAP') {
if (characterMap) {
createActiveTabMessenger({ type: "CHARACTER_MAP_READY", characterMap }).send();
} else {
fetch(`${baseUrl}${characterMapResourceUri}`)
.then(response => response.json())
.then(map => {
characterMap = map;
createActiveTabMessenger({ type: "CHARACTER_MAP_READY", characterMap }).send();
});
}
}
});