-
Notifications
You must be signed in to change notification settings - Fork 1
/
background.js
103 lines (98 loc) · 2.38 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
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
async function initConfig() {
let changed = false;
let { config, styles, t } = await chrome.storage.local.get([
"config",
"styles",
"t",
]);
if (config?.resizeChat) {
changed = true;
delete config.resizeChat;
styles ||= [];
if (!styles.includes("chat-resize")) {
styles.push("chat-resize");
}
}
if (t != null) {
if (!isNaN(t)) {
changed = true;
config.sharpness = t;
}
await chrome.storage.local.remove("t");
}
if (changed) {
chrome.storage.local.onChanged.removeListener(onStylesChanged);
await chrome.storage.local.set({ config, styles });
chrome.storage.local.onChanged.addListener(onStylesChanged);
}
return { config, styles };
}
function onStylesChanged({ styles }) {
if (styles != null) {
registerStyles(styles.newValue);
}
}
async function registerStyles(styles) {
await chrome.scripting.unregisterContentScripts();
if (!Array.isArray(styles)) {
return;
}
styles = styles.filter((t) =>
[
"auto-hide-toolbar",
"chat-font-size",
"chat-resize",
"chat-timestamp",
"fit-player",
"hide-blocked",
"hide-comp",
"hide-ff",
"hide-mission",
"hide-live-badge",
"hide-offline",
"hide-ranking",
"hide-recommended-live",
"hide-recommended",
"hide-sidebar-partner",
"hide-shortcut",
"hide-studio",
"hide-ticket",
"left-chat",
"rectangle-profile",
"right-sidebar",
"static-logo",
"top-explore",
"volume-percentage",
].includes(t)
);
if (styles.length === 0) {
return;
}
await chrome.scripting.registerContentScripts([
{
id: "styles",
matches: ["*://chzzk.naver.com/*"],
css: styles.map((t) => `styles/${t}.css`),
runAt: "document_start",
},
]);
}
async function checkPermission() {
const granted = await chrome.permissions.contains({
origins: ["*://*.chzzk.naver.com/*"],
});
if (!granted) {
chrome.tabs.create({
url: chrome.runtime.getURL("permission.html"),
});
}
}
async function init() {
const { styles } = await initConfig();
await registerStyles(styles);
await checkPermission();
}
chrome.runtime.onInstalled.addListener(init);
chrome.runtime.onStartup.addListener(init);
chrome.permissions.onRemoved.addListener(checkPermission);
chrome.storage.local.onChanged.addListener(onStylesChanged);