bodemenelau / Muquiranas++

// ==UserScript==
// @name         Muquiranas++
// @version      0.1
// @match        https://muquiranas.com/*/
// @namespace    com.muquiranas
// @author       BodeMenelau
// @description  Permite ignorar comentarios de usuarios especificos no blog muquiranas.com
// @license      MIT
// @homepageURL  https://openuserjs.org/scripts/bodemenelau/Muquiranas++
// @downloadURL  https://openuserjs.org/install/bodemenelau/Muquiranas++.user.js
// @updateURL    https://openuserjs.org/meta/bodemenelau/Muquiranas++.meta.js
// @grant        GM.setValue
// @grant        GM.getValue
// @grant        GM.deleteValue
// ==/UserScript==

// ==OpenUserJS==
// @author bodemenelau
// ==/OpenUserJS==

(async function () {
    'use strict';

    var version = "0.1";
    var ignoredUsers = await GM.getValue("ignoredUsers",'{"ignored":[]}');
    if (typeof ignoredUsers == "string") ignoredUsers = JSON.parse(ignoredUsers);
    var ignorados = "lista vazia";
    if (ignoredUsers.ignored.length > 0) ignorados = ignoredUsers.ignored.join(", ");
    var muqPP = `
    <li id="muquiranaspp">
        <div style="visibility: visible !important; box-sizing: border-box; background-color: #fff; border: solid 1px #dfdfdf; color: #333; padding: 9px; overflow: auto; margin-bottom: 11px; transition: background-color 0.25s ease-in; border-radius: 3px;">
            <cite>Muquiranas++ ${version}</cite>
            <div class="comment-buttons">Usuários ignorados: ${ignorados} <a id="resetBtn">Resetar</a></div>
        </div>
    </li>
    `;

    var cmtLst = document.getElementById('commentlist');
    cmtLst.insertAdjacentHTML('afterbegin', muqPP);
    var resetBtn = document.getElementById('resetBtn');
    resetBtn.onclick = async () => {
        await GM.deleteValue("ignoredUsers");
        location.reload();
    }

    document.getElementById("respond").className = "trackback-toggle";

    var comments = cmtLst.getElementsByClassName("comment-body");
    Array.from(comments).forEach((comment) => {
        var commentAuthor = comment.childNodes[3].childNodes[1].childNodes[1].textContent;
        if (ignoredUsers.ignored.includes(commentAuthor)) {
            comment.innerHTML = "";
            var ignoredDiv = document.createElement("div");
            ignoredDiv.className = "comment-buttons";
            ignoredDiv.innerHTML = `${commentAuthor} ignorado `;
            var desfazerBtn = document.createElement("a");
            desfazerBtn.innerHTML = "Desfazer";
            desfazerBtn.onclick = async () => {
                var index = ignoredUsers.ignored.indexOf(commentAuthor);
                if (index > -1) {
                    ignoredUsers.ignored.splice(index, 1);
                    await GM.setValue("ignoredUsers", ignoredUsers);
                    location.reload();
                }
            };
            ignoredDiv.insertAdjacentElement("beforeend", desfazerBtn);
            comment.appendChild(ignoredDiv);
        }
        else {
            var ignoreBtn = document.createElement("a");
            ignoreBtn.innerHTML = "Ignorar";
            ignoreBtn.onclick = async () => {
                ignoredUsers.ignored.push(commentAuthor);
                await GM.setValue("ignoredUsers", ignoredUsers);
                location.reload();
            };
            comment.childNodes[3].childNodes[5].appendChild(ignoreBtn);
        }
    });
})();