This repository was archived by the owner on Jul 3, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.js
More file actions
73 lines (64 loc) · 2.67 KB
/
main.js
File metadata and controls
73 lines (64 loc) · 2.67 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
(function (Tweet, MuteManager) {
"use strict";
var container_elt = document.getElementById('stream-items-id'),
mute_manager = new MuteManager();
chrome.extension.onRequest.addListener(
function (request, sender, sendResponse) {
console.log("received " + request.type + " request");
// console.log("BEFORE mute_manager.muted = " + JSON.stringify(mute_manager.muted));
mute_manager.muted = request.data.backup;
// console.log("AFTER mute_manager.muted = " + JSON.stringify(mute_manager.muted));
scanDOM();
}
);
// Sending a connection message to the background page
chrome.extension.sendRequest({type: "connection"}, function (response) {
if (response.type !== "connection-response") {
window.alert("Twilter error : no connection-response");
} else {
mute_manager.muted = response.data.backup;
console.log("received connection-response: ", response.data.backup);
}
// Now we have the muted object, we can start to scan
main();
});
// Listening to close event on window in order to send a disconnection message to the background page
window.addEventListener("close", function () {
chrome.extension.sendRequest({type: "disconnection"});
}, false);
function main() {
// Listening to the DOMNodeInserted event in order to scan every inserted tweet
container_elt.addEventListener(
"DOMNodeInserted",
function(e) {
if (e.target.classList && e.target.classList.contains("stream-item")) {
handle(e.target.querySelector("div.tweet"));
}
},
false
);
scanDOM();
}
// This is how we handle each tweet
function handle(tweet_div) {
var tweet = new Tweet({
id: tweet_div.getAttribute("data-item-id"),
author: tweet_div.getAttribute("data-screen-name"),
retweeter: tweet_div.getAttribute("data-retweeter"),
content: tweet_div.querySelector("p.js-tweet-text").textContent
});
if (tweet.isBlackListed(mute_manager)) {
tweet_div.parentNode.removeChild(tweet_div);
console.log("Twilter removed a tweet:\n" + tweet.toString());
}
}
// Scanning the existing DOM:
function scanDOM() {
var i,
len,
tweet_divs = container_elt.querySelectorAll("div.tweet");
for (i = 0, len = tweet_divs.length; i < len; i += 1) {
handle(tweet_divs[i]);
}
}
}) (window.Twilter.Tweet, window.Twilter.MuteManager);