-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpopup.js
139 lines (123 loc) · 3.34 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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
async function showHideRelated () {
let [tab] = await chrome.tabs.query({ active: true, currentWindow: true });
if (showRelatedToggle.checked) {
chrome.scripting.executeScript({
target: { tabId: tab.id },
function: showRelated,
});
} else {
chrome.scripting.executeScript({
target: { tabId: tab.id },
function: hideRelated,
});
}
}
async function showHideEndscreen() {
let [tab] = await chrome.tabs.query({ active: true, currentWindow: true });
if (showEndscreenToggle.checked) {
chrome.scripting.executeScript({
target: { tabId: tab.id },
function: showEndscreen,
});
} else {
chrome.scripting.executeScript({
target: { tabId: tab.id },
function: hideEndscreen,
});
}
}
async function setLogoLink() {
let [tab] = await chrome.tabs.query({ active: true, currentWindow: true });
if (logoLinkToggle.checked) {
chrome.scripting.executeScript({
target: { tabId: tab.id },
function: logoLinkTrue,
});
} else {
chrome.scripting.executeScript({
target: { tabId: tab.id },
function: logoLinkFalse,
});
}
}
let showRelatedToggle = document.getElementById("showRelatedToggle");
let showEndscreenToggle = document.getElementById("showEndscreenToggle");
let logoLinkToggle = document.getElementById("logoLinkToggle");
// When the toggle is checked
showRelatedToggle.addEventListener("change", showHideRelated);
showEndscreenToggle.addEventListener("change", showHideEndscreen);
logoLinkToggle.addEventListener("change", setLogoLink);
// The body of this function will be executed as a content script inside the
// current page
function showRelated() {
const style = document.getElementById("youtube-blocker-related");
style.innerHTML = `
#related {
display: block;
}
`
}
function hideRelated() {
const style = document.getElementById("youtube-blocker-related");
style.innerHTML = `
#related {
display: none;
}
`
}
function showEndscreen() {
const style = document.getElementById("youtube-blocker-endscreen");
style.innerHTML = `
.html5-endscreen {
display: block;
}
`
}
function hideEndscreen() {
const style = document.getElementById("youtube-blocker-endscreen");
style.innerHTML = `
.html5-endscreen {
display: none;
}
`
}
function logoLinkTrue() {
const style = document.getElementById("youtube-blocker-logo");
style.innerHTML = `
#logo {
pointer-events: auto;
cursor: pointer;
opacity: 1;
}`
}
function logoLinkFalse() {
const style = document.getElementById("youtube-blocker-logo");
style.innerHTML = `
#logo {
pointer-events: none;
cursor: default;
opacity: 0.6;
}`
}
// Update the relevant fields with the new data.
const setDOMInfo = info => {
showRelatedToggle.checked = info.related;
showEndscreenToggle.checked = info.endscreen;
logoLinkToggle.checked = info.logo;
};
// Once the DOM is ready...
window.addEventListener('DOMContentLoaded', () => {
// ...query for the active tab...
chrome.tabs.query({
active: true,
currentWindow: true
}, tabs => {
// ...and send a request for the DOM info...
chrome.tabs.sendMessage(
tabs[0].id,
{ from: 'popup', subject: 'DOMInfo' },
// ...also specifying a callback to be called
// from the receiving end (content script).
setDOMInfo);
});
});