Please add an option to hide threads. There are many threads I don't want to see when browsing the overboard
Maybe it'll get added in future, but for now u should A. use an adblocker on those threads, B. uncheck the boards u find objectionable in the overboard board filters, or C. GTFOJust don't go mass-bumping other threads to push the threads u don't like off the front page, liek a "certain someone" normally does
>"certain someone" There's a user known for this specifically?
>There's a user known for this specifically?Unfortunately so, although there'll be backend changes in the near future that should prevent this kind of "bump manipulation"
A-B you can also hide it using custom css in settings, no plugins:#t123456 {display: none;}
#t123456 {display: none;}
>>68032The problem with the adblocker is that the element zapper doesn't save, so I will see the thread again when I refresh. Although using custom css solves this problem. There is really only 1 thread I want to hide anyway.>>68035Thanks, this works perfectly.
>The problem with the adblocker is that the element zapper doesn't saveOn uBlock Origin, the element zapper is intended to be temporary - the element picker is the one to use for permanent blocking
I understand, being forced to look at AIDS makes me not want to come here. If you have a userscript plugin like Violentmonkey, you can use this (it works in overboard too):// ==UserScript==// @name heyuri// @namespace filterstuff// @include *.heyuri.net/*// @version 1// @grant none// @run-at document-end// ==/UserScript=={ // Get board name from the current URL! let board = document.location.pathname.substring(1, document.location.pathname.indexOf("/",1)); // Get filters from the browser's local storage! let filters = localStorage.getItem("filters"); try { filters = JSON.parse(filters); } catch (e) {} // Fix the variable if it's invalid! if (!filters || typeof filters !== "object") filters = {}; // Make sure the filters object has an array for this board! if (!filters[board]) filters[board] = []; function hide (event) { // If didn't click with the left mouse button, don't do anything! if (event.button !== 0) return; // Prevent the click from doing anything else by accident! event.stopPropagation(); // Add this post number into the filters! let num = Number(this.dataset.num); filters[board].push(num); localStorage.setItem("filters", JSON.stringify(filters)); // Hide the post! let post = this.parentNode.parentNode; if (post.classList.contains("op")) { post.parentNode.style.display = "none"; } else { post.style.display = "none"; } } // Loop through threads on the page! let posts = document.getElementsByClassName("post"); for (let post of posts) { // Get post number from the ID! let num = Number(post.id.replace(/[^0-9]/g,'')); // Hide this post if it was filtered in the past! if (filters[board].includes(num)) { // If this post is OP, hide the entire thread! if (post.classList.contains("op")) { post.parentNode.style.display = "none"; } else { post.style.display = "none"; } } // Add button for hiding the post! let button = document.createElement("a"); button.innerHTML = "[Hide]"; button.style.cursor = "pointer"; button.dataset.num = num; button.addEventListener("click", hide); post.getElementsByClassName("postinfo")[0].append(button); }}
// ==UserScript==// @name heyuri// @namespace filterstuff// @include *.heyuri.net/*// @version 1// @grant none// @run-at document-end// ==/UserScript=={ // Get board name from the current URL! let board = document.location.pathname.substring(1, document.location.pathname.indexOf("/",1)); // Get filters from the browser's local storage! let filters = localStorage.getItem("filters"); try { filters = JSON.parse(filters); } catch (e) {} // Fix the variable if it's invalid! if (!filters || typeof filters !== "object") filters = {}; // Make sure the filters object has an array for this board! if (!filters[board]) filters[board] = []; function hide (event) { // If didn't click with the left mouse button, don't do anything! if (event.button !== 0) return; // Prevent the click from doing anything else by accident! event.stopPropagation(); // Add this post number into the filters! let num = Number(this.dataset.num); filters[board].push(num); localStorage.setItem("filters", JSON.stringify(filters)); // Hide the post! let post = this.parentNode.parentNode; if (post.classList.contains("op")) { post.parentNode.style.display = "none"; } else { post.style.display = "none"; } } // Loop through threads on the page! let posts = document.getElementsByClassName("post"); for (let post of posts) { // Get post number from the ID! let num = Number(post.id.replace(/[^0-9]/g,'')); // Hide this post if it was filtered in the past! if (filters[board].includes(num)) { // If this post is OP, hide the entire thread! if (post.classList.contains("op")) { post.parentNode.style.display = "none"; } else { post.style.display = "none"; } } // Add button for hiding the post! let button = document.createElement("a"); button.innerHTML = "[Hide]"; button.style.cursor = "pointer"; button.dataset.num = num; button.addEventListener("click", hide); post.getElementsByClassName("postinfo")[0].append(button); }}