-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpopup.js
122 lines (109 loc) · 3.62 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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
const checkbox = document.getElementById('checkbox');
const checkboxReveal = document.getElementById('checkbox-reveal');
const checkboxAcceptance = document.getElementById('checkbox-acceptance');
const group = document.getElementById('radio-group');
const easyMed = document.getElementById('easy-med');
const medHard = document.getElementById('med-hard');
const none = document.getElementById('hide-none');
const all = document.getElementById('all');
const url = [
'https://leetcode.com/problemset/all/',
'https://leetcode.com/problems/*',
];
// fetch state and update form to match
document.addEventListener('DOMContentLoaded', () => {
chrome.storage.local.get(
['hidelcActive', 'hidelcRule', 'hidelcAcceptance', 'hidelcReveal'],
({ hidelcActive, hidelcRule, hidelcAcceptance, hidelcReveal }) => {
setTimeout(toggleForm, 0);
checkbox.checked = hidelcActive;
checkboxAcceptance.checked = hidelcAcceptance;
checkboxReveal.checked = hidelcReveal;
if (hidelcRule === 'easyMed') {
easyMed.checked = true;
} else if (hidelcRule === 'medHard') {
medHard.checked = true;
} else if (hidelcRule === 'hideAll') {
all.checked = true;
}
},
);
});
const toggleForm = () => {
document
.querySelectorAll('input.dis')
.forEach(node => (node.disabled = !checkbox.checked));
checkboxReveal.disabled = !checkbox.checked;
checkboxAcceptance.disabled = !checkbox.checked;
document
.querySelectorAll('label.dis')
.forEach(node => (node.style.color = checkbox.checked ? '' : 'gray'));
checkboxReveal.style.color = checkbox.checkbox ? '' : 'gray;';
checkboxAcceptance.style.color = checkbox.checkbox ? '' : 'gray;';
};
// enable or disable form based on extension active
checkbox.addEventListener('change', () => {
toggleForm();
});
checkbox.addEventListener('change', () => {
chrome.tabs.query({ url }, tabs => {
chrome.storage.local.set({ hidelcActive: checkbox.checked });
tabs.forEach(({ id }) => {
chrome.tabs.sendMessage(id, { hidelcActive: checkbox.checked });
});
});
});
easyMed.addEventListener('change', () => {
chrome.tabs.query({ url }, tabs => {
tabs.forEach(({ id }) => {
chrome.tabs.sendMessage(id, { hidelcRule: 'easyMed' });
});
});
chrome.storage.local.set({ hidelcRule: 'easyMed' });
});
medHard.addEventListener('change', () => {
chrome.tabs.query({ url }, tabs => {
tabs.forEach(({ id }) => {
chrome.tabs.sendMessage(id, { hidelcRule: 'medHard' });
});
});
chrome.storage.local.set({ hidelcRule: 'medHard' });
});
all.addEventListener('change', () => {
chrome.tabs.query({ url }, tabs => {
tabs.forEach(({ id }) => {
chrome.tabs.sendMessage(id, { hidelcRule: 'hideAll' });
});
});
chrome.storage.local.set({ hidelcRule: 'hideAll' });
});
none.addEventListener('change', () => {
chrome.tabs.query({ url }, tabs => {
tabs.forEach(({ id }) => {
chrome.tabs.sendMessage(id, { hidelcRule: 'none' });
});
});
chrome.storage.local.set({ hidelcRule: 'none' });
});
checkboxReveal.addEventListener('change', () => {
chrome.tabs.query({ url }, tabs => {
tabs.forEach(({ id }) => {
chrome.tabs.sendMessage(id, { hidelcReveal: checkboxReveal.checked });
});
});
chrome.storage.local.set({
hidelcReveal: checkboxReveal.checked,
});
});
checkboxAcceptance.addEventListener('change', () => {
chrome.tabs.query({ url }, tabs => {
tabs.forEach(({ id }) => {
chrome.tabs.sendMessage(id, {
hidelcAcceptance: checkboxAcceptance.checked,
});
});
});
chrome.storage.local.set({
hidelcAcceptance: checkboxAcceptance.checked,
});
});