forked from alexwestco/what_matters_most
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbackground.js
64 lines (47 loc) · 1.64 KB
/
background.js
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
var extensions = [];
chrome.storage.sync.get("extensions", function (data) {
console.log("Now ------------------> extensions are ");
extensions = data.extensions;
});
var indexOfEnabledExtension = 0;
chrome.tabs.onCreated.addListener(function () {
indexOfEnabledExtension = ++indexOfEnabledExtension % extensions.length;
let idToDisable;
let idToEnable;
extensions = extensions.map(({ id, name, isActive }, idx) => {
if (isActive) {
idToDisable = id;
return { id, name, isActive: false };
}
if (idx === indexOfEnabledExtension) {
idToEnable = id;
return { id, name, isActive: true };
}
return { id, name, isActive };
});
chrome.management.setEnabled(idToEnable, true, function () {
console.log(`%c enabled ${idToEnable}`, "color: green");
});
chrome.management.setEnabled(idToDisable, false, function () {
console.log(`%c disabled ${idToDisable}`, "color: red");
});
});
chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
extensions = request.extensionsToSwitch.map(i => {i.isActive = false; return i});
console.log(extensions)
indexOfEnabledExtension = 0;
console.log('Selected Extensions:', request.ids);
// disable all extensions
chrome.management.setEnabled(extensions[0].id, true, () => {});
extensions[0].isActive = true;
extensions.forEach(({id}) =>
chrome.management.setEnabled(id, false, () => {})
);
alert(`
Extensions will loop in this order:
\n
${extensions.map(e => e.name).join('\n')}
`.replace(/ +/g, ''));
chrome.storage.sync.set({ extensions: extensions });
sendResponse({ farewell: "goodbye" });
});