-
Notifications
You must be signed in to change notification settings - Fork 0
/
popup.js
88 lines (67 loc) · 2.5 KB
/
popup.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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
async function sayHello() {
const [tab] = await chrome.tabs.query({ active: true, currentWindow: true });
chrome.scripting.executeScript({
target: { tabId: tab.id },
func: () => {
alert('Hello from the service worker');
}
});
}
window.addEventListener('DOMContentLoaded', window_onload);
async function window_onload() {
const elementIsActivated = document.getElementById('chkIsActivated');
const elementUseCtrl = document.getElementById('chkUseCtrl');
elementIsActivated.addEventListener('change', async () => {
elementUseCtrl.disabled = !elementIsActivated.checked;
await setChromeStorageAsync('ContextMenuIsActivated', elementIsActivated.checked);
setWindowGlobalAsync('__ContextMenuIsActivated', elementIsActivated.checked);
});
elementUseCtrl.addEventListener('change', async () => {
await setChromeStorageAsync('ContextMenuUseCtrl', elementUseCtrl.checked);
setWindowGlobalAsync('__ContextMenuUseCtrl', elementUseCtrl.checked);
});
const isActivated = await getChromeStorageAsync('ContextMenuIsActivated', true);
const useCtrl = await getChromeStorageAsync('ContextMenuUseCtrl', true);
if(elementIsActivated.checked!= isActivated)
elementIsActivated.checked = isActivated;
if (elementUseCtrl.checked != useCtrl)
elementUseCtrl.checked = useCtrl;
if (elementUseCtrl.disabled != !isActivated)
elementUseCtrl.disabled = !isActivated;
}
async function getChromeStorageAsync(key, defaultValue)
{
return new Promise((resolve, reject) => {
chrome.storage.local.get(key, (data) => {
if (data[key] == undefined) {
resolve(defaultValue);
} else {
resolve(data[key]);
}
});
});
}
async function setChromeStorageAsync(key, value)
{
return new Promise((resolve, reject) => {
chrome.storage.local.set({ [key]: value }, () => {
resolve();
});
});
}
async function setWindowGlobalAsync(key, value)
{
return new Promise((resolve, reject) => {
chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => {
if (tabs.length > 0) {
const tabId = tabs[0].id;
chrome.scripting.executeScript({
target: { tabId: tabId },
func: () => {
window[key] = value;
}
});
}
});
});
}