feat: add scripts
This commit is contained in:
@ -13,65 +13,69 @@
|
||||
// ==/UserScript==
|
||||
|
||||
function injectCSS(css) {
|
||||
const style = document.createElement('style');
|
||||
const style = document.createElement("style");
|
||||
style.appendChild(document.createTextNode(css));
|
||||
document.head.appendChild(style);
|
||||
}
|
||||
|
||||
function findElement(tag, properties) {
|
||||
const elements = document.querySelectorAll(tag);
|
||||
elementLoop:
|
||||
for (const element of elements) {
|
||||
for (const [key, value] of Object.entries(properties)) {
|
||||
if (element.getAttribute(key) != value) {
|
||||
continue elementLoop;
|
||||
}
|
||||
}
|
||||
return element;
|
||||
const elements = document.querySelectorAll(tag);
|
||||
elementLoop: for (const element of elements) {
|
||||
for (const [key, value] of Object.entries(properties)) {
|
||||
if (element.getAttribute(key) != value) {
|
||||
continue elementLoop;
|
||||
}
|
||||
}
|
||||
return element;
|
||||
}
|
||||
}
|
||||
|
||||
function getAncestor(element, level) {
|
||||
if (element == null) {
|
||||
return null;
|
||||
}
|
||||
for (let i = 0; i < level; i++) {
|
||||
element = element.parentNode;
|
||||
}
|
||||
return element;
|
||||
if (element == null) {
|
||||
return null;
|
||||
}
|
||||
for (let i = 0; i < level; i++) {
|
||||
element = element.parentNode;
|
||||
}
|
||||
return element;
|
||||
}
|
||||
|
||||
console.log("Scanning class for components...");
|
||||
// Search box
|
||||
let searchBox = findElement("input", {"aria-autocomplete": "list"});
|
||||
let searchBox = findElement("input", { "aria-autocomplete": "list" });
|
||||
if (searchBox == null) {
|
||||
console.warn("Failed to get searchBox element.");
|
||||
throw new Error();
|
||||
console.warn("Failed to get searchBox element.");
|
||||
throw new Error();
|
||||
}
|
||||
searchBox = getAncestor(searchBox, 7);
|
||||
// Header & Text header
|
||||
let textHeader = findElement("span", {"style": "line-height: var(--base-line-clamp-line-height); --base-line-clamp-line-height:28px;"});
|
||||
let textHeader = findElement("span", {
|
||||
style:
|
||||
"line-height: var(--base-line-clamp-line-height); --base-line-clamp-line-height:28px;",
|
||||
});
|
||||
let header;
|
||||
if (textHeader == null) {
|
||||
console.warn("Failed to get textHeader element.");
|
||||
throw new Error();
|
||||
console.warn("Failed to get textHeader element.");
|
||||
throw new Error();
|
||||
}
|
||||
header = getAncestor(textHeader, 7);
|
||||
textHeader = textHeader.childNodes[0];
|
||||
// Unread indicator
|
||||
let unreadIndicator = findElement("span", {"data-visualcompletion": "ignore"});
|
||||
let unreadIndicator = findElement("span", {
|
||||
"data-visualcompletion": "ignore",
|
||||
});
|
||||
// Action bar
|
||||
let actionBar = findElement("div", {"aria-expanded": "false"});
|
||||
let actionBar = findElement("div", { "aria-expanded": "false" });
|
||||
if (actionBar == null) {
|
||||
console.warn("Failed to get actionBar element.");
|
||||
throw new Error();
|
||||
console.warn("Failed to get actionBar element.");
|
||||
throw new Error();
|
||||
}
|
||||
actionBar = actionBar.parentNode;
|
||||
// Chats
|
||||
let chats = findElement("div", {"aria-label": "Chats"});
|
||||
let chats = findElement("div", { "aria-label": "Chats" });
|
||||
if (chats == null) {
|
||||
console.warn("Failed to get chats element.");
|
||||
throw new Error();
|
||||
console.warn("Failed to get chats element.");
|
||||
throw new Error();
|
||||
}
|
||||
chats = chats.parentNode;
|
||||
// Print elements
|
||||
|
||||
Reference in New Issue
Block a user