JustPaste.it

// ==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);

}