// ==UserScript== // @name Reddit Fix // @namespace http://tampermonkey.net/ // @version 1.1 // @description Fix attempt of the infinite scroll, removes background effects on comments // @author Bum // @require http://code.jquery.com/jquery-3.4.1.min.js // @match https://www.reddit.com/* // @grant GM_addStyle // @downloadURL none // ==/UserScript== var holdTopicsInMemory = "false"; var commentEffects = "false"; var originalBehavior = "false"; if (localStorage.getItem("holdTopicsInMemory") != null) { holdTopicsInMemory = localStorage.getItem("holdTopicsInMemory"); } if (localStorage.getItem("commentEffects") != null) { commentEffects = localStorage.getItem("commentEffects"); } if (localStorage.getItem("originalBehavior") != null) { originalBehavior = localStorage.getItem("originalBehavior"); } var lastScrollTop = 0; var topicsInMemory = []; var isAPop = false; var maxOffset = 0; (function() { 'use strict'; function GM_addStyle(css) { const style = document.getElementById("GM_addStyle") || (function() { const style = document.createElement('style'); style.type = 'text/css'; style.id = "GM_addStyle"; document.head.appendChild(style); return style; })(); const sheet = style.sheet; sheet.insertRule(css, (sheet.rules || sheet.cssRules || []).length); } if (commentEffects == "false") { GM_addStyle ( 'img[src*="flame"]{display:none;}' ); GM_addStyle ( 'div[aria-role="presentation"]{box-shadow:none !important;background : transparent !important;}' ); } window.addEventListener('scroll', throttle(callback, 300)); function throttle(fn, wait) { var time = Date.now(); return function() { if ((time + wait - Date.now()) < 0) { fn(); time = Date.now(); } } } function getMenuItem(id, display) { return '
'+display+'
'; } function getCheckBoxItem(checked, id, display){ if (checked == 'true') return '
'+display+'
'; else return '
'+display+'
'; } function RemoveMenu(){ $("#redditFixReloadAll").remove(); $("#redditFixReload25").remove(); } function AddMenu(){ var menu = $("._2pUO1Sfe7WlIHvq6goN3Pz"); if (menu.find(".customRedditFixMenu").length > 0 ) return; menu.append(getMenuItem('redditFixReloadAll', 'Reload All')); $("#redditFixReloadAll").click(function(){ for (var i = topicsInMemory.length - 1; i >= 0; --i) { var el = topicsInMemory.pop(i); $(".rpBJOHq2PR60pnwJlUyP0").prepend(el); } maxOffset = $(document).height(); console.log(maxOffset); }); menu.append(getMenuItem('redditFixReload25', 'Reload 25')); $("#redditFixReload25").click(function(){ var reloadTill = topicsInMemory.length; if (reloadTill > 25) reloadTill = 25; for (var i = 0; i < 25; ++i) { var el = topicsInMemory.pop(i); $(".rpBJOHq2PR60pnwJlUyP0").prepend(el); } maxOffset = $(document).height(); console.log(maxOffset); }); } $("#email-collection-tooltip-id").click(function(){ function _appendMenu() { var menuMain = $('div[role="menu"]'); var isReady = menuMain.length > 0; if (!isReady) { setTimeout(_appendMenu, 100); return; } if (menuMain.find("#fixRedditCustomMenuB").length == 0){ menuMain.find('a:last').before(getCheckBoxItem(commentEffects, "redditFixCheckBoxBackground", "Comment effects")); $("#redditFixCheckBoxBackground").click(function(){ var btnBackgroundsChecked = $(this); if (btnBackgroundsChecked.hasClass("_1L5kUnhRYhUJ4TkMbOTKkI")){ btnBackgroundsChecked.removeClass("_1L5kUnhRYhUJ4TkMbOTKkI"); localStorage.setItem("commentEffects", false); commentEffects = "false"; } else{ btnBackgroundsChecked.addClass("_1L5kUnhRYhUJ4TkMbOTKkI"); localStorage.setItem("commentEffects", true); commentEffects = "true"; } }); menuMain.find('a:last').before(getCheckBoxItem(holdTopicsInMemory, "fixRedditKeepTopicsInMemory", "Save topics in ram")); $("#fixRedditKeepTopicsInMemory").click(function(){ var btnTopicsChecked = $(this); if (btnTopicsChecked.hasClass("_1L5kUnhRYhUJ4TkMbOTKkI")){ btnTopicsChecked.removeClass("_1L5kUnhRYhUJ4TkMbOTKkI"); localStorage.setItem("holdTopicsInMemory", false); holdTopicsInMemory = "false"; RemoveMenu(); } else{ btnTopicsChecked.addClass("_1L5kUnhRYhUJ4TkMbOTKkI"); localStorage.setItem("holdTopicsInMemory", true); holdTopicsInMemory = "true"; AddMenu(); } }); menuMain.find('a:last').before(getCheckBoxItem(originalBehavior, "fixRedditoriginalBehavior", "Original behavior")); $("#fixRedditoriginalBehavior").click(function(){ var btnTopicsChecked = $(this); if (btnTopicsChecked.hasClass("_1L5kUnhRYhUJ4TkMbOTKkI")){ btnTopicsChecked.removeClass("_1L5kUnhRYhUJ4TkMbOTKkI"); localStorage.setItem("originalBehavior", false); originalBehavior = "false"; } else{ btnTopicsChecked.addClass("_1L5kUnhRYhUJ4TkMbOTKkI"); localStorage.setItem("originalBehavior", true); originalBehavior = "true"; } }); menuMain.find("a:last").before('
'); } } _appendMenu(); }); function callback() { if (originalBehavior == "true") return; if (holdTopicsInMemory == "true") AddMenu(); var st = $(document).scrollTop(); if (st > maxOffset) { if (st > lastScrollTop){ $(".scrollerItem").slice(0,9).each(function(){ var el = $(this); if (el.offset().top == 0){ if (holdTopicsInMemory) topicsInMemory.push(el.parent().parent()); el.parent().parent().remove(); st = 0; } }); } lastScrollTop = st; maxOffset = 0; } } })();