NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Reddit custom multireddit buttons
// @namespace https://github.com/Farow/userscripts
// @description Adds custom buttons to the multireddit list
// @include /^https?:\/\/[a-z]+\.reddit\.com\/(?:explore|user\/[\da-z_]+\/saved|r\/(?:all|mod))?/
// @version 1.00
// @homepageURL https://github.com/Farow/userscripts
// @grant none
// ==/UserScript==
"use strict";
var make_smaller = 1; /* makes the buttons above the multireddit list have the same size as the multireddit buttons */
var remove_subscribed = 1;
var remove_explore = 1;
var remove_explore_multis = 1;
var remove_create_multi = 1;
var remove_other = 1; /* remove all other buttons below the multireddit list (everything, moderating, saved) */
var custom_buttons = {
"everything": "/r/all/",
"saved": "/user/user/saved/",
};
function create_buttons () {
var global = document.getElementsByClassName("global")[0];
var buttons = global.children;
/* live list, remove backwards so as not to skip elements */
for (let i = buttons.length - 1; i > -1; i--) {
if (buttons[i].firstChild.getAttribute("href") == "/" && remove_subscribed) {
global.removeChild(buttons[i]);
}
else if (buttons[i].firstChild.getAttribute("href") == "/explore" && remove_explore) {
global.removeChild(buttons[i]);
}
}
/* this one is in the multis list, second to last */
if (remove_explore_multis) {
let multis = document.getElementsByClassName("multis")[0];
multis.removeChild(multis.children[ multis.children.length - 2 ]);
}
if (remove_explore_multis) {
let multis = document.getElementsByClassName("multis")[0];
multis.removeChild(multis.children[ multis.children.length - 1 ]);
}
/* remove other links */
if (remove_other) {
let other = document.getElementsByClassName("other")[0];
other.parentNode.removeChild(other);
}
/* add custom buttons */
for (let name in custom_buttons) {
create_button(name, custom_buttons[name]);
}
/* apply multi css to global links */
if (make_smaller) {
global.classList.remove("global");
global.classList.add("multis");
global.style.setProperty("margin-top", "10px");
}
/* apply selected style to custom links */
for (let i = 0; i < buttons.length; i++) {
let button_url = buttons[i].firstChild.href;
/* remove trailing slash */
if (button_url.substr(-1) == '/') {
button_url = button_url.slice(0, -1);
}
if (document.URL.indexOf(button_url) > -1) {
buttons[i].classList.add("selected");
break;
}
}
}
function create_button (name, url) {
var button = document.createElement("li");
var link = document.createElement("a");
link.textContent = name;
link.href = url;
button.appendChild(link);
document.getElementsByClassName("global")[0].appendChild(button);
}
try {
create_buttons();
}
catch (e) {
console.log(e.message);
}