netuoso / Hide Voted Posts on Steem

// ==UserScript==
// @name         Hide Voted Posts on Steem
// @namespace    http://tampermonkey.net/
// @version      2.0
// @description  Hide already voted posts on SteemIt.com
// @author       netuoso
// @match        https://steemit.com/*
// @grant        WTFPL
// ==/UserScript==

function hideVotedPosts() {
    // Get all posts votes count
    var elements = document.getElementsByClassName("VotesAndComments__votes");
    // Loop over the posts and hide the entire post if there are votes
    // 0 votes has title of "no votes"
    for (var i=0; i<elements.length; i++) {
        var votes = elements[i].getAttribute('title');
        if (votes !== "no votes") {
            elements[i].parentElement.parentElement.parentElement.parentElement.parentElement.style.display="none";
        }
    }
}

function showVotedPosts() {
    // Get all posts
    var elements = document.getElementsByClassName("PostSummary");
    var footerElements = document.getElementsByClassName("PostSummary__footer");
    // Loop over the posts and unhide them
    for (var i=0; i<elements.length; i++) {
        elements[i].parentElement.style.display="list-item";
        footerElements[i].style.display = "list-item";
    }
}

function toggleAutoFilter(setting) {
    if (setting == "enable" ) {
        hideVotedPosts();
        document.getElementById("enableFilterLink").style.display = "none";
        document.getElementById("disableFilterLink").style.display = "inline-block";

        // Enable auto filtering
        document.getElementsByClassName("PostsList__summaries")[0].addEventListener("DOMNodeInserted", function(event) {
            hideVotedPosts();
        });
    } else {
        showVotedPosts();
        document.getElementById("disableFilterLink").style.display = "none";
        document.getElementById("enableFilterLink").style.display = "inline-block";

        // Disable auto filtering
        // Enable auto filtering
        document.getElementsByClassName("PostsList__summaries")[0].addEventListener("DOMNodeInserted", function(event) {
            showVotedPosts();
        });
    }
}

/*--- Note, gmMain () will fire under all these conditions:
    1) The page initially loads or does an HTML reload (F5, etc.).
    2) The scheme, host, or port change.  These all cause the browser to
       load a fresh page.
    3) AJAX changes the URL (even if it does not trigger a new HTML load).
*/
var fireOnHashChangesToo    = true;
var pageURLCheckTimer       = setInterval (
    function () {
        if ( this.lastPathStr  !== location.pathname || this.lastQueryStr !== location.search || (fireOnHashChangesToo && this.lastHashStr !== location.hash) ) {
            this.lastPathStr  = location.pathname;
            this.lastQueryStr = location.search;
            this.lastHashStr  = location.hash;
            gmMain ();
        }
    }, 111
);

function gmMain () {
    // Create a button called "Hide Voted Posts"
    var enableWrapper = document.createElement("li");
    enableWrapper.id = "enableFilterLink";
    enableWrapper.className = "votedScript";
    var enableLink = document.createElement("a");
    enableLink.innerHTML = "hide voted posts";
    enableLink.onclick = function() { toggleAutoFilter("enable"); };
    enableLink.style.pointer = "cursor";
    enableWrapper.appendChild(enableLink);

    // Create a button called "Hide Voted Posts"
    var disableWrapper = document.createElement("li");
    disableWrapper.id = "disableFilterLink";
    disableWrapper.className = "votedScript";
    var disableLink = document.createElement("a");
    disableLink.innerHTML = "show voted posts";
    disableLink.onclick = function() { toggleAutoFilter("disable"); };
    disableLink.style.pointer = "cursor";
    disableWrapper.appendChild(disableLink);
    disableWrapper.style.display = "none";

    try {
        // Append the link to the navigation bar on the top of the screen
        if (window.location.href.indexOf("created") > 0) {
            if (document.getElementsByClassName("votedScript").length === 0) {
                // Append the link to the navigation bar on the top of the screen
                document.getElementsByClassName('HorizontalMenu')[0].appendChild(enableWrapper);
                document.getElementsByClassName('HorizontalMenu')[0].appendChild(disableWrapper);
            } else {
                document.getElementsByClassName("votedScript")[0].style.display = "inline-block";
            }
        } else {
            if (document.getElementsByClassName("votedScript").length > 0) {
                for (i=0;document.getElementsByClassName("votedScript").length;i++) {
                    document.getElementsByClassName("votedScript")[i].style.display = "none";
                }
            }
        }
    } catch (e) {}
}