Skip to content

Instantly share code, notes, and snippets.

@y-mamanaranu
Last active July 27, 2023 05:32
Show Gist options
  • Select an option

  • Save y-mamanaranu/9c85d2a5f89c7b7111cfd0c2356b3205 to your computer and use it in GitHub Desktop.

Select an option

Save y-mamanaranu/9c85d2a5f89c7b7111cfd0c2356b3205 to your computer and use it in GitHub Desktop.
Hide spesific servers from Disboard

Hide spesific servers from Disboard

Hide spesific servers from Disboard. Add ID of server to config pane.

Disboardで特定のサーバーを非表示にする。 例外設定から除外するサーバーのIDを追加する。

Config

スクリーンショット 2022-05-21 19 51 39

スクリーンショット 2022-05-21 19 53 18

Links

// ==UserScript==
// @name Disboard - Hide Servers
// @namespace https://github.com/y-mamanaranu
// @license MIT
// @version 0.1.4
// @description Hide spesific servers from Disboard
// @description:ja Disboardで特定のサーバーを非表示にする
// @author Yoiduki <y-mamanaranu>
// @match https://disboard.org/*
// @exclude https://disboard.org/*/server/*
// @exclude https://disboard.org/*/dashboard/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=disboard.org
// @require https://openuserjs.org/src/libs/sizzle/GM_config.js
// @grant GM.getValue
// @grant GM.setValue
// @supportURL https://gist.github.com/y-mamanaranu/9c85d2a5f89c7b7111cfd0c2356b3205
// ==/UserScript==
(function() {
'use strict';
let gmc = new GM_config(
{
'id': 'MyConfig', // The id used for this instance of GM_config
'fields': // Fields object
{
"SectionExceptServer":{
'section': ['Except Server'],
'type': 'hidden', // Makes this setting a hidden input
'value': '' // Value stored
},
'EnableExceptServer':
{
'label': 'Enable', // Appears next to field
'type': 'checkbox', // Makes this setting a checkbox input
'default': true // Default value if user doesn't change it
},
'ReverseExceptServer':
{
'label': 'Reverse', // Appears next to field
'type': 'checkbox', // Makes this setting a checkbox input
'default': false // Default value if user doesn't change it
},
'ExceptServer': // This is the id of the field
{
'label': 'Server List', // Appears next to field
'type': 'textarea', // Makes this setting a text field
'default': '', // Default value if user doesn't change it
rows: 20,
cols: 120,
},
"SectionExceptTag":{
'section': ['Except Tag'],
'type': 'hidden', // Makes this setting a hidden input
'value': '' // Value stored
},
'EnableExceptTag':
{
'label': 'Enable', // Appears next to field
'type': 'checkbox', // Makes this setting a checkbox input
'default': true // Default value if user doesn't change it
},
'ReverseExceptTag':
{
'label': 'Reverse', // Appears next to field
'type': 'checkbox', // Makes this setting a checkbox input
'default': false // Default value if user doesn't change it
},
'ExceptTag': // This is the id of the field
{
'label': 'Tag List', // Appears next to field
'type': 'textarea', // Makes this setting a text field
'default': '', // Default value if user doesn't change it
rows: 20,
cols: 120,
},
"SectionReload":{
'section': ['Reload'],
'type': 'hidden', // Makes this setting a hidden input
'value': '' // Value stored
},
'SaveandReload':
{
'label': 'Save and Reload', // Appears on the button
'type': 'button', // Makes this setting a button input
'size': 100, // Control the size of the button (default is 25)
'click': function() { // Function to call when button is clicked
gmc.save();
location.reload();
}
}
},
'events': {
'init': onInit
}
});
function onInit() {
// initialization complete
// value is now available
createConfig();
addExceptButton();
hideListedServer();
hideListedTag();
}
// Except Server
const getServerId = () => {
var ecept_server = gmc.get('ExceptServer');
ecept_server = ecept_server.split('\n');
ecept_server = ecept_server.map(server => server.trim());
ecept_server = ecept_server.filter(server => server)
ecept_server = ecept_server.filter(server => !server.startsWith("//"));
return ecept_server
}
const judgeServer = (elem) => {
var serverjoin = elem.getElementsByClassName("server-join")[0];
var a = serverjoin.getElementsByTagName("a")[0];
var num = a.getAttribute("data-id");
return getServerId().includes(num);
}
const hideListedServer_sub = (elem) => {
if (elem.style.display !="none" ){
if (judgeServer(elem)){
elem.style.display="none";
}
}
}
const hideListedServer_sub_reverse = (elem) => {
if (elem.style.display !="none" ){
if (!judgeServer(elem)){
elem.style.display="none";
}
}
}
const hideListedServer = () => {
var enable_server = gmc.get('EnableExceptServer');
if (enable_server) {
var reverse = gmc.get('ReverseExceptServer');
var column = document.getElementsByClassName("column is-half-tablet");
column = Array.from(column);
if (reverse) {
column.forEach((elem) => hideListedServer_sub_reverse(elem));
} else {
column.forEach((elem) => hideListedServer_sub(elem));
}
}
}
// Except Tag
const getTag = () => {
var ecept_tag = gmc.get('ExceptTag');
ecept_tag = ecept_tag.split('\n');
ecept_tag = ecept_tag.map(server => server.trim());
ecept_tag = ecept_tag.filter(server => server)
ecept_tag = ecept_tag.filter(server => !server.startsWith("//"));
return ecept_tag
}
const judgeTag = (elem) => {
var tag = elem.getElementsByClassName("tag");
var tag_list = getTag();
tag = Array.from(tag);
tag = tag.map((elem) => elem.getAttribute("title"));
tag = tag.filter(elem => tag_list.includes(elem))
return tag.length > 0;
}
const hideListedTag_sub = (elem) => {
if (elem.style.display !="none" ){
if (judgeTag(elem)){
elem.style.display="none";
}
}
}
const hideListedTag_sub_reverse = (elem) => {
if (elem.style.display !="none" ){
if (!judgeTag(elem)){
elem.style.display="none";
}
}
}
const hideListedTag = () => {
var enable_server = gmc.get('EnableExceptTag');
if (enable_server) {
var reverse = gmc.get('ReverseExceptTag');
var column = document.getElementsByClassName("column is-half-tablet");
column = Array.from(column);
if (reverse) {
column.forEach((elem) => hideListedTag_sub_reverse(elem));
} else {
column.forEach((elem) => hideListedTag_sub(elem));
}
}
}
// Create Config
const createConfig = () => {
var user_menu = document.getElementById("dropdown-user-menu");
var content = user_menu.getElementsByClassName("dropdown-content")[0];
var a = document.createElement("a");
var divider = content.getElementsByClassName("dropdown-divider")[0];
content.insertBefore(a, divider);
a.classList.add("dropdown-item")
a.onclick = function() {
gmc.open();
};
var span = document.createElement("span");
span.textContent = "除外設定";
a.appendChild(span);
}
// Add excpept button for each server
const addExceptButton = () => {
var div_list = document.getElementsByClassName("column is-half-tablet");
div_list = Array.from(div_list);
div_list.forEach((elem) => {
elem.getElementsByClassName("dropdown-menu");
var menu = elem.getElementsByClassName("dropdown-menu")[0];
var ul = menu.getElementsByTagName("ul")[0];
var li = document.createElement("li");
ul.appendChild(li);
var a = document.createElement("a");
li.appendChild(a);
a.textContent="除外";
a.classList.add("dropdown-item");
var res = menu.id.split("-");
var id = res[res.length-1];
a.onclick = function() {
var ecept_server = gmc.get('ExceptServer');
ecept_server = ecept_server + "\n" + id;
gmc.set("ExceptServer", ecept_server);
gmc.save();
elem.style.display="none";
};
});
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment