BetterDiscordAddons/Plugins/EditServers/EditServers.plugin.js

1067 lines
48 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//META{"name":"EditServers","website":"https://github.com/mwittrien/BetterDiscordAddons/tree/master/Plugins/EditServers","source":"https://raw.githubusercontent.com/mwittrien/BetterDiscordAddons/master/Plugins/EditServers/EditServers.plugin.js"}*//
class EditServers {
getName () {return "EditServers";}
getVersion () {return "2.1.5";}
getAuthor () {return "DevilBro";}
getDescription () {return "Allows you to change the icon, name and color of servers.";}
constructor () {
this.changelog = {
"improved":[["Serveracronyms","You can now choose to use the native serveracronym for servers without icons even if you set a local custom servername"],["New Library Structure & React","Restructured my Library and switched to React rendering instead of DOM manipulation"]]
};
this.patchedModules = {
before: {
Guild: "render",
GuildIconWrapper: "render",
MutualGuilds: "render",
FriendRow: "render",
QuickSwitcher: "render",
QuickSwitchChannelResult: "render",
GuildSidebar: "render",
GuildHeader: "render"
},
after: {
Guild: "render",
BlobMask: "render",
GuildIconWrapper: "render",
GuildIcon: "render",
GuildHeader: "render"
}
};
}
initConstructor () {
this.defaults = {
settings: {
addOriginalTooltip: {value:true, inner:false, description:"Hovering over a changed Server Header shows the original Name as Tooltip"},
changeInGuildList: {value:true, inner:true, description:"Server List"},
changeInMutualGuilds: {value:true, inner:true, description:"Mutual Servers"},
changeInQuickSwitcher: {value:true, inner:true, description:"Quick Switcher"},
changeInGuildHeader: {value:true, inner:true, description:"Server Header"}
}
};
}
getSettingsPanel () {
if (!global.BDFDB || typeof BDFDB != "object" || !BDFDB.loaded || !this.started) return;
let settings = BDFDB.DataUtils.get(this, "settings");
let settingspanel, settingsitems = [], inneritems = [];
for (let key in settings) (!this.defaults.settings[key].inner ? settingsitems : inneritems).push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSaveItem, {
className: BDFDB.disCN.marginbottom8,
type: "Switch",
plugin: this,
keys: ["settings", key],
label: this.defaults.settings[key].description,
value: settings[key]
}));
settingsitems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsPanelInner, {
title: "Change Servers in:",
first: settingsitems.length == 0,
children: inneritems
}));
settingsitems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, {
type: "Button",
className: BDFDB.disCN.marginbottom8,
color: BDFDB.LibraryComponents.Button.Colors.RED,
label: "Reset all Servers",
onClick: _ => {
BDFDB.ModalUtils.confirm(this, "Are you sure you want to reset all Servers?", () => {
BDFDB.DataUtils.remove(this, "servers");
BDFDB.ModuleUtils.forceAllUpdates(this);;
});
},
children: BDFDB.LanguageUtils.LanguageStrings.RESET
}));
return settingspanel = BDFDB.PluginUtils.createSettingsPanel(this, settingsitems);
}
//legacy
load () {}
start () {
if (!global.BDFDB) global.BDFDB = {myPlugins:{}};
if (global.BDFDB && global.BDFDB.myPlugins && typeof global.BDFDB.myPlugins == "object") global.BDFDB.myPlugins[this.getName()] = this;
var libraryScript = document.querySelector('head script#BDFDBLibraryScript');
if (!libraryScript || (performance.now() - libraryScript.getAttribute("date")) > 600000) {
if (libraryScript) libraryScript.remove();
libraryScript = document.createElement("script");
libraryScript.setAttribute("id", "BDFDBLibraryScript");
libraryScript.setAttribute("type", "text/javascript");
libraryScript.setAttribute("src", "https://mwittrien.github.io/BetterDiscordAddons/Plugins/BDFDB.min.js");
libraryScript.setAttribute("date", performance.now());
libraryScript.addEventListener("load", () => {this.initialize();});
document.head.appendChild(libraryScript);
}
else if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) this.initialize();
this.startTimeout = setTimeout(() => {
try {return this.initialize();}
catch (err) {console.error(`%c[${this.getName()}]%c`, "color: #3a71c1; font-weight: 700;", "", "Fatal Error: Could not initiate plugin! " + err);}
}, 30000);
}
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.PluginUtils.init(this);
BDFDB.ModuleUtils.patch(this, BDFDB.LibraryModules.IconUtils, "getGuildBannerURL", {instead:e => {
let guild = BDFDB.LibraryModules.GuildStore.getGuild(e.methodArguments[0].id);
if (guild) {
if (e.methodArguments[0].id == "410787888507256842") return guild.banner;
let data = BDFDB.DataUtils.load(this, "servers", guild.id);
if (data && data.banner && !data.removeBanner) return data.banner;
}
return e.callOriginalMethod();
}});
BDFDB.ModuleUtils.patch(this, BDFDB.LibraryComponents.GuildComponents.Guild.prototype, "render", {
before: e => {this.processGuild({instance:e.thisObject, returnvalue:e.returnValue, methodname:"render"});},
after: e => {this.processGuild({instance:e.thisObject, returnvalue:e.returnValue, methodname:"render"});}
});
BDFDB.ModuleUtils.patch(this, BDFDB.LibraryComponents.Connectors.Link.prototype, "render", {
after: e => {
if (e.thisObject.props.className && e.thisObject.props.className.indexOf(BDFDB.disCN.guildiconwrapper) > -1) this.processGuildAcronym({instance:e.thisObject, returnvalue:e.returnValue, methodname:"render"});
}
});
BDFDB.ModuleUtils.forceAllUpdates(this);;
}
else console.error(`%c[${this.getName()}]%c`, "color: #3a71c1; font-weight: 700;", "", "Fatal Error: Could not load BD functions!");
}
stop () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
this.stopping = true;
let data = BDFDB.DataUtils.load(this, "servers");
BDFDB.DataUtils.remove(this, "servers");
try {BDFDB.ModuleUtils.forceAllUpdates(this);;} catch (err) {}
BDFDB.DataUtils.save(data, this, "servers");
for (let guildobj of BDFDB.GuildUtils.getAll()) if (guildobj.instance) {
delete guildobj.instance.props.guild.EditServersCachedBanner;
}
BDFDB.PluginUtils.clear(this);
}
}
// begin of own functions
onGuildContextMenu (e) {
if (e.instance.props.guild) {
let [children, index] = BDFDB.ReactUtils.findChildren(e.returnvalue, {name:["FluxContainer(MessageDeveloperModeGroup)", "DeveloperModeGroup"]});
children.splice(index > -1 ? index : children.length, 0, BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItems.Group, {
children: [
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItems.Sub, {
label: this.labels.context_localserversettings_text,
render: [BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItems.Group, {
children: [
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItems.Item, {
label: this.labels.submenu_serversettings_text,
action: _ => {
BDFDB.ContextMenuUtils.close(e.instance);
this.showServerSettings(e.instance.props.guild.id);
}
}),
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItems.Item, {
label: this.labels.submenu_resetsettings_text,
disabled: !BDFDB.DataUtils.load(this, "servers", e.instance.props.guild.id),
action: _ => {
BDFDB.ContextMenuUtils.close(e.instance);
BDFDB.DataUtils.remove(this, "servers", e.instance.props.guild.id);
BDFDB.ModuleUtils.forceAllUpdates(this);;
}
})
]
})]
})
]
}));
}
}
processGuild (e) {
if (e.instance.props.guild && BDFDB.DataUtils.get(this, "settings", "changeInGuildList")) {
e.instance.props.guild = this.getGuildData(e.instance.props.guild.id);
if (e.returnvalue) {
let data = BDFDB.DataUtils.load(this, "servers", e.instance.props.guild.id);
if (data && (data.color3 || data.color4)) {
let [children, index] = BDFDB.ReactUtils.findChildren(e.returnvalue, {name: ["GuildTooltip", "BDFDB_TooltipContainer"]});
if (index > -1) children[index] = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TooltipContainer, {
tooltipConfig: {
type: "right",
guild: e.instance.props.guild,
list: true,
backgroundColor: data.color3,
fontColor: data.color4
},
children: children[index].props.children
});
}
}
}
}
processBlobMask (e) {
if (BDFDB.DataUtils.get(this, "settings", "changeInGuildList")) {
let [children, index] = BDFDB.ReactUtils.findChildren(e.returnvalue, {name: "NavItem"});
if (index > -1 && children[index].props.to && children[index].props.to.pathname) {
let guild = BDFDB.LibraryModules.GuildStore.getGuild((children[index].props.to.pathname.split("/channels/")[1] || "").split("/")[0]);
if (guild) {
let data = BDFDB.DataUtils.load(this, "servers", guild.id);
if (data) {
if (data.shortName) children[index].props.name = data.shortName.split("").join(" ");
else if (data.name && data.ignoreCustomName) children[index].props.name = guild.name;
}
}
}
}
}
processGuildAcronym (e) {
if (typeof e.returnvalue.props.children == "function" && BDFDB.DataUtils.get(this, "settings", "changeInGuildList")) {
let data = BDFDB.DataUtils.load(this, "servers", (e.instance.props.to.pathname.split("/channels/")[1] || "").split("/")[0]);
if (data) {
let renderChildren = e.returnvalue.props.children;
e.returnvalue.props.children = (...args) => {
let renderedChildren = renderChildren(...args);
let [children, index] = BDFDB.ReactUtils.findChildren(renderedChildren, {props:[["className", BDFDB.disCN.guildiconacronym]]});
if (index > -1) {
let fontGradient = BDFDB.ObjectUtils.is(data.color2);
children[index].props.style = Object.assign({}, children[index].props.style, {
background: BDFDB.ObjectUtils.is(data.color1) ? BDFDB.ColorUtils.createGradient(data.color1) : BDFDB.ColorUtils.convert(data.color1, "RGBA"),
color: !fontGradient && BDFDB.ColorUtils.convert(data.color2, "RGBA")
});
if (fontGradient) children[index].props.children = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TextGradientElement, {
gradient: BDFDB.ColorUtils.createGradient(data.color2),
children: children[index].props.children
});
}
return renderedChildren;
};
}
}
}
processGuildIconWrapper (e) {
if (e.instance.props.guild) {
let settings = BDFDB.DataUtils.get(this, "settings");
if (e.instance.props.className && e.instance.props.className.indexOf(BDFDB.disCN.guildfolderguildicon) > -1) e.instance.props.guild = this.getGuildData(e.instance.props.guild.id, settings.changeInGuildList);
else if (e.instance.props.className && e.instance.props.className.indexOf(BDFDB.disCN.listavatar) > -1) e.instance.props.guild = this.getGuildData(e.instance.props.guild.id, settings.changeInMutualGuilds);
else e.instance.props.guild = this.getGuildData(e.instance.props.guild.id);
}
}
processGuildIcon (e) {
if (e.instance.props.guild && e.instance.props.style && (!e.instance.props.style.backgroundImage || e.instance.props.style.backgroundImage == "none")) {
let data = BDFDB.DataUtils.load(this, "servers", e.instance.props.guild.id);
if (data) {
let settings = BDFDB.DataUtils.get(this, "settings");
if (e.instance.props.className && e.instance.props.className.indexOf(BDFDB.disCN.guildfolderguildicon) > -1) this.changeGuildIcon(e, data, settings.changeInGuildList);
else if (e.instance.props.className && e.instance.props.className.indexOf(BDFDB.disCN.listavatar) > -1 || BDFDB.ReactUtils.findConstructor(e.instance, "MutualGuild", {up: true})) this.changeGuildIcon(e, data, settings.changeInMutualGuilds);
else this.changeGuildIcon(e, data);
}
}
}
processMutualGuilds (e) {
if (BDFDB.DataUtils.get(this, "settings", "changeInMutualGuilds")) for (let i in e.instance.props.mutualGuilds) e.instance.props.mutualGuilds[i].guild = this.getGuildData(e.instance.props.mutualGuilds[i].guild.id);
}
processFriendRow (e) {
if (BDFDB.DataUtils.get(this, "settings", "changeInMutualGuilds")) for (let i in e.instance.props.mutualGuilds) e.instance.props.mutualGuilds[i] = this.getGuildData(e.instance.props.mutualGuilds[i].id);
}
processQuickSwitcher (e) {
if (BDFDB.DataUtils.get(this, "settings", "changeInQuickSwitcher")) for (let i in e.instance.props.results) if (e.instance.props.results[i].type == "GUILD") e.instance.props.results[i].record = this.getGuildData(e.instance.props.results[i].record.id);
}
processQuickSwitchChannelResult (e) {
if (e.instance.props.channel && e.instance.props.channel.guild_id && BDFDB.DataUtils.get(this, "settings", "changeInQuickSwitcher")) {
e.instance.props.children.props.children = this.getGuildData(e.instance.props.channel.guild_id).name;
}
}
processGuildSidebar (e) {
if (e.instance.props.guild) {
let data = BDFDB.DataUtils.load(this, "servers", e.instance.props.guild.id);
if (data && data.removeBanner) e.instance.props.guild = new BDFDB.DiscordObjects.Guild(Object.assign({}, e.instance.props.guild, {banner: null}));
}
}
processGuildHeader (e) {
if (e.instance.props.guild) {
let settings = BDFDB.DataUtils.get(this, "settings");
if (settings.changeInGuildHeader) {
e.instance.props.guild = this.getGuildData(e.instance.props.guild.id);
let oldName = (BDFDB.LibraryModules.GuildStore.getGuild(e.instance.props.guild.id) || {}).name;
if (e.returnvalue && settings.addOriginalTooltip && oldName != e.instance.props.guild.name) {
e.returnvalue.props.children[0] = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TooltipContainer, {
text: oldName,
children: e.returnvalue.props.children[0],
tooltipConfig: {type: "right"}
});
}
}
}
}
getGuildData (guildId, change = true) {
let guild = BDFDB.LibraryModules.GuildStore.getGuild(guildId);
if (!guild) return new BDFDB.DiscordObjects.Guild({});
let data = change && BDFDB.DataUtils.load(this, "servers", guild.id);
if (data) {
let newGuildObject = {}, nativeObject = new BDFDB.DiscordObjects.Guild(guild);
for (let key in nativeObject) newGuildObject[key] = nativeObject[key];
newGuildObject.name = data.name || nativeObject.name;
newGuildObject.acronym = data.shortName && data.shortName.replace(/\s/g, "") || BDFDB.LibraryModules.StringUtils.getAcronym(!data.ignoreCustomName && data.name || nativeObject.name);
if (data.removeIcon) {
newGuildObject.icon = null;
newGuildObject.getIconURL = _ => {return null;};
}
else if (data.url) newGuildObject.getIconURL = _ => {return data.url;};
if (data.removeBanner) newGuildObject.banner = null;
return newGuildObject;
}
return new BDFDB.DiscordObjects.Guild(guild);
}
changeGuildIcon (e, data, change = true) {
if (change) {
let fontGradient = BDFDB.ObjectUtils.is(data.color2);
e.returnvalue.props.style = Object.assign({}, e.returnvalue.props.style, {
background: BDFDB.ObjectUtils.is(data.color1) ? BDFDB.ColorUtils.createGradient(data.color1) : BDFDB.ColorUtils.convert(data.color1, "RGBA"),
color: !fontGradient && BDFDB.ColorUtils.convert(data.color2, "RGBA")
});
if (fontGradient) e.returnvalue.props.children[0] = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TextGradientElement, {
gradient: BDFDB.ColorUtils.createGradient(data.color2),
children: e.returnvalue.props.children[0]
});
}
}
showServerSettings (guildId) {
let guild = BDFDB.LibraryModules.GuildStore.getGuild(guildId);
if (!guild) return;
let data = BDFDB.DataUtils.load(this, "servers", guild.id) || {};
let currentIgnoreCustomNameState = data.ignoreCustomName;
BDFDB.ModalUtils.open(this, {
size: "MEDIUM",
header: this.labels.modal_header_text,
subheader: guild.name,
children: [
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ModalComponents.ModalTabContent, {
tab: this.labels.modal_tabheader1_text,
children: [
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_guildname_text,
className: BDFDB.disCN.marginbottom8,
children: [
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TextInput, {
inputClassName: "input-guildname",
value: data.name,
placeholder: guild.name,
autoFocus: true,
onChange: (value, instance) => {
if (!currentIgnoreCustomNameState) {
let acronyminputins = BDFDB.ReactUtils.findOwner(instance._reactInternalFiber.return.return.return, {props:[["inputId","GUILDACRONYM"]]});
if (acronyminputins) {
acronyminputins.props.placeholder = value && BDFDB.LibraryModules.StringUtils.getAcronym(value) || guild.acronym;
BDFDB.ReactUtils.forceUpdate(acronyminputins);
}
}
}
})
]
}),
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_guildacronym_text,
className: BDFDB.disCN.marginbottom4,
children: [
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TextInput, {
inputClassName: "input-guildacronym",
inputId: "GUILDACRONYM",
value: data.shortName,
placeholder: !data.ignoreCustomName && data.name && BDFDB.LibraryModules.StringUtils.getAcronym(data.name) || guild.acronym
})
]
}),
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, {
type: "Switch",
className: BDFDB.disCN.marginbottom8 + " input-ignorecustomname",
label: this.labels.modal_ignorecustomname_text,
value: data.ignoreCustomName,
onChange: (value, instance) => {
currentIgnoreCustomNameState = value;
let acronyminputins = BDFDB.ReactUtils.findOwner(instance._reactInternalFiber.return, {props:[["inputId","GUILDACRONYM"]]});
if (acronyminputins) {
acronyminputins.props.placeholder = !value && data.name && BDFDB.LibraryModules.StringUtils.getAcronym(data.name) || guild.acronym;
BDFDB.ReactUtils.forceUpdate(acronyminputins);
}
}
}),
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_guildicon_text,
className: BDFDB.disCN.marginbottom4,
children: [
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TextInput, {
inputClassName: "input-guildicon",
inputId: "GUILDICON",
success: !data.removeIcon && data.url,
value: data.url,
placeholder: BDFDB.GuildUtils.getIcon(guild.id),
disabled: data.removeIcon,
onChange: (value, instance) => {
this.checkUrl(value, instance);
}
})
]
}),
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, {
type: "Switch",
className: BDFDB.disCN.marginbottom8 + " input-removeicon",
label: this.labels.modal_removeicon_text,
value: data.removeIcon,
onChange: (value, instance) => {
let iconinputins = BDFDB.ReactUtils.findOwner(instance._reactInternalFiber.return, {props:[["inputId","GUILDICON"]]});
if (iconinputins) {
delete iconinputins.props.success;
delete iconinputins.props.errorMessage;
iconinputins.props.disabled = value;
BDFDB.ReactUtils.forceUpdate(iconinputins);
}
}
}),
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_guildbanner_text,
className: BDFDB.disCN.marginbottom4,
children: [
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TextInput, {
inputClassName: "input-guildbanner",
inputId: "GUILDBANNER",
success: !data.removeBanner && data.banner,
value: data.banner,
placeholder: BDFDB.GuildUtils.getBanner(guild.id),
disabled: data.removeBanner || guild.id == "410787888507256842",
onChange: (value, instance) => {
this.checkUrl(value, instance);
}
})
]
}),
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, {
type: "Switch",
className: BDFDB.disCN.marginbottom20 + " input-removebanner",
label: this.labels.modal_removebanner_text,
value: data.removeBanner,
disabled: guild.id == "410787888507256842",
onChange: (value, instance) => {
let bannerinputins = BDFDB.ReactUtils.findOwner(instance._reactInternalFiber.return, {props:[["inputId","GUILDBANNER"]]});
if (bannerinputins) {
delete bannerinputins.props.success;
delete bannerinputins.props.errorMessage;
bannerinputins.props.disabled = value;
BDFDB.ReactUtils.forceUpdate(bannerinputins);
}
}
})
]
}),
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ModalComponents.ModalTabContent, {
tab: this.labels.modal_tabheader2_text,
children: [
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_colorpicker1_text,
className: BDFDB.disCN.marginbottom20,
children: [
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ColorSwatches, {
color: data.color1,
number: 1
})
]
}),
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_colorpicker2_text,
className: BDFDB.disCN.marginbottom20,
children: [
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ColorSwatches, {
color: data.color2,
number: 2
})
]
})
]
}),
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ModalComponents.ModalTabContent, {
tab: this.labels.modal_tabheader3_text,
children: [
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_colorpicker3_text,
className: BDFDB.disCN.marginbottom20,
children: [
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ColorSwatches, {
color: data.color3,
number: 3
})
]
}),
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_colorpicker4_text,
className: BDFDB.disCN.marginbottom20,
children: [
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ColorSwatches, {
color: data.color4,
number: 4
})
]
})
]
})
],
buttons: [{
contents: BDFDB.LanguageUtils.LanguageStrings.SAVE,
color: "BRAND",
close: true,
click: modal => {
let olddata = Object.assign({}, data);
let guildnameinput = modal.querySelector(".input-guildname");
let guildacronyminput = modal.querySelector(".input-guildacronym");
let ignorecustomnameinput = modal.querySelector(".input-ignorecustomname " + BDFDB.dotCN.switchinner);
let guildiconinput = modal.querySelector(".input-guildicon");
let removeiconinput = modal.querySelector(".input-removeicon " + BDFDB.dotCN.switchinner);
let guildbannerinput = modal.querySelector(".input-guildbanner");
let removebannerinput = modal.querySelector(".input-removebanner " + BDFDB.dotCN.switchinner);
data.name = guildnameinput.value.trim() || null;
data.shortName = guildacronyminput.value.trim() || null;
data.ignoreCustomName = ignorecustomnameinput.checked;
data.url = (!data.removeIcon && BDFDB.DOMUtils.containsClass(guildiconinput, BDFDB.disCN.inputsuccess) ? guildiconinput.value.trim() : null) || null;
data.removeIcon = removeiconinput.checked;
data.banner = (!data.removeBanner && BDFDB.DOMUtils.containsClass(guildbannerinput, BDFDB.disCN.inputsuccess) ? guildbannerinput.value.trim() : null) || null;
data.removeBanner = removebannerinput.checked && guild.id != "410787888507256842";
data.color1 = BDFDB.ColorUtils.getSwatchColor(modal, 1);
data.color2 = BDFDB.ColorUtils.getSwatchColor(modal, 2);
data.color3 = BDFDB.ColorUtils.getSwatchColor(modal, 3);
data.color4 = BDFDB.ColorUtils.getSwatchColor(modal, 4);
let changed = false;
if (Object.keys(data).every(key => !data[key]) && (changed = true)) BDFDB.DataUtils.remove(this, "servers", guild.id);
else if (!BDFDB.equals(olddata, data) && (changed = true)) BDFDB.DataUtils.save(data, this, "servers", guild.id);
if (changed) BDFDB.ModuleUtils.forceAllUpdates(this);;
}
}]
});
}
checkUrl (url, instance) {
BDFDB.TimeUtils.clear(instance.checkTimeout);
if (url == null || !url.trim()) {
delete instance.props.success;
delete instance.props.errorMessage;
instance.forceUpdate();
}
else instance.checkTimeout = BDFDB.TimeUtils.timeout(() => {
BDFDB.LibraryRequires.request(url.trim(), (error, response, result) => {
if (response && response.headers["content-type"] && response.headers["content-type"].indexOf("image") != -1) {
instance.props.success = true;
delete instance.props.errorMessage;
}
else {
delete instance.props.success;
instance.props.errorMessage = this.labels.modal_invalidurl_text;
}
delete instance.checkTimeout;
instance.forceUpdate();
});
}, 1000);
}
setBanner (id, data) {
data = data || {};
let guild = BDFDB.LibraryModules.GuildStore.getGuild(id);
if (!guild) return;
if (guild.EditServersCachedBanner === undefined) guild.EditServersCachedBanner = guild.banner;
guild.banner = data.removeBanner ? null : (data.banner || guild.EditServersCachedBanner);
}
setLabelsByLanguage () {
switch (BDFDB.LanguageUtils.getLanguage().id) {
case "hr": //croatian
return {
context_localserversettings_text: "Lokalne postavke poslužitelja",
submenu_serversettings_text: "Promijeni postavke",
submenu_resetsettings_text: "Ponovno postavite poslužitelj",
modal_header_text: "Lokalne postavke poslužitelja",
modal_guildname_text: "Naziv lokalnog poslužitelja",
modal_guildacronym_text: "Akronim lokalnog poslužitelja",
modal_ignorecustomname_text: "Koristite izvorno ime poslužitelja za akronim poslužitelja",
modal_guildicon_text: "Ikona",
modal_removeicon_text: "Ukloni ikonu",
modal_guildbanner_text: "Baner",
modal_removebanner_text: "Uklonite baner",
modal_tabheader1_text: "Poslužitelja",
modal_tabheader2_text: "Boja ikona",
modal_tabheader3_text: "Boja tooltip",
modal_colorpicker1_text: "Boja ikona",
modal_colorpicker2_text: "Boja fonta",
modal_colorpicker3_text: "Boja tooltip",
modal_colorpicker4_text: "Boja fonta",
modal_invalidurl_text: "Nevažeći URL"
};
case "da": //danish
return {
context_localserversettings_text: "Lokal serverindstillinger",
submenu_serversettings_text: "Skift indstillinger",
submenu_resetsettings_text: "Nulstil server",
modal_header_text: "Lokal serverindstillinger",
modal_guildname_text: "Lokalt servernavn",
modal_guildacronym_text: "Lokalt serverakronym",
modal_ignorecustomname_text: "Brug det originale servernavn til serverens akronym",
modal_guildicon_text: "Ikon",
modal_removeicon_text: "Fjern ikon",
modal_guildbanner_text: "Banner",
modal_removebanner_text: "Fjern banner",
modal_tabheader1_text: "Server",
modal_tabheader2_text: "Ikonfarve",
modal_tabheader3_text: "Tooltipfarve",
modal_colorpicker1_text: "Ikonfarve",
modal_colorpicker2_text: "Skriftfarve",
modal_colorpicker3_text: "Tooltipfarve",
modal_colorpicker4_text: "Skriftfarve",
modal_invalidurl_text: "Ugyldig URL"
};
case "de": //german
return {
context_localserversettings_text: "Lokale Servereinstellungen",
submenu_serversettings_text: "Einstellungen ändern",
submenu_resetsettings_text: "Server zurücksetzen",
modal_header_text: "Lokale Servereinstellungen",
modal_guildname_text: "Lokaler Servername",
modal_guildacronym_text: "Lokale Serverkürzel",
modal_ignorecustomname_text: "Benutze den ursprünglichen Servernamen für das Serverkürzel",
modal_guildicon_text: "Icon",
modal_removeicon_text: "Icon entfernen",
modal_guildbanner_text: "Banner",
modal_removebanner_text: "Banner entfernen",
modal_tabheader1_text: "Server",
modal_tabheader2_text: "Iconfarbe",
modal_tabheader3_text: "Tooltipfarbe",
modal_colorpicker1_text: "Iconfarbe",
modal_colorpicker2_text: "Schriftfarbe",
modal_colorpicker3_text: "Tooltipfarbe",
modal_colorpicker4_text: "Schriftfarbe",
modal_invalidurl_text: "Ungültige URL"
};
case "es": //spanish
return {
context_localserversettings_text: "Ajustes local de servidor",
submenu_serversettings_text: "Cambiar ajustes",
submenu_resetsettings_text: "Restablecer servidor",
modal_header_text: "Ajustes local de servidor",
modal_guildname_text: "Nombre local del servidor",
modal_guildacronym_text: "Acrónimo local del servidor",
modal_ignorecustomname_text: "Use el nombre del servidor original para el acrónimo del servidor",
modal_guildicon_text: "Icono",
modal_removeicon_text: "Eliminar icono",
modal_guildbanner_text: "Bandera",
modal_removebanner_text: "Eliminar bandera",
modal_tabheader1_text: "Servidor",
modal_tabheader2_text: "Color del icono",
modal_tabheader3_text: "Color de tooltip",
modal_colorpicker1_text: "Color del icono",
modal_colorpicker2_text: "Color de fuente",
modal_colorpicker3_text: "Color de tooltip",
modal_colorpicker4_text: "Color de fuente",
modal_invalidurl_text: "URL inválida"
};
case "fr": //french
return {
context_localserversettings_text: "Paramètres locale du serveur",
submenu_serversettings_text: "Modifier les paramètres",
submenu_resetsettings_text: "Réinitialiser le serveur",
modal_header_text: "Paramètres locale du serveur",
modal_guildname_text: "Nom local du serveur",
modal_guildacronym_text: "Acronyme local de serveur",
modal_ignorecustomname_text: "Utilisez le nom de serveur d'origine pour l'acronyme de serveur",
modal_guildicon_text: "Icône",
modal_removeicon_text: "Supprimer l'icône",
modal_guildbanner_text: "Bannière",
modal_removebanner_text: "Supprimer la bannière",
modal_tabheader1_text: "Serveur",
modal_tabheader2_text: "Couleur de l'icône",
modal_tabheader3_text: "Couleur de tooltip",
modal_colorpicker1_text: "Couleur de l'icône",
modal_colorpicker2_text: "Couleur de la police",
modal_colorpicker3_text: "Couleur de tooltip",
modal_colorpicker4_text: "Couleur de la police",
modal_invalidurl_text: "URL invalide"
};
case "it": //italian
return {
context_localserversettings_text: "Impostazioni locale server",
submenu_serversettings_text: "Cambia impostazioni",
submenu_resetsettings_text: "Ripristina server",
modal_header_text: "Impostazioni locale server",
modal_guildname_text: "Nome locale server",
modal_guildacronym_text: "Acronimo locale server",
modal_ignorecustomname_text: "Utilizzare il nome del server originale per l'acronimo del server",
modal_guildicon_text: "Icona",
modal_removeicon_text: "Rimuova l'icona",
modal_guildbanner_text: "Bandiera",
modal_removebanner_text: "Rimuovi bandiera",
modal_tabheader1_text: "Server",
modal_tabheader2_text: "Colore dell'icona",
modal_tabheader3_text: "Colore della tooltip",
modal_colorpicker1_text: "Colore dell'icona",
modal_colorpicker2_text: "Colore del carattere",
modal_colorpicker3_text: "Colore della tooltip",
modal_colorpicker4_text: "Colore del carattere",
modal_invalidurl_text: "URL non valido"
};
case "nl": //dutch
return {
context_localserversettings_text: "Lokale serverinstellingen",
submenu_serversettings_text: "Verandere instellingen",
submenu_resetsettings_text: "Reset server",
modal_header_text: "Lokale serverinstellingen",
modal_guildname_text: "Lokale servernaam",
modal_guildacronym_text: "Lokale server acroniem",
modal_ignorecustomname_text: "Gebruik de oorspronkelijke servernaam voor het serveracrononiem",
modal_guildicon_text: "Icoon",
modal_removeicon_text: "Verwijder icoon",
modal_guildbanner_text: "Banier",
modal_removebanner_text: "Verwijder banier",
modal_tabheader1_text: "Server",
modal_tabheader2_text: "Icoonkleur",
modal_tabheader3_text: "Tooltipkleur",
modal_colorpicker1_text: "Icoonkleur",
modal_colorpicker2_text: "Doopvontkleur",
modal_colorpicker3_text: "Tooltipkleur",
modal_colorpicker4_text: "Doopvontkleur",
modal_invalidurl_text: "Ongeldige URL"
};
case "no": //norwegian
return {
context_localserversettings_text: "Lokal serverinnstillinger",
submenu_serversettings_text: "Endre innstillinger",
submenu_resetsettings_text: "Tilbakestill server",
modal_header_text: "Lokal serverinnstillinger",
modal_guildname_text: "Lokalt servernavn",
modal_guildacronym_text: "Lokalt serverforkortelse",
modal_ignorecustomname_text: "Bruk det originale servernavnet til serverforkortelsen",
modal_guildicon_text: "Ikon",
modal_removeicon_text: "Fjern ikon",
modal_guildbanner_text: "Banner",
modal_removebanner_text: "Fjern banner",
modal_tabheader1_text: "Server",
modal_tabheader2_text: "Ikonfarge",
modal_tabheader3_text: "Tooltipfarge",
modal_colorpicker1_text: "Ikonfarge",
modal_colorpicker2_text: "Skriftfarge",
modal_colorpicker3_text: "Tooltipfarge",
modal_colorpicker4_text: "Skriftfarge",
modal_invalidurl_text: "Ugyldig URL"
};
case "pl": //polish
return {
context_localserversettings_text: "Lokalne ustawienia serwera",
submenu_serversettings_text: "Zmień ustawienia",
submenu_resetsettings_text: "Resetuj ustawienia",
modal_header_text: "Lokalne ustawienia serwera",
modal_guildname_text: "Lokalna nazwa serwera",
modal_guildacronym_text: "Akronim lokalnego serwera",
modal_ignorecustomname_text: "Użyj oryginalnej nazwy serwera dla akronimu serwera",
modal_guildicon_text: "Ikona",
modal_removeicon_text: "Usuń ikonę",
modal_guildbanner_text: "Baner",
modal_removebanner_text: "Usuń baner",
modal_tabheader1_text: "Serwer",
modal_tabheader2_text: "Kolor ikony",
modal_tabheader3_text: "Kolor podpowiedzi",
modal_colorpicker1_text: "Kolor ikony",
modal_colorpicker2_text: "Kolor czcionki",
modal_colorpicker3_text: "Kolor podpowiedzi",
modal_colorpicker4_text: "Kolor czcionki",
modal_invalidurl_text: "Nieprawidłowe URL"
};
case "pt-BR": //portuguese (brazil)
return {
context_localserversettings_text: "Configurações local do servidor",
submenu_serversettings_text: "Mudar configurações",
submenu_resetsettings_text: "Redefinir servidor",
modal_header_text: "Configurações local do servidor",
modal_guildname_text: "Nome local do servidor",
modal_guildacronym_text: "Acrônimo local de servidor",
modal_ignorecustomname_text: "Use o nome do servidor original para a sigla do servidor",
modal_guildicon_text: "Icone",
modal_removeicon_text: "Remover ícone",
modal_guildbanner_text: "Bandeira",
modal_removebanner_text: "Remover bandeira",
modal_tabheader1_text: "Servidor",
modal_tabheader2_text: "Cor do ícone",
modal_tabheader3_text: "Cor da tooltip",
modal_colorpicker1_text: "Cor do ícone",
modal_colorpicker2_text: "Cor da fonte",
modal_colorpicker3_text: "Cor da tooltip",
modal_colorpicker4_text: "Cor da fonte",
modal_invalidurl_text: "URL inválida"
};
case "fi": //finnish
return {
context_localserversettings_text: "Paikallinen palvelimen asetukset",
submenu_serversettings_text: "Vaihda asetuksia",
submenu_resetsettings_text: "Nollaa palvelimen",
modal_header_text: "Paikallinen palvelimen asetukset",
modal_guildname_text: "Paikallinen palvelimenimi",
modal_guildacronym_text: "Paikallisen palvelimen lyhenne",
modal_ignorecustomname_text: "Käytä alkuperäistä palvelimen nimeä palvelimen lyhenteessä",
modal_guildicon_text: "Ikonin",
modal_removeicon_text: "Poista kuvake",
modal_guildbanner_text: "Banneri",
modal_removebanner_text: "Poista banneri",
modal_tabheader1_text: "Palvelimen",
modal_tabheader2_text: "Ikoninväri",
modal_tabheader3_text: "Tooltipväri",
modal_colorpicker1_text: "Ikoninväri",
modal_colorpicker2_text: "Fontinväri",
modal_colorpicker3_text: "Tooltipväri",
modal_colorpicker4_text: "Fontinväri",
modal_invalidurl_text: "Virheellinen URL"
};
case "sv": //swedish
return {
context_localserversettings_text: "Lokal serverinställningar",
submenu_serversettings_text: "Ändra inställningar",
submenu_resetsettings_text: "Återställ server",
modal_header_text: "Lokal serverinställningar",
modal_guildname_text: "Lokalt servernamn",
modal_guildacronym_text: "Lokal server förkortning",
modal_ignorecustomname_text: "Använd det ursprungliga servernamnet för serverförkortningen",
modal_guildicon_text: "Ikon",
modal_removeicon_text: "Ta bort ikonen",
modal_guildbanner_text: "Banderoll",
modal_removebanner_text: "Ta bort banderoll",
modal_tabheader1_text: "Server",
modal_tabheader2_text: "Ikonfärg",
modal_tabheader3_text: "Tooltipfärg",
modal_colorpicker1_text: "Ikonfärg",
modal_colorpicker2_text: "Fontfärg",
modal_colorpicker3_text: "Tooltipfärg",
modal_colorpicker4_text: "Fontfärg",
modal_invalidurl_text: "Ogiltig URL"
};
case "tr": //turkish
return {
context_localserversettings_text: "Yerel Sunucu Ayarları",
submenu_serversettings_text: "Ayarları Değiştir",
submenu_resetsettings_text: "Sunucu Sıfırla",
modal_header_text: "Yerel sunucu ayarları",
modal_guildname_text: "Yerel sunucu adı",
modal_guildacronym_text: "Yerel sunucu kısaltması",
modal_ignorecustomname_text: "Sunucu kısaltması için orijinal sunucu adını kullanın",
modal_guildicon_text: "Simge",
modal_removeicon_text: "Simge kaldır",
modal_guildbanner_text: "Afişi",
modal_removebanner_text: "Afişi kaldır",
modal_tabheader1_text: "Sunucu",
modal_tabheader2_text: "Simge rengi",
modal_tabheader3_text: "Tooltip rengi",
modal_colorpicker1_text: "Simge rengi",
modal_colorpicker2_text: "Yazı rengi",
modal_colorpicker3_text: "Tooltip rengi",
modal_colorpicker4_text: "Yazı rengi",
modal_invalidurl_text: "Geçersiz URL"
};
case "cs": //czech
return {
context_localserversettings_text: "Místní nastavení serveru",
submenu_serversettings_text: "Změnit nastavení",
submenu_resetsettings_text: "Obnovit server",
modal_header_text: "Místní nastavení serveru",
modal_guildname_text: "Místní název serveru",
modal_guildacronym_text: "Zkratka místního serveru",
modal_ignorecustomname_text: "Pro zkratku serveru použijte původní název serveru",
modal_guildicon_text: "Ikony",
modal_removeicon_text: "Odstranit ikonu",
modal_guildbanner_text: "Prapor",
modal_removebanner_text: "Odstraňte prapor",
modal_tabheader1_text: "Server",
modal_tabheader2_text: "Barva ikony",
modal_tabheader3_text: "Barva tooltip",
modal_colorpicker1_text: "Barva ikony",
modal_colorpicker2_text: "Barva fontu",
modal_colorpicker3_text: "Barva tooltip",
modal_colorpicker4_text: "Barva fontu",
modal_invalidurl_text: "Neplatná URL"
};
case "bg": //bulgarian
return {
context_localserversettings_text: "Настройки за локални cървър",
submenu_serversettings_text: "Промяна на настройките",
submenu_resetsettings_text: "Възстановяване на cървър",
modal_header_text: "Настройки за локални cървър",
modal_guildname_text: "Локално име на cървър",
modal_guildacronym_text: "Акроним на локалния сървър",
modal_ignorecustomname_text: "Използвайте оригиналното име на сървъра за съкращението на сървъра",
modal_guildicon_text: "Икона",
modal_removeicon_text: "Премахване на иконата",
modal_guildbanner_text: "Знаме",
modal_removebanner_text: "Премахване на знаме",
modal_tabheader1_text: "Cървър",
modal_tabheader2_text: "Цвят на иконата",
modal_tabheader3_text: "Цвят на подсказка",
modal_colorpicker1_text: "Цвят на иконата",
modal_colorpicker2_text: "Цвят на шрифта",
modal_colorpicker3_text: "Цвят на подсказка",
modal_colorpicker4_text: "Цвят на шрифта",
modal_invalidurl_text: "Невалиден URL"
};
case "ru": //russian
return {
context_localserversettings_text: "Настройки локального cервер",
submenu_serversettings_text: "Изменить настройки",
submenu_resetsettings_text: "Сбросить cервер",
modal_header_text: "Настройки локального cервер",
modal_guildname_text: "Имя локального cервер",
modal_guildacronym_text: "Акроним локального сервера",
modal_ignorecustomname_text: "Используйте оригинальное имя сервера для сокращения сервера",
modal_guildicon_text: "Значок",
modal_removeicon_text: "Удалить значок",
modal_guildbanner_text: "Баннер",
modal_removebanner_text: "Удалить баннер",
modal_tabheader1_text: "Cервер",
modal_tabheader2_text: "Цвет значков",
modal_tabheader3_text: "Цвет подсказка",
modal_colorpicker1_text: "Цвет значков",
modal_colorpicker2_text: "Цвет шрифта",
modal_colorpicker3_text: "Цвет подсказка",
modal_colorpicker4_text: "Цвет шрифта",
modal_invalidurl_text: "Неверная URL"
};
case "uk": //ukrainian
return {
context_localserversettings_text: "Налаштування локального cервер",
submenu_serversettings_text: "Змінити налаштування",
submenu_resetsettings_text: "Скидання cервер",
modal_header_text: "Налаштування локального cервер",
modal_guildname_text: "Локальне ім'я cервер",
modal_guildacronym_text: "Акронім локального сервера",
modal_ignorecustomname_text: "Використовуйте оригінальне ім'я сервера для абревіатури сервера",
modal_guildicon_text: "Іконка",
modal_removeicon_text: "Видалити піктограму",
modal_guildbanner_text: "Банер",
modal_removebanner_text: "Видалити банер",
modal_tabheader1_text: "Cервер",
modal_tabheader2_text: "Колір ікони",
modal_tabheader3_text: "Колір підказка",
modal_colorpicker1_text: "Колір ікони",
modal_colorpicker2_text: "Колір шрифту",
modal_colorpicker3_text: "Колір підказка",
modal_colorpicker4_text: "Колір шрифту",
modal_invalidurl_text: "Недійсна URL"
};
case "ja": //japanese
return {
context_localserversettings_text: "ローカルサーバー設定",
submenu_serversettings_text: "設定を変更する",
submenu_resetsettings_text: "サーバーをリセットする",
modal_header_text: "ローカルサーバー設定",
modal_guildname_text: "ローカルサーバー名",
modal_guildacronym_text: "ローカルサーバーの頭字語",
modal_ignorecustomname_text: "サーバーの頭字語に元のサーバー名を使用する",
modal_guildicon_text: "アイコン",
modal_removeicon_text: "アイコンを削除",
modal_guildbanner_text: "バナー",
modal_removebanner_text: "バナーを削除",
modal_tabheader1_text: "サーバー",
modal_tabheader2_text: "アイコンの色",
modal_tabheader3_text: "ツールチップの色",
modal_colorpicker1_text: "アイコンの色",
modal_colorpicker2_text: "フォントの色",
modal_colorpicker3_text: "ツールチップの色",
modal_colorpicker4_text: "フォントの色",
modal_invalidurl_text: "無効な URL"
};
case "zh-TW": //chinese (traditional)
return {
context_localserversettings_text: "本地服務器設置",
submenu_serversettings_text: "更改設置",
submenu_resetsettings_text: "重置服務器",
modal_header_text: "本地服務器設置",
modal_guildname_text: "服務器名稱",
modal_guildacronym_text: "本地服務器縮寫",
modal_ignorecustomname_text: "使用原始服務器名稱作為服務器首字母縮寫",
modal_guildicon_text: "圖標",
modal_removeicon_text: "刪除圖標",
modal_guildbanner_text: "旗幟",
modal_removebanner_text: "刪除橫幅",
modal_tabheader1_text: "服務器",
modal_tabheader2_text: "圖標顏色",
modal_tabheader3_text: "工具提示顏色",
modal_colorpicker1_text: "圖標顏色",
modal_colorpicker2_text: "字體顏色",
modal_colorpicker3_text: "工具提示顏色",
modal_colorpicker4_text: "字體顏色",
modal_invalidurl_text: "無效的 URL"
};
case "ko": //korean
return {
context_localserversettings_text: "로컬 서버 설정",
submenu_serversettings_text: "설정 변경",
submenu_resetsettings_text: "서버 재설정",
modal_header_text: "로컬 서버 설정",
modal_guildname_text: "로컬 서버 이름",
modal_guildacronym_text: "로컬 서버 약어",
modal_ignorecustomname_text: "서버 약어에 원래 서버 이름을 사용하십시오",
modal_guildicon_text: "상",
modal_removeicon_text: "상 삭제",
modal_guildbanner_text: "기치",
modal_removebanner_text: "배너 삭제",
modal_tabheader1_text: "서버",
modal_tabheader2_text: "상 색깔",
modal_tabheader3_text: "툴팁 색깔",
modal_colorpicker1_text: "상 색깔",
modal_colorpicker2_text: "글꼴 색깔",
modal_colorpicker3_text: "툴팁 색깔",
modal_colorpicker4_text: "글꼴 색깔",
modal_invalidurl_text: "잘못된 URL"
};
default: //default: english
return {
context_localserversettings_text: "Local Serversettings",
submenu_serversettings_text: "Change Settings",
submenu_resetsettings_text: "Reset Server",
modal_header_text: "Local Serversettings",
modal_guildname_text: "Local Servername",
modal_guildacronym_text: "Local Serveracronym",
modal_ignorecustomname_text: "Use the original Servername for the Serveracronym",
modal_guildicon_text: "Icon",
modal_removeicon_text: "Remove Icon",
modal_guildbanner_text: "Banner",
modal_removebanner_text: "Remove Banner",
modal_tabheader1_text: "Server",
modal_tabheader2_text: "Iconcolor",
modal_tabheader3_text: "Tooltipcolor",
modal_colorpicker1_text: "Iconcolor",
modal_colorpicker2_text: "Fontcolor",
modal_colorpicker3_text: "Tooltipcolor",
modal_colorpicker4_text: "Fontcolor",
modal_invalidurl_text: "Invalid URL"
};
}
}
}