// ==UserScript==
// @name Full subreddit menu
// @description Displays all your subreddits in the "My subreddits" dropdown menu instead of the default list capped at 50 items.
// @namespace raina
// @include /^https?:\/\/(\w+\.)?reddit\.com\//
// @version 1.0
// @grant none
// @downloadURL none
// ==/UserScript==
(function() {
"use strict";
if (window.top == window.self) {
var subs = JSON.parse(sessionStorage.getItem("subs"));
var edit = $('.srdrop.drop-choices .bottom-option');
var menu = $('.srdrop.drop-choices');
var list = "";
var renderSubs = function() {
list = '
';
$.each(subs, function(idx, sub) {
list += '- ' + sub + '
';
});
list += '- Refresh |
';
list += '
'
edit.css("border", "none");
edit.css("font-style", "normal");
menu.css("width", 'calc(100% - 16px)');
menu.html(list);
menu.find('#subs-tools').append(edit);
menu.find('#subs-tools a').css("display", "inline-block");
menu.find('#subs-tools #subs-refresh').click(refreshSubs);
};
var refreshSubs = function(ev) {
if ("init" !== ev) {
ev.preventDefault();
ev.stopPropagation();
}
$.get('/subreddits', function(response) {
var responseHTML = $(response);
var subGet = responseHTML.find('.subscription-box li a.title');
subs = [];
$.each(subGet, function(idx, el) {
subs.push(el.textContent);
});
sessionStorage.setItem("subs", JSON.stringify(subs));
renderSubs();
});
};
if (subs) {
renderSubs();
} else {
refreshSubs("init");
}
}
}());