vlr.gg user blocker

Block user posts on vlr.gg through the settings page

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         vlr.gg user blocker
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  Block user posts on vlr.gg through the settings page
// @author       You
// @match        https://www.vlr.gg/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// @license      MIT
// ==/UserScript==
//
(function() {
    'use strict';

    /*
    Adds the ability to block user messages on vlr.gg. Block and unblock users from the settings page of your vlr.gg profile.
    */


    function htmlToElement(html) {
    var template = document.createElement('template');
    html = html.trim();
    template.innerHTML = html;
    return template.content.firstChild;
}
    if(document.URL == "https://www.vlr.gg/settings"){
        // Creates unblock and block entry forms and buttons.
        let blocklist_div = document.createElement("div")
        blocklist_div.className = "wf-card mod-form mod-dark";
        let blocklist_blockedusers_label = htmlToElement("<div class=\"form-label\">Blocked Users</div>");
        let blocklist_blockedusers_p = document.createElement("p")
        let blocklist_block_label = htmlToElement("<div class=\"form-label\">Block a User</div>")
        let blocklist_unblock_label = htmlToElement("<div class=\"form-label\">Unblock a User</div>")
        let blocklist_block_entry = document.createElement("input")
        let blocklist_block_button = document.createElement("button")
        let blocklist_unblock_entry = document.createElement("input")
        let blocklist_unblock_button = document.createElement("button")

        let blocked_users_string = localStorage.getItem("saved_blocked_users")
        let blocked_users_array = blocked_users_string.split(",")
        // the blocked users list is stored as a string delimited by commas

        blocklist_blockedusers_p.innerText = (blocked_users_array)



        blocklist_block_button.innerText = "Block"
        blocklist_block_button.type = "button"
        blocklist_block_button.className = "btn"
        blocklist_block_button.onclick = function alertfromtestentry(){alert("Blocked " + blocklist_block_entry.value)
                                                                       blocked_users_array.push(blocklist_block_entry.value)
                                                                       localStorage.setItem("saved_blocked_users",blocked_users_array)
                                                                       blocklist_block_entry.value = ""
                                                                       blocklist_blockedusers_p.innerText = (blocked_users_array)
                                                                      }
        //Block users button creates alert, adjusts array and stored array, resets entry box and list

        blocklist_block_entry.type = "text"



        blocklist_unblock_button.innerText = "Unblock"
        blocklist_unblock_button.type = "button"
        blocklist_unblock_button.className = "btn"
        blocklist_unblock_button.onclick = function alertfromtestentry2(){alert("Unblocked " + blocklist_unblock_entry.value)
                                                                         let remove_index = (blocked_users_array.findIndex(element => element === blocklist_unblock_entry.value))
                                                                         if (remove_index >0){
                                                                             // findIndex() returns -1 if the element is not in the array.
                                                                             blocked_users_array.splice(remove_index,1)
                                                                         }
                                                                         localStorage.setItem("saved_blocked_users",blocked_users_array)
                                                                         blocklist_unblock_entry.value = ""
                                                                         blocklist_blockedusers_p.innerText = (blocked_users_array)
                                                                        }

        blocklist_unblock_entry.type = "text"

        let forms = document.getElementsByTagName("form");
        let form = forms[1];
        // all the grey blocks in the settings page are children of this form
        form.appendChild(blocklist_div);
        blocklist_div.appendChild(blocklist_blockedusers_label);
        blocklist_div.appendChild(blocklist_blockedusers_p);
        blocklist_div.appendChild(blocklist_block_label);
        blocklist_div.appendChild(blocklist_block_entry);
        blocklist_div.appendChild(blocklist_block_button);
        blocklist_div.appendChild(blocklist_unblock_label);
        blocklist_div.appendChild(blocklist_unblock_entry);
        blocklist_div.appendChild(blocklist_unblock_button);
    }




    let blocked_users_string = localStorage.getItem("saved_blocked_users")
    let blocked_users_array = blocked_users_string.split(",")
    let elemlist = document.getElementsByClassName("post-header-author mod-vlr"); //class for any post or reply on a thread page
    let blocklist = new Set(blocked_users_array);
    let deletelist = [];

    if(document.URL == "https://www.vlr.gg/threads"){
       let descs = document.getElementsByClassName("description") // class that contains the author of the post
       for(let i=0;i<descs.length;i++){
           try{
               let a_tag = descs[i].getElementsByTagName("a")
               a_tag = a_tag[0] // gets the <a> element that contains the author
               let post_author = a_tag.innerText
               if (blocklist.has(post_author)){
                   let parent_post = descs[i].parentElement;
                   parent_post = parent_post.parentElement; // selects whole post
                   deletelist.push(parent_post);

               }
           }
           catch (TypeError){ // in case of authorless posts
           }
       }
    }

    for (let index = 0; index < elemlist.length; index++) {
        console.log(elemlist[index].innerText)
    if(blocklist.has(elemlist[index].innerText)){

        let parent = elemlist[index].parentElement;
        parent = parent.parentElement; //to remove the entire post and not just the header
        deletelist.push(parent);
    }

}
    for (let index = 0; index<deletelist.length; index++){
        deletelist[index].remove()
    }

})();