// ==UserScript== // @name kbin enhancement script // @description Few small changes to the kbin UI while they still develop some features // @namespace com.sirpsychomantis // @license MIT // @version 1.2 // @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]; linkText.nodeValue += "@" + parts[2]; } } 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 generateSettingDiv(setting) { const settingValue = getSetting(setting); const newDiv = document.createElement('div'); newDiv.className = "row"; newDiv.innerHTML = `Show domains:
`; return newDiv; } function addHTMLSettings() { const settingsList = document.querySelector(".settings-list"); const header = document.createElement('strong'); header.textContent = "kbin enhancement script"; settingsList.appendChild(header); settingsList.appendChild(generateSettingDiv("show-domains")); document.querySelectorAll(".kes-setting-yes").forEach(link => {link.addEventListener("click", () => {setSetting(link.dataset.setting, true)})}); document.querySelectorAll(".kes-setting-no").forEach(link => {link.addEventListener("click", () => {setSetting(link.dataset.setting, false)})}); } addHTMLSettings(); if (getSetting("show-domains")) addDomains(); })();