// ==UserScript== // @name Misskey CW toggle // @description Adds a button to toggle the visibility of all notes with content warnings on note-pages. // @version 2023.1.26.2 // @author tastytea // @copyright 2022-2023, tastytea (https://tastytea.de/) // @license GPL-3.0-only // @namespace tastytea.de // @homepageURL https://schlomp.space/tastytea/userscripts // @supportURL https://schlomp.space/tastytea/userscripts/issues // @downloadURL https://schlomp.space/tastytea/userscripts/raw/branch/main/fediverse/misskey_cw_toggle.user.js // @grant none // @match https://*/notes/* // @run-at document-end // @inject-into content // ==/UserScript== let interval; let counter = 0; function get_root() { const root = document.getElementsByClassName("lxwezrsl note")[0]; // MK 13 if (root === undefined) { root = document.getElementsByClassName("_block note")[0]; // MK 12 } return root; } // Toggle the visibility of each status with CW. function toggle() { const root = get_root() if (root === undefined) { return; } const cw_classes = ["cw", "xpfPt"]; for (let classname of cw_classes) { for (let status of root.getElementsByClassName(classname)) { let button = status.getElementsByTagName("button")[0]; if (button === undefined) { continue; } button.click(); } } } // Add a “Toggle all CWs”-button. function add_button() { const root = get_root() if (root === undefined) { console.error("No suitable parent-element found."); return; } const button = document.createElement("button"); button.setAttribute("id", "global-cw-toggle"); button.setAttribute("class", "_button"); button.setAttribute("style", "margin-top: 0.2em; margin-right: 0.5em;"); button.appendChild(document.createTextNode("Toggle all CWs")); root.insertBefore(button, root.firstChild); button.onclick = toggle; } function check() { const root = get_root() if (root === undefined) { return; } // If there is a “Show content” button, add our button, if we didn't do so before. if (root.getElementsByClassName("cw").length > 0 && document.getElementById("global-cw-toggle") === null) { add_button(); console.debug("Global CW toggle button added"); } } interval = setInterval(check, 1000); // Try to add button every second.