// ==UserScript==
// @name kbin enhancement script
// @description Few small changes to the kbin UI while they still develop some features. Based on https://greasyfork.org/en/scripts/468612-kbin-enhancement-script/code
// @namespace social.kbin.Deref
// @license MIT
// @version 1.3.1
// @grant none
// @run-at document-end
// @match https://fedia.io/*
// @match https://kbin.social/*
// @downloadURL none
// ==/UserScript==
(function(){
function getSetting(setting) {
let value = localStorage.getItem("setting-" + setting);
if (value === null)
value = "true";
return value === "true";
}
function setSetting(setting, value) {
localStorage.setItem("setting-" + setting, value);
location.reload();
}
function addDomain(link) {
const parts = link.title.split("@");
if (parts[2] !== location.hostname) {
const linkText = link.childNodes[link.childNodes.length-1];
const textNode = document.createTextNode("@" + parts[2]);
link.after(textNode);
}
}
function addDomains() {
if (location.pathname.startsWith('/m')) {
document.querySelectorAll(".magazine-inline, .user-inline").forEach(link => {
addDomain(link);
})
} else {
document.querySelectorAll(".magazine-inline").forEach(link => {
addDomain(link);
})
}
}
function getComments(comment, allComments) {
const id = comment.id.split('-')[2];
allComments.push(comment);
const subComments = comment.parentElement.querySelectorAll('blockquote[data-subject-parent-value="'+id+'"]');
subComments.forEach(blockquote => { getComments(blockquote, allComments); });
}
function getCollapsos(comment, allCollapsos) {
const id = comment.id.split('-')[2];
if (comment.classList.contains('kes-expand'))
allCollapsos.push(comment);
const subComments = comment.parentElement.querySelectorAll('blockquote[data-subject-parent-value="'+id+'"]');
subComments.forEach(blockquote => { getCollapsos(blockquote, allCollapsos); });
}
function expandComment(blockquote) {
const allComments = [];
getComments(blockquote, allComments);
allComments.forEach(comment => { comment.style.display="" });
// Just remove all these for now, don't want to figure out how to do this cleanly right now.
const allCollapsos = [];
getCollapsos(blockquote, allCollapsos);
allCollapsos.forEach(comment => { comment.remove() });
}
function collapseComment(blockquote) {
const id = blockquote.id.split('-')[2];
let commentLevel = "1";
blockquote.classList.forEach(classItem => {
if (classItem.includes("comment-level"))
commentLevel = classItem.split("--")[1];
});
const allComments = [];
getComments(blockquote, allComments);
allComments.forEach(comment => { comment.style.display="none" });
const username = blockquote.querySelector("header a").innerText;
const newBlockquote = document.createElement('blockquote');
newBlockquote.className = 'kes-expand section comment entry-comment comment-level--' + commentLevel;
newBlockquote.dataset.subjectParentValue = id;
newBlockquote.innerHTML = '