// ==UserScript==
// @name UserBlock (LeLombrik.net)
// @namespace https://lelombrik.net/
// @version 0.1
// @description Cache les publications des trolls et des indésirables
// @author g012/BarneyGumbles
// @match https://lelombrik.net/*
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @require https://code.jquery.com/jquery-3.3.1.min.js
// @grant none
// ==/UserScript==
let popUpActive = true;
$(document).ready(function() {
//Lister ici les utilisateurs à bloquer (majuscule/minuscules prises en compte)
let aUsers = ["GrosConnard",
"Chocolatine31",
"CasseCouille78"];
aUsers.forEach( sUser => {
waitForKeyElements(`a:contains(${sUser})`, function (jNode) {
let oParent_1 = jNode.parent()[0];
let oParent_2 = jNode.parent().parent()[0];
let oParent_3 = jNode.parent().parent().parent()[0];
let oParent_4 = jNode.parent().parent().parent().parent()[0];
if(jNode[0].classList.contains("top_comment")){ //Top commentaire -> enlever directement
jNode[0].remove();
updatePopup(sUser, { nb_files: 0, nb_comments: 1 }); //One comment blocked
return;
}
if( oParent_1.classList.contains("info_file") && oParent_2.classList.contains("file") ){ //Fichier sur la page principale (mode Complet)
console.log("File from user " + sUser + " blocked");
updatePopup(sUser, { nb_files: 1, nb_comments: 0 }); //One file blocked
oParent_2.remove();
}
if( oParent_1.classList.contains("info_file") &&
oParent_2.classList.contains("description_file_box") &&
oParent_3.classList.contains("file_box") ){ //fichier sur la page principale (mode Bloc)
console.log("File from user " + sUser + " blocked");
updatePopup(sUser, { nb_files: 1, nb_comments: 0 }); //One file blocked
let oNextElementSibling = oParent_3.nextElementSibling;
if (oNextElementSibling.classList.contains("under_file")) oNextElementSibling.remove(); //Enlever top commentaire si trouvé
oParent_3.remove();
}
if( oParent_2.classList.contains("file_compact_detail") &&
oParent_3.classList.contains("file_description") &&
oParent_4.classList.contains("file_compact") ){ //fichier sur la page principale (mode Liste)
console.log("File from user " + sUser + " blocked");
updatePopup(sUser, { nb_files: 1, nb_comments: 0 }); //One file blocked
oParent_4.remove();
}
if( oParent_1.classList.contains("name") &&
oParent_2.classList.contains("head") &&
oParent_3.classList.contains("commentText") &&
oParent_4.classList.contains("comment") ){ //commentaire
console.log("Comment from user " + sUser + " blocked");
updatePopup(sUser, { nb_files: 0, nb_comments: 1 }); //One comment blocked
oParent_4.remove();
}
});
});
});
function GM_addStyle(css) {
const style = document.getElementById("GM_addStyleBy8626") || (function() {
const style = document.createElement('style');
style.type = 'text/css';
style.id = "GM_addStyleBy8626";
document.head.appendChild(style);
return style;
})();
const sheet = style.sheet;
sheet.insertRule(css, (sheet.rules || sheet.cssRules || []).length);
}
function updatePopup(sUser, { nb_files: iFiles, nb_comments: iComments } ){
if (!popUpActive) return; //Not active
let oPopUp = document.getElementById("userBlockPopup");
if (oPopUp === null){
oPopUp = document.createElement( 'div' );
oPopUp.id = 'userBlockPopup';
GM_addStyle(
' #userBlockPopup { ' +
' background: #a86ed438; ' +
' border: 2px solid; ' +
' padding: 4px; ' +
' position: fixed; ' +
' bottom: 8px; right: 8px; ' +
' max-width: 300px; ' +
' border-radius: 10px; ' +
' } '
);
document.body.appendChild( oPopUp );
oPopUp.logs = [];
}
//Update logs for user (number of files & comments blocked)
let oUserLog = oPopUp.logs[sUser];
if(oUserLog === undefined){
oPopUp.logs[sUser] = { nb_files: iFiles, nb_comments: iComments };
} else {
oPopUp.logs[sUser] = { nb_files : oUserLog.nb_files + iFiles, nb_comments : oUserLog.nb_comments + iComments };
}
//Display the logs
oPopUp.innerHTML = "Utilisateurs bloqués:";
Object.entries(oPopUp.logs).forEach(([user, log]) => {
oPopUp.innerHTML = `${oPopUp.innerHTML}<br/>${user} (${log.nb_files} fichiers, ${log.nb_comments} commentaires)`;
});
$("#userBlockPopup").fadeIn(100);
//Reset logs after one second
setTimeout(function(){
let oPopUp = document.getElementById("userBlockPopup");
if (oPopUp !== null){
oPopUp.logs = [];
}
}, 1000);
//Close the popup after few seconds
setTimeout(function(){
$("#userBlockPopup").fadeOut(2000);
}, 5000);
}