Few small changes to the kbin UI while they still develop some features
目前為
// ==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/*
// ==/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 = `<span>Show domains:</span>
<div>
<a class="kes-setting-yes link-muted ${settingValue ? 'active' : ''}" href="javascript:;" data-setting="${setting}">
Yes
</a>
|
<a class="kes-setting-no link-muted ${settingValue ? '' : 'active'}" href="javascript:;" data-setting="${setting}">
No
</a>
</div>`;
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();
})();