-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcontent.js
More file actions
106 lines (84 loc) · 4.91 KB
/
content.js
File metadata and controls
106 lines (84 loc) · 4.91 KB
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
const hideSuggestions = () => {
console.log("Hide Suggestions loaded! " + new Date());
const textsToReplace = [
{ o: "Sugestões para você", s: "As Sugestões foram ocultadas" },
{ o: "Suggestions For You", s: "Suggestions has been hide" },
];
const getSidebarElements = () => {
const all = document.querySelectorAll('*');
const matched = [];
all.forEach((el) => {
const style = getComputedStyle(el);
const expectedWidth = style.getPropertyValue('--feed-sidebar-width');
if (expectedWidth && style.width === expectedWidth.trim()) {
matched.push(el);
}
});
return matched;
}
const elementsIsInSuggestionBar = (elements) => {
// Percorre o array de elementos que for passado em busca de um elemento irmão que tenha algum texto que corresponda ao que foi definido na propriedade "o" dos elementos do array textMatch
return elements.filter((el) => Array.from(el.parentElement.querySelectorAll("*")).find(e => textsToReplace.map(i => i.o).includes(e.textContent)));
}
const hideMappedElement = () => {
const startsMatching = ["x9f619 xjbqb8w x78zum5 x168nmei x13lgxp2 x5pf9jr xo71vjh", "x9f619 xjbqb8w x78zum5 x15mokao x1ga7v0g x16uus16 xbiv7yw", "html-div xdj266r x14z9mp xat24cr x1lziwak x9f619 xjbqb8w x78zum5 x15mokao x1ga7v0g x16uus16 xbiv7yw xv54qhq xf7dkkf xsag5q8 xz9dl7a x1n2onr6", "html-div xdj266r x14z9mp xat24cr x1lziwak xyri2b x1c1uobl x9f619 xjbqb8w x78zum5 x15mokao x1ga7v0g x16uus16 xbiv7yw xwib8y2 x1y1aw1k x1uhb9sk"];
const endsMatching = ["x1uhb9sk x1plvlek xryxfnj x1c4vz4f x2lah0s xdt5ytf xqjyukv x1qjc9v5 x1oa3qoh x1nhvcw1", "x1qjc9v5 x9f619 x78zum5 xdt5ytf xln7xf2 xk390pu x5yr21d x1n2onr6 x11njtxf xh8yej3", "x1plvlek xryxfnj x1c4vz4f x2lah0s xdt5ytf xqjyukv x1qjc9v5 x1oa3qoh x1nhvcw1", "x1plvlek xryxfnj x1c4vz4f x2lah0s xdt5ytf xqjyukv x1qjc9v5 x1oa3qoh x1nhvcw1"];
const [selV1s, selV2s, selV3s, selV4s] = startsMatching;
const [selV1e, selV2e, selv3e, selv4e] = endsMatching;
const allElements = document.querySelectorAll('div[class]');
const correspondenceOk = [];
const matched = Array.from(allElements).filter(el => {
const cls = el.className.trim();
// Se o elemento começar com a class definida em selV3s ou selV4s, já adiciona-o ao array
if (cls.startsWith(selV3s) || cls.startsWith(selV4s)) correspondenceOk.push(el);
return cls.startsWith(selV1s) || cls.startsWith(selV2s) || cls.startsWith(selV3s) || cls.startsWith(selV4s) || cls.endsWith(selV1e) || cls.endsWith(selV2e) || cls.endsWith(selv3e) || cls.endsWith(selv4e);
});
let elV1 = [...matched];
const sideBarElements = [...getSidebarElements()];
const suggestionBarElements = [...elementsIsInSuggestionBar(matched)];
// Percorre o array de elementos elV1 que contém mais correspondências para verificar quais elementos são os mesmos do array sideBarElements e adicionar os elementos iguais ao array duoCorrespondenceElements
elV1.forEach(e1 => {
let correspondence;
if (window?.location.pathname === "/") correspondence = sideBarElements.find(s => s === e1);
// Outra página, que não é a inicial, então verifica se elemento que deu match antes é apropriado para ser removido
else correspondence = suggestionBarElements.find(s => s === e1);
if (correspondence) correspondenceOk.push(correspondence);
})
if (correspondenceOk) {
correspondenceOk.forEach(d => {
// Oculta o elemento ao invés de remover do DOM
if (!d) return;
d.dataset.IHS = "hidden";
d.style.display = "none";
});
// Altera o texto para informar a remoção das sugestões - se houver elemento com esse conteúdo
Array.from(document.querySelectorAll('*')).map((el) => textsToReplace.map(i => i.o).includes(el.textContent) ? el : null).forEach(el => {
if (el) el.textContent = textsToReplace.find(i => i.o === el.textContent)["s"];
})
}
}
const observer = new MutationObserver(() => {
console.log("Observe dispatched! %s", new Date());
// Acionando a função hideMappedElements, para varrer novamente a página atrás de correspondências
hideMappedElement();
// Container da barra lateral direita
const sidebar = document.querySelector('._ab8w');
if (!sidebar) return;
const suggestionBlocks = sidebar.querySelectorAll('._aacl');
if (!suggestionBlocks) return;
suggestionBlocks.forEach((block) => {
const text = block.innerText || "";
if (text.includes("Sugestões para você") || text.includes("Suggestions For You")) {
const parent = block.closest('section') || block.closest('div');
if (parent) {
// Oculta o elemento ao invés de remover do DOM
parent.dataset.IHS = "hidden";
parent.style.display = "none";
}
}
});
});
observer.observe(document?.body, { childList: true, subtree: true });
setTimeout(hideMappedElement, 0);
}
hideSuggestions();