Cleanddit

Remove some annoying things

// ==UserScript==
// @name         Cleanddit
// @namespace    http://tampermonkey.net/
// @version      0.12
// @description  Remove some annoying things
// @author       deibit
// @license      MIT
// @match        https://*.reddit.com/*
// @icon         https://reddit.com/favicon.ico
// @grant        none
// ==/UserScript==

function removeElements() {
    // Remove promoted post
    let promoted = document.body.getElementsByClassName("promotedlink");
    for (var i = 0; i < promoted.length; i++) {
        promoted[i].parentElement.removeChild(promoted[i]);
    }

    // Remove popup for Notifications
    let popups = document.querySelectorAll('[id^="popup"]');
    for ( i = 0; i < popups.length; i++) {
        popups[i].parentElement.removeChild(popups[i]);
    }


    // Banned
    let banned_words = ["Popular", "Similar", "Because"];
    for (let idx = 0; idx < banned_words.length; idx++) {
        let banned = banned_words[idx];
        let targets = document.querySelectorAll('[id="-post-rtjson-content"]');
        for (let i = 0; i < targets.length ; i++) {
            if (targets[i].childNodes[1].textContent.includes(banned)) {
                targets[i].parentElement.removeChild(targets[i]);
            }
        }
    }

    // AntiJoin
    let joins = document.getElementsByTagName("shreddit-join-button");
    for (let i = 0; i < joins.length; i++) {
        joins[i].parentElement.parentElement.parentElement.remove();
    }


    // Remove "Create Post" popup
    let createPostPopup = document.getElementsByClassName("_3q-XSJ2vokDQrvdG6mR__k");
    if (createPostPopup.length > 0) {
        createPostPopup[0].remove();
    }
}

var MutationObserver = window.MutationObserver;
var myObserver = new MutationObserver(removeElements);
var obsConfig = {
    childList: true,
    attributes: true,
    subtree: true,
    attributeFilter: ["class"],
};

myObserver.observe(document, obsConfig);