This commit is contained in:
Mirco Wittrien 2019-10-22 18:55:25 +02:00
parent ff2f700d94
commit ab2e9fb033
52 changed files with 1002 additions and 1150 deletions

View File

@ -1,7 +1,7 @@
if (window.BDFDB && BDFDB.ListenerUtils && typeof BDFDB.ListenerUtils.remove == "function") BDFDB.ListenerUtils.remove(BDFDB);
if (window.BDFDB && BDFDB.ObserverUtils && typeof BDFDB.ObserverUtils.disconnect == "function") BDFDB.ObserverUtils.disconnect(BDFDB);
if (window.BDFDB && BDFDB.ModuleUtils && typeof BDFDB.ModuleUtils.unpatch == "function") BDFDB.ModuleUtils.unpatch(BDFDB);
var BDFDB = {myPlugins: BDFDB && BDFDB.myPlugins || {}, cleanUps: BDFDB && BDFDB.cleanUps || {}, BDv2Api: BDFDB && BDFDB.BDv2Api || undefined, creationTime: performance.now(), cachedData: {}, pressedKeys: [], mousePosition: {pageX: 0, pageY: 0}, name: "$BDFDB"};
var BDFDB = {myPlugins: BDFDB && BDFDB.myPlugins || {}, BDv2Api: BDFDB && BDFDB.BDv2Api || undefined, creationTime: performance.now(), cachedData: {}, pressedKeys: [], mousePosition: {pageX: 0, pageY: 0}, name: "$BDFDB"};
(_ => {
var id = Math.round(Math.random() * 10000000000000000), InternalBDFDB = {};
BDFDB.id = id;
@ -79,7 +79,7 @@ var BDFDB = {myPlugins: BDFDB && BDFDB.myPlugins || {}, cleanUps: BDFDB && BDFDB
if (BDFDB.ObjectUtils.isEmpty(window.PluginUpdates.plugins)) BDFDB.removeEles("#bd-settingspane-container .bd-updatebtn" + BDFDB.dotCN._repofolderbutton);
delete plugin.started;
BDFDB.cleanUps[plugin.name] = setImmediate(() => {
setImmediate(() => {
BDFDB.ModuleUtils.unpatch(plugin);
delete plugin.stopping;
});
@ -244,8 +244,6 @@ var BDFDB = {myPlugins: BDFDB && BDFDB.myPlugins || {}, cleanUps: BDFDB && BDFDB
delete plugin.startTimeout;
clearTimeout(plugin.libLoadTimeout);
delete plugin.libLoadTimeout;
clearImmediate(BDFDB.cleanUps[plugin.name]);
delete BDFDB.cleanUps[plugin.name];
};
InternalBDFDB.addOnSwitchListener = function (plugin) {
if (BDFDB.ObjectUtils.is(plugin) && typeof plugin.onSwitch === "function") {
@ -1460,6 +1458,7 @@ var BDFDB = {myPlugins: BDFDB && BDFDB.myPlugins || {}, cleanUps: BDFDB && BDFDB
}});
BDFDB.ModuleUtils.patch(BDFDB, module.prototype, "render", {after: e => {
if (e.thisObject.props.BDFDBcontextMenu && e.thisObject.props.children && e.returnValue && e.returnValue.props) {
console.log(e);
e.returnValue.props.children = e.thisObject.props.children;
delete e.thisObject.props.value;
delete e.thisObject.props.children;
@ -1512,9 +1511,6 @@ var BDFDB = {myPlugins: BDFDB && BDFDB.myPlugins || {}, cleanUps: BDFDB && BDFDB
}});
}
};
for (let type of NoFluxContextMenus) InternalBDFDB.patchContextMenuLib(BDFDB.ModuleUtils.findByName(type), false);
for (let type of NoFluxPopouts) InternalBDFDB.patchPopoutLib(BDFDB.ModuleUtils.findByName(type), false);
for (let type of FluxContextMenus) InternalBDFDB.patchContextMenuLib(BDFDB.ModuleUtils.findByName(`FluxContainer(${type})`), true);
BDFDB.equals = function (mainA, mainB, sorted) {
var i = -1;
@ -1795,7 +1791,7 @@ var BDFDB = {myPlugins: BDFDB && BDFDB.myPlugins || {}, cleanUps: BDFDB && BDFDB
};
BDFDB.FolderUtils.getDiv = function (eleOrInfoOrId) {
if (!eleOrInfoOrId) return null;
let info = BDFDB.getFolderData(eleOrInfoOrId);
let info = BDFDB.FolderUtils.getData(eleOrInfoOrId);
return info ? info.div : null;
};
BDFDB.FolderUtils.getData = function (eleOrInfoOrId) {
@ -1814,12 +1810,6 @@ var BDFDB = {myPlugins: BDFDB && BDFDB.myPlugins || {}, cleanUps: BDFDB && BDFDB
};
BDFDB.ChannelUtils = {};
BDFDB.ChannelUtils.getIcon = function (id) {
var channel = LibraryModules.ChannelStore.getChannel(id = typeof id == "number" ? id.toFixed() : id);
if (!channel) return null;
if (!channel.icon) return channel.type == 1 ? BDFDB.UserUtils.getAvatar(channel.recipients[0]) : (channel.type == 3 ? "https://discordapp.com/assets/f046e2247d730629309457e902d5c5b3.svg" : null);
return LibraryModules.IconUtils.getChannelIconURL(channel).split("?")[0];
};
BDFDB.ChannelUtils.getId = function (div) {
if (!Node.prototype.isPrototypeOf(div) || !BDFDB.ReactUtils.getInstance(div)) return;
div = BDFDB.getParentEle(BDFDB.dotCNC.categorycontainerdefault + BDFDB.dotCNC.channelcontainerdefault + BDFDB.dotCN.dmchannel, div);
@ -1874,6 +1864,12 @@ var BDFDB = {myPlugins: BDFDB && BDFDB.myPlugins || {}, cleanUps: BDFDB && BDFDB
};
BDFDB.DmUtils = {};
BDFDB.DmUtils.getIcon = function (id) {
var channel = LibraryModules.ChannelStore.getChannel(id = typeof id == "number" ? id.toFixed() : id);
if (!channel) return null;
if (!channel.icon) return channel.type == 1 ? BDFDB.UserUtils.getAvatar(channel.recipients[0]) : (channel.type == 3 ? "https://discordapp.com/assets/f046e2247d730629309457e902d5c5b3.svg" : null);
return LibraryModules.IconUtils.getChannelIconURL(channel).split("?")[0];
};
BDFDB.DmUtils.getId = function (div) {
if (!Node.prototype.isPrototypeOf(div) || !BDFDB.ReactUtils.getInstance(div)) return;
let dmdiv = BDFDB.getParentEle(BDFDB.dotCN.guildouter, div);
@ -7111,6 +7107,10 @@ var BDFDB = {myPlugins: BDFDB && BDFDB.myPlugins || {}, cleanUps: BDFDB && BDFDB
};
InternalBDFDB.patchPlugin(BDFDB);
for (let type of NoFluxContextMenus) InternalBDFDB.patchContextMenuLib(BDFDB.ModuleUtils.findByName(type), false);
for (let type of NoFluxPopouts) InternalBDFDB.patchPopoutLib(BDFDB.ModuleUtils.findByName(type), false);
for (let type of FluxContextMenus) InternalBDFDB.patchContextMenuLib(BDFDB.ModuleUtils.findByName(`FluxContainer(${type})`), true);
BDFDB.ModuleUtils.forceAllUpdates(BDFDB);
@ -7294,9 +7294,7 @@ var BDFDB = {myPlugins: BDFDB && BDFDB.myPlugins || {}, cleanUps: BDFDB && BDFDB
BDFDB.sortObject = BDFDB.ObjectUtils.sort;
BDFDB.reverseObject = BDFDB.ObjectUtils.reverse;
BDFDB.filterObject = BDFDB.ObjectUtils.filter;
BDFDB.pushToObject = BDFDB.ObjectUtils.push;
BDFDB.mapObject = BDFDB.ObjectUtils.map;
BDFDB.deepAssign = BDFDB.ObjectUtils.deepAssign;
BDFDB.isObjectEmpty = BDFDB.ObjectUtils.isEmpty;
BDFDB.sortArrayByKey = BDFDB.ArrayUtils.keySort;
@ -7315,7 +7313,6 @@ var BDFDB = {myPlugins: BDFDB && BDFDB.myPlugins || {}, cleanUps: BDFDB && BDFDB
BDFDB.WebModules = Object.assign({}, BDFDB.ModuleUtils);
BDFDB.WebModules.patch = (module, modulefunctions, plugin, patchfunctions) => {return BDFDB.ModuleUtils.patch(plugin, module, modulefunctions, patchfunctions)};
BDFDB.WebModules.unpatchall = BDFDB.ModuleUtils.unpatch;
BDFDB.ModuleUtils.initiateProcess = InternalBDFDB.initiateProcess;
BDFDB.WebModules.initiateProcess = InternalBDFDB.initiateProcess;
@ -7327,7 +7324,6 @@ var BDFDB = {myPlugins: BDFDB && BDFDB.myPlugins || {}, cleanUps: BDFDB && BDFDB
BDFDB.getGuildIcon = BDFDB.GuildUtils.getIcon;
BDFDB.getGuildBanner = BDFDB.GuildUtils.getBanner;
BDFDB.getServerID = BDFDB.GuildUtils.getId;
BDFDB.getServerDiv = BDFDB.GuildUtils.getDiv;
BDFDB.getServerData = BDFDB.GuildUtils.getData;
BDFDB.readServerList = BDFDB.GuildUtils.getAll;
@ -7341,21 +7337,14 @@ var BDFDB = {myPlugins: BDFDB && BDFDB.myPlugins || {}, cleanUps: BDFDB && BDFDB
BDFDB.getFolderID = BDFDB.FolderUtils.getId;
BDFDB.getFolderDiv = BDFDB.FolderUtils.getDiv;
BDFDB.getFolderData = BDFDB.FolderUtils.getData;
BDFDB.readFolderList = BDFDB.FolderUtils.getAll;
BDFDB.getChannelIcon = BDFDB.ChannelUtils.getIcon;
BDFDB.getChannelID = BDFDB.ChannelUtils.getId;
BDFDB.getChannelDiv = BDFDB.ChannelUtils.getDiv;
BDFDB.getChannelData = BDFDB.ChannelUtils.getData;
BDFDB.readChannelList = BDFDB.ChannelUtils.getAll;
BDFDB.getSelectedChannel = BDFDB.ChannelUtils.getSelected;
BDFDB.openChannelContextMenu = BDFDB.ChannelUtils.openMenu;
BDFDB.markChannelAsRead = BDFDB.ChannelUtils.markAsRead;
BDFDB.getDmID = BDFDB.DmUtils.getId;
BDFDB.getDmDiv = BDFDB.DmUtils.getDiv;
BDFDB.getDmData = BDFDB.DmUtils.getData;
BDFDB.getChannelIcon = BDFDB.DmUtils.getIcon;
BDFDB.readDmList = BDFDB.DmUtils.getAll;
BDFDB.saveAllData = (data, plugin, key) => {BDFDB.DataUtils.save(data, plugin, key)};
@ -7367,9 +7356,6 @@ var BDFDB = {myPlugins: BDFDB && BDFDB.myPlugins || {}, cleanUps: BDFDB && BDFDB
BDFDB.getAllData = (plugin, key) => {return BDFDB.DataUtils.get(plugin, key)};
BDFDB.getData = (id, plugin, key) => {return BDFDB.DataUtils.get(plugin, key, id)};
BDFDB.getDiscordFolder = BDFDB.DiscordUtils.getFolder;
BDFDB.getDiscordBuilt = BDFDB.DiscordUtils.getBuilt;
BDFDB.getDiscordVersion = BDFDB.DiscordUtils.getVersion;
BDFDB.getDiscordTheme = BDFDB.DiscordUtils.getTheme;
BDFDB.getDiscordMode = BDFDB.DiscordUtils.getMode;
BDFDB.getDiscordZoomFactor = BDFDB.DiscordUtils.getZoomFactor;
@ -7377,8 +7363,6 @@ var BDFDB = {myPlugins: BDFDB && BDFDB.myPlugins || {}, cleanUps: BDFDB && BDFDB
BDFDB.getPluginsFolder = BDFDB.BdUtils.getPluginsFolder;
BDFDB.getThemesFolder = BDFDB.BdUtils.getThemesFolder;
BDFDB.checkWhichRepoPage = BDFDB.BdUtils.checkRepoPage;
BDFDB.isBDv2 = BDFDB.BdUtils.isBDv2;
BDFDB.isPluginEnabled = BDFDB.BdUtils.isPluginEnabled;
BDFDB.getPlugin = BDFDB.BdUtils.getPlugin;
BDFDB.isThemeEnabled = BDFDB.BdUtils.isThemeEnabled;

File diff suppressed because one or more lines are too long

View File

@ -130,41 +130,41 @@ class BadgesEverywhere {
var indicators = BDFDB.getAllData(this, "indicators");
var settingsitems = [], inneritems = [];
for (let key in settings) settingsitems.push(BDFDB.React.createElement(BDFDB.LibraryComponents.SettingsSwitch, {
for (let key in settings) settingsitems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSwitch, {
className: BDFDB.disCN.marginbottom8,
plugin: this,
keys: ["settings", key],
label: this.defaults.settings[key].description,
value: settings[key]
}));
for (let flag in badges) inneritems.push(BDFDB.React.createElement(BDFDB.LibraryComponents.SettingsSwitch, {
for (let flag in badges) inneritems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSwitch, {
className: BDFDB.disCN.marginbottom8,
plugin: this,
keys: ["badges", flag],
label: this.defaults.badges[flag].name,
value: badges[flag],
labelchildren: [
BDFDB.React.elementToReact(BDFDB.htmlToElement(`<span class="BE-badges BE-badges-settings ${BDFDB.disCN.userprofiletopsectionplaying}" style="all: unset !important;">${Array.isArray(this.defaults.badges[flag].types) ? this.defaults.badges[flag].types.map(rank => this.createBadge("settings", flag, rank)).join("") : this.createBadge("settings", flag)}</span>`)),
BDFDB.React.elementToReact(BDFDB.htmlToElement(`<span class="BE-badges BE-badges-settings ${BDFDB.disCN.userprofiletopsectionnormal}" style="all: unset !important;">${Array.isArray(this.defaults.badges[flag].types) ? this.defaults.badges[flag].types.map(rank => this.createBadge("settings", flag, rank)).join("") : this.createBadge("settings", flag)}</span>`))
BDFDB.ReactUtils.elementToReact(BDFDB.htmlToElement(`<span class="BE-badges BE-badges-settings ${BDFDB.disCN.userprofiletopsectionplaying}" style="all: unset !important;">${Array.isArray(this.defaults.badges[flag].types) ? this.defaults.badges[flag].types.map(rank => this.createBadge("settings", flag, rank)).join("") : this.createBadge("settings", flag)}</span>`)),
BDFDB.ReactUtils.elementToReact(BDFDB.htmlToElement(`<span class="BE-badges BE-badges-settings ${BDFDB.disCN.userprofiletopsectionnormal}" style="all: unset !important;">${Array.isArray(this.defaults.badges[flag].types) ? this.defaults.badges[flag].types.map(rank => this.createBadge("settings", flag, rank)).join("") : this.createBadge("settings", flag)}</span>`))
]
}));
for (let flag in indicators) inneritems.push(BDFDB.React.createElement(BDFDB.LibraryComponents.SettingsSwitch, {
for (let flag in indicators) inneritems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSwitch, {
className: BDFDB.disCN.marginbottom8,
plugin: this,
keys: ["indicators", flag],
label: this.defaults.indicators[flag].name,
value: indicators[flag],
labelchildren: [
BDFDB.React.elementToReact(BDFDB.htmlToElement(`<span class="BE-badges BE-badges-settings ${BDFDB.disCN.userprofiletopsectionplaying}" style="all: unset !important;">${this.createBadge("settings", flag)}</span>`)),
BDFDB.React.elementToReact(BDFDB.htmlToElement(`<span class="BE-badges BE-badges-settings ${BDFDB.disCN.userprofiletopsectionnormal}" style="all: unset !important;">${this.createBadge("settings", flag)}</span>`))
BDFDB.ReactUtils.elementToReact(BDFDB.htmlToElement(`<span class="BE-badges BE-badges-settings ${BDFDB.disCN.userprofiletopsectionplaying}" style="all: unset !important;">${this.createBadge("settings", flag)}</span>`)),
BDFDB.ReactUtils.elementToReact(BDFDB.htmlToElement(`<span class="BE-badges BE-badges-settings ${BDFDB.disCN.userprofiletopsectionnormal}" style="all: unset !important;">${this.createBadge("settings", flag)}</span>`))
]
}));
settingsitems.push(BDFDB.React.createElement(BDFDB.LibraryComponents.SettingsPanelInner, {
settingsitems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsPanelInner, {
title: "Display Badges:",
children: inneritems
}));
return BDFDB.createSettingsPanel(this, settingsitems);
return BDFDB.PluginUtils.createSettingsPanel(this, settingsitems);
}
//legacy
@ -191,15 +191,13 @@ class BadgesEverywhere {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
this.BadgeClasses = BDFDB.WebModules.findByProperties("profileBadgeStaff", "profileBadgePremium");
this.BadgeClasses = BDFDB.ModuleUtils.findByProperties("profileBadgeStaff", "profileBadgePremium");
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
stop () {
@ -207,7 +205,7 @@ class BadgesEverywhere {
this.stopping = true;
BDFDB.removeEles(".BE-badges");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -219,7 +217,7 @@ class BadgesEverywhere {
}
processMessageUsername (instance, wrapper, returnvalue) {
let message = BDFDB.getReactValue(instance, "props.message");
let message = BDFDB.ReactUtils.getValue(instance, "props.message");
if (message) {
let username = wrapper.querySelector(BDFDB.dotCN.messageusername);
if (username && BDFDB.getData("showInChat", this, "settings")) this.addBadges(message.author, wrapper, "chat");
@ -233,7 +231,7 @@ class BadgesEverywhere {
processStandardSidebarView (instance, wrapper, returnvalue) {
if (this.SettingsUpdated) {
delete this.SettingsUpdated;
BDFDB.WebModules.forceAllUpdates(this);
BDFDB.ModuleUtils.forceAllUpdates(this);
}
}
@ -260,10 +258,8 @@ class BadgesEverywhere {
}
else if (!this.loadedusers[info.id]) {
this.requestedusers[info.id].push([wrapper,type]);
}
else {
this.addToWrapper(info, wrapper, type);
}
});
else this.addToWrapper(info, wrapper, type);
}
addToWrapper (info, wrapper, type) {
@ -281,7 +277,7 @@ class BadgesEverywhere {
let text = this.defaults.badges[flag].name;
if (flag == this.nitroflag && settings.showNitroDate) text = BDFDB.LanguageUtils.LanguageStringsFormat("PREMIUM_BADGE_TOOLTIP", new Date(this.loadedusers[info.id].premium_since));
else if (flag == this.boostflag && settings.showNitroDate) text = BDFDB.LanguageUtils.LanguageStringsFormat("PREMIUM_GUILD_SUBSCRIPTION_TOOLTIP", new Date(this.loadedusers[info.id].premium_guild_since));
BDFDB.createTooltip(text, badge, {type:"top", style:"white-space: nowrap; max-width: unset"});
BDFDB.TooltipUtils.create(badge, text, {type:"top", style:"white-space: nowrap; max-width: unset"});
});
}
}
@ -289,7 +285,9 @@ class BadgesEverywhere {
if (indicators.CURRENT_GUILD_BOOST && member && member.premiumSince) {
let badge = BDFDB.htmlToElement(this.createBadge(type, "CURRENT_GUILD_BOOST"));
badgewrapper.appendChild(badge);
badge.addEventListener("mouseenter", () => {BDFDB.createTooltip(settings.showNitroDate ? BDFDB.LanguageUtils.LanguageStringsFormat("PREMIUM_GUILD_SUBSCRIPTION_TOOLTIP", new Date(member.premiumSince)) : "Boosting current server", badge, {type:"top", style:"white-space: nowrap; max-width: unset"});});
badge.addEventListener("mouseenter", () => {
BDFDB.TooltipUtils.create(badge, settings.showNitroDate ? BDFDB.LanguageUtils.LanguageStringsFormat("PREMIUM_GUILD_SUBSCRIPTION_TOOLTIP", new Date(member.premiumSince)) : "Boosting current server", {type:"top", style:"white-space: nowrap; max-width: unset"});
});
}
if (badgewrapper.firstChild) {
if (header) {

View File

@ -49,13 +49,11 @@ class BetterFriendCount {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.WebModules.forceAllUpdates(this, 'TabBar');
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this, 'TabBar');
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
stop () {
@ -63,7 +61,7 @@ class BetterFriendCount {
this.stopping = true;
BDFDB.removeEles(".betterfriendcount-badge");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -79,29 +77,29 @@ class BetterFriendCount {
let newchildren = [Array.isArray(child.props.children) ? child.props.children[0] : child.props.children];
switch (child.props.id) {
case "ALL":
newchildren.push(BDFDB.React.createElement(BDFDB.LibraryComponents.NumberBadge, {
newchildren.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.NumberBadge, {
className: BDFDB.disCN.settingstabbarbadge,
count: relationshipCount.FRIEND
}));
break;
case "ONLINE":
newchildren.push(BDFDB.React.createElement(BDFDB.LibraryComponents.NumberBadge, {
newchildren.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.NumberBadge, {
className: BDFDB.disCN.settingstabbarbadge,
count: BDFDB.LibraryModules.StatusMetaUtils.getOnlineFriendCount()
}));
break;
case "PENDING":
newchildren.push(BDFDB.React.createElement(BDFDB.LibraryComponents.NumberBadge, {
newchildren.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.NumberBadge, {
className: BDFDB.disCN.settingstabbarbadge,
count: relationshipCount.PENDING_INCOMING
}));
newchildren.push(BDFDB.React.createElement(BDFDB.LibraryComponents.NumberBadge, {
newchildren.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.NumberBadge, {
className: BDFDB.disCN.settingstabbarbadge,
count: relationshipCount.PENDING_OUTGOING
}));
break;
case "BLOCKED":
newchildren.push(BDFDB.React.createElement(BDFDB.LibraryComponents.NumberBadge, {
newchildren.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.NumberBadge, {
className: BDFDB.disCN.settingstabbarbadge,
count: relationshipCount.BLOCKED
}));
@ -116,7 +114,7 @@ class BetterFriendCount {
clearTimeout(this.rerenderTimeout);
this.rerenderTimeout = setTimeout(() => {
delete this.rerenderTimeout;
BDFDB.WebModules.forceAllUpdates(this, 'TabBar');
BDFDB.ModuleUtils.forceAllUpdates(this, 'TabBar');
}, 1000);
}
}

View File

@ -43,13 +43,11 @@ class BetterNsfwTag {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
stop () {
@ -57,7 +55,7 @@ class BetterNsfwTag {
this.stopping = true;
BDFDB.removeEles(".NSFW-tag");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}

View File

@ -106,13 +106,11 @@ class BetterSearchPage {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
stop () {
@ -120,7 +118,7 @@ class BetterSearchPage {
this.stopping = true;
BDFDB.removeEles(".BSP-pagination",".BSP-pagination-button",".BSP-pagination-jumpinput");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -135,7 +133,7 @@ class BetterSearchPage {
if (this.SettingsUpdated) {
delete this.SettingsUpdated;
BDFDB.removeEles(".BSP-pagination",".BSP-pagination-button",".BSP-pagination-jumpinput");
BDFDB.WebModules.forceAllUpdates(this);
BDFDB.ModuleUtils.forceAllUpdates(this);
}
}
@ -151,7 +149,7 @@ class BetterSearchPage {
currentpage = currentpage < maxpage ? currentpage : maxpage;
maxpage = temppage < maxpage ? maxpage : temppage;
if (maxpage > 201) {
if (currentpage == 201) BDFDB.showToast("Discord doesn't allow you to go further than page 201.",{type:"error"});
if (currentpage == 201) BDFDB.NotificationUtils.toast("Discord doesn't allow you to go further than page 201.",{type:"error"});
maxpage = 201;
}
if (currentpage == maxpage && maxpage == 201) BDFDB.addClass(pagination.querySelector(BDFDB.dotCN.searchresultspaginationnext), BDFDB.disCN.searchresultspaginationdisabled);
@ -176,7 +174,7 @@ class BetterSearchPage {
let value = input.value;
if (value < 1 || value > maxpage) {
input.value = currentpage;
if (maxpage == 201 && value > maxpage) BDFDB.showToast("Discord doesn't allow you to go further than page 201.",{type:"error"});
if (maxpage == 201 && value > maxpage) BDFDB.NotificationUtils.toast("Discord doesn't allow you to go further than page 201.",{type:"error"});
}
else if (value < currentpage) {
for (; currentpage - value > 0; value++) {
@ -189,31 +187,31 @@ class BetterSearchPage {
}
}
};
BDFDB.addEventListener(this, searchResultsWrapper, "click", BDFDB.dotCN.searchresultspaginationdisabled, e => {
BDFDB.stopEvent(e);
BDFDB.ListenerUtils.add(this, searchResultsWrapper, "click", BDFDB.dotCN.searchresultspaginationdisabled, e => {
BDFDB.ListenerUtils.stopEvent(e);
});
BDFDB.addEventListener(this, searchResultsWrapper, "click", `.BSP-pagination ${BDFDB.dotCN.searchresultspaginationprevious + BDFDB.notCN.searchresultspaginationdisabled}`, () => {
BDFDB.ListenerUtils.add(this, searchResultsWrapper, "click", `.BSP-pagination ${BDFDB.dotCN.searchresultspaginationprevious + BDFDB.notCN.searchresultspaginationdisabled}`, () => {
BDFDB.LibraryModules.SearchPageUtils.searchPreviousPage(searchId);
});
BDFDB.addEventListener(this, searchResultsWrapper, "click", `.BSP-pagination ${BDFDB.dotCN.searchresultspaginationnext + BDFDB.notCN.searchresultspaginationdisabled}`, () => {
BDFDB.ListenerUtils.add(this, searchResultsWrapper, "click", `.BSP-pagination ${BDFDB.dotCN.searchresultspaginationnext + BDFDB.notCN.searchresultspaginationdisabled}`, () => {
BDFDB.LibraryModules.SearchPageUtils.searchNextPage(searchId);
});
BDFDB.addEventListener(this, searchResultsWrapper, "click", `.BSP-pagination-first${BDFDB.notCN.searchresultspaginationdisabled}`, () => {
BDFDB.ListenerUtils.add(this, searchResultsWrapper, "click", `.BSP-pagination-first${BDFDB.notCN.searchresultspaginationdisabled}`, () => {
for (let i = 0; currentpage - 1 - i > 0; i++) BDFDB.LibraryModules.SearchPageUtils.searchPreviousPage(searchId);
});
BDFDB.addEventListener(this, searchResultsWrapper, "click", `.BSP-pagination-last${BDFDB.notCN.searchresultspaginationdisabled}`, () => {
BDFDB.ListenerUtils.add(this, searchResultsWrapper, "click", `.BSP-pagination-last${BDFDB.notCN.searchresultspaginationdisabled}`, () => {
for (let i = 0; maxpage - currentpage - i > 0; i++) BDFDB.LibraryModules.SearchPageUtils.searchNextPage(searchId);
});
BDFDB.addEventListener(this, searchResultsWrapper, "click", `.BSP-pagination-jump${BDFDB.notCN.searchresultspaginationdisabled}`, e => {
BDFDB.ListenerUtils.add(this, searchResultsWrapper, "click", `.BSP-pagination-jump${BDFDB.notCN.searchresultspaginationdisabled}`, e => {
doJump(e.currentTarget.parentElement.querySelector(`.BSP-pagination-jumpinput ${BDFDB.dotCN.inputmini}`));
});
BDFDB.addEventListener(this, searchResultsWrapper, "keydown", `.BSP-pagination-jumpinput ${BDFDB.dotCN.inputmini}`, e => {
BDFDB.ListenerUtils.add(this, searchResultsWrapper, "keydown", `.BSP-pagination-jumpinput ${BDFDB.dotCN.inputmini}`, e => {
let label = e.currentTarget.getAttribute("aria-label");
if (label) BDFDB.createTooltip(label, e.currentTarget, {type:"top"});
if (label) BDFDB.TooltipUtils.create(e.currentTarget, label, {type:"top"});
});
BDFDB.addEventListener(this, searchResultsWrapper, "mouseenter", `.pagination-button${BDFDB.notCN.searchresultspaginationdisabled}`, e => {
BDFDB.ListenerUtils.add(this, searchResultsWrapper, "mouseenter", `.pagination-button${BDFDB.notCN.searchresultspaginationdisabled}`, e => {
let label = e.currentTarget.getAttribute("aria-label");
if (label) BDFDB.createTooltip(label, e.currentTarget, {type:"top"});
if (label) BDFDB.TooltipUtils.create(e.currentTarget, label, {type:"top"});
});
}
}

View File

@ -109,13 +109,11 @@ class CharCounter {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
@ -125,7 +123,7 @@ class CharCounter {
BDFDB.removeEles(".charcounter");
BDFDB.removeClasses("charcounter-added");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -168,25 +166,25 @@ class CharCounter {
BDFDB.addClass(input.parentElement.parentElement, "charcounter-added");
if (type == "nickname") input.setAttribute("maxlength", 32);
BDFDB.addEventListener(this, input, "keydown click change", e => {
BDFDB.ListenerUtils.add(this, input, "keydown click change", e => {
clearTimeout(input.charcountertimeout);
input.charcountertimeout = setTimeout(() => {updateCounter();},100);
});
BDFDB.addEventListener(this, input, "mousedown", e => {
BDFDB.addEventListener(this, document, "mouseup", () => {
BDFDB.removeEventListener(this, document);
if (input.selectionEnd - input.selectionStart) setImmediate(() => {BDFDB.addEventListener(this, document, "click", () => {
var contexttype = BDFDB.getReactValue(document.querySelector(BDFDB.dotCN.contextmenu), "return.stateNode.props.type");
BDFDB.ListenerUtils.add(this, input, "mousedown", e => {
BDFDB.ListenerUtils.add(this, document, "mouseup", () => {
BDFDB.ListenerUtils.remove(this, document);
if (input.selectionEnd - input.selectionStart) setImmediate(() => {BDFDB.ListenerUtils.add(this, document, "click", () => {
var contexttype = BDFDB.ReactUtils.getValue(document.querySelector(BDFDB.dotCN.contextmenu), "return.stateNode.props.type");
if (!contexttype || !contexttype.startsWith("CHANNEL_TEXT_AREA")) {
input.selectionStart = 0;
input.selectionEnd = 0;
updateCounter();
}
else setTimeout(() => {updateCounter();},100);
BDFDB.removeEventListener(this, document);
BDFDB.ListenerUtils.remove(this, document);
});});
});
BDFDB.addEventListener(this, document, "mousemove", () => {setTimeout(() => {updateCounter();},10);});
BDFDB.ListenerUtils.add(this, document, "mousemove", () => {setTimeout(() => {updateCounter();},10);});
});
updateCounter();

View File

@ -74,7 +74,7 @@ class ChatAliases {
<input id="input-file" type="file" style="display:none!important;">
</button>
</div>
${BDFDB.removeFromArray(Object.keys(this.defaults.configs), "file").map((key, i) =>
${BDFDB.ArrayUtils.remove(Object.keys(this.defaults.configs), "file").map((key, i) =>
`<div class="${BDFDB.disCNS.flex + BDFDB.disCNS.horizontal + BDFDB.disCNS.justifystart + BDFDB.disCNS.aligncenter + BDFDB.disCNS.nowrap + BDFDB.disCN.marginbottom8}" style="flex: 1 1 auto;">
<h3 class="${BDFDB.disCNS.titledefault + BDFDB.disCNS.marginreset + BDFDB.disCNS.weightmedium + BDFDB.disCNS.titlesize16 + BDFDB.disCNS.height24 + BDFDB.disCN.flexchild}" style="flex: 1 1 auto;">${this.defaults.configs[key].description}</h3>
<div class="${BDFDB.disCNS.flexchild + BDFDB.disCNS.switchenabled + BDFDB.disCNS.switch + BDFDB.disCNS.switchvalue + BDFDB.disCNS.switchsizedefault + BDFDB.disCNS.switchsize + BDFDB.disCN.switchthemedefault}" style="flex: 0 0 auto;">
@ -128,11 +128,11 @@ class ChatAliases {
BDFDB.initElements(settingspanel, this);
BDFDB.addEventListener(this, settingspanel, "keypress", ".wordInputs", e => {if (e.which == 13) this.updateContainer(settingspanel, e.currentTarget);});
BDFDB.addEventListener(this, settingspanel, "keyup", BDFDB.dotCN.gamenameinput, e => {this.updateWord(e.currentTarget);});
BDFDB.addEventListener(this, settingspanel, "click", ".btn-addword, .remove-word, .remove-all", e => {this.updateContainer(settingspanel, e.currentTarget);});
BDFDB.addEventListener(this, settingspanel, "click", BDFDB.dotCN.checkboxinput, e => {this.updateConfig(e.currentTarget);});
BDFDB.addEventListener(this, settingspanel, "click", ".toggle-info", e => {this.toggleInfo(e.currentTarget);});
BDFDB.ListenerUtils.add(this, settingspanel, "keypress", ".wordInputs", e => {if (e.which == 13) this.updateContainer(settingspanel, e.currentTarget);});
BDFDB.ListenerUtils.add(this, settingspanel, "keyup", BDFDB.dotCN.gamenameinput, e => {this.updateWord(e.currentTarget);});
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".btn-addword, .remove-word, .remove-all", e => {this.updateContainer(settingspanel, e.currentTarget);});
BDFDB.ListenerUtils.add(this, settingspanel, "click", BDFDB.dotCN.checkboxinput, e => {this.updateConfig(e.currentTarget);});
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".toggle-info", e => {this.toggleInfo(e.currentTarget);});
return settingspanel;
}
@ -160,19 +160,17 @@ class ChatAliases {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
this.aliases = BDFDB.loadAllData(this, "words");
BDFDB.addEventListener(document, "click", e => {
BDFDB.ListenerUtils.add(document, "click", e => {
if (!e.target.tagName === "TEXTAREA") BDFDB.removeEles(".autocompleteAliases", ".autocompleteAliasesRow");
});
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
stop () {
@ -180,7 +178,7 @@ class ChatAliases {
this.stopping = true;
BDFDB.removeEles(".autocompleteAliases", ".autocompleteAliasesRow");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -305,10 +303,10 @@ class ChatAliases {
appendItem (menu, returnvalue, text) {
let [children, index] = BDFDB.getContextMenuGroupAndIndex(returnvalue, ["FluxContainer(MessageDeveloperModeGroup)", "DeveloperModeGroup"]);
const itemgroup = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
const itemgroup = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
className: `BDFDB-contextMenuItemGroup ${this.name}-contextMenuItemGroup`,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: "Add to ChatAliases",
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-addalias-contextMenuItem`,
action: e => {
@ -325,7 +323,7 @@ class ChatAliases {
processStandardSidebarView (instance, wrapper, returnvalue) {
if (this.SettingsUpdated) {
delete this.SettingsUpdated;
BDFDB.WebModules.forceAllUpdates(this);
BDFDB.ModuleUtils.forceAllUpdates(this);
}
}
@ -334,7 +332,7 @@ class ChatAliases {
var textarea = wrapper.querySelector("textarea");
if (!textarea) return;
var settings = BDFDB.getAllData(this, "settings");
BDFDB.addEventListener(this, textarea, "input", () => {
BDFDB.ListenerUtils.add(this, textarea, "input", () => {
if (this.format) {
this.format = false;
textarea.focus();
@ -346,18 +344,18 @@ class ChatAliases {
if (messageInput.text != null) {
document.execCommand("insertText", false, messageInput.text ? messageInput.text + " " : "");
}
if (messageInput.files.length > 0 && (instance.props.channel.type == 1 || BDFDB.isUserAllowedTo("ATTACH_FILES"))) {
if (messageInput.files.length > 0 && (instance.props.channel.type == 1 || BDFDB.UserUtils.can("ATTACH_FILES"))) {
BDFDB.LibraryModules.UploadUtils.instantBatchUpload(instance.props.channel.id, messageInput.files);
}
}
}
}
});
BDFDB.addEventListener(this, textarea, "keydown", e => {
BDFDB.ListenerUtils.add(this, textarea, "keydown", e => {
let autocompletemenu = textarea.parentElement.querySelector(BDFDB.dotCN.autocomplete);
if (autocompletemenu && (e.which == 9 || e.which == 13)) {
if (BDFDB.containsClass(autocompletemenu.querySelector(BDFDB.dotCN.autocompleteselected).parentElement, "autocompleteAliasesRow")) {
BDFDB.stopEvent(e);
BDFDB.ListenerUtils.stopEvent(e);
this.swapWordWithAlias(textarea);
}
}
@ -365,7 +363,7 @@ class ChatAliases {
let autocompleteitems = autocompletemenu.querySelectorAll(BDFDB.dotCN.autocompleteselectable + ":not(.autocompleteAliasesSelector)");
let selected = autocompletemenu.querySelector(BDFDB.dotCN.autocompleteselected);
if (BDFDB.containsClass(selected, "autocompleteAliasesSelector") || autocompleteitems[e.which == 38 ? 0 : (autocompleteitems.length-1)] == selected) {
BDFDB.stopEvent(e);
BDFDB.ListenerUtils.stopEvent(e);
let next = this.getNextSelection(autocompletemenu, null, e.which == 38 ? false : true);
BDFDB.removeClass(selected, BDFDB.disCN.autocompleteselected);
BDFDB.addClass(selected, BDFDB.disCN.autocompleteselector);
@ -383,7 +381,7 @@ class ChatAliases {
if (!e.ctrlKey && e.which != 38 && e.which != 40 && !(e.which == 39 && textarea.selectionStart == textarea.selectionEnd && textarea.selectionEnd == textarea.value.length)) BDFDB.removeEles(".autocompleteAliases", ".autocompleteAliasesRow");
});
BDFDB.addEventListener(this, textarea, "click", e => {
BDFDB.ListenerUtils.add(this, textarea, "click", e => {
if (settings.addAutoComplete && textarea.selectionStart == textarea.selectionEnd && textarea.selectionEnd == textarea.value.length) setImmediate(() => {this.addAutoCompleteMenu(textarea);});
});
}
@ -393,7 +391,7 @@ class ChatAliases {
if (!textarea.value || textarea.parentElement.querySelector(".autocompleteAliasesRow")) return;
let words = textarea.value.split(/\s/);
let lastword = words[words.length-1].trim();
if (words.length == 1 && BDFDB.isPluginEnabled("WriteUpperCase")) {
if (words.length == 1 && BDFDB.BdUtils.isPluginEnabled("WriteUpperCase")) {
let first = lastword.charAt(0);
if (first === first.toUpperCase() && lastword.toLowerCase().indexOf("http") == 0) {
lastword = lastword.charAt(0).toLowerCase() + lastword.slice(1);
@ -417,7 +415,7 @@ class ChatAliases {
}
}
}
if (!BDFDB.isObjectEmpty(matchedaliases)) {
if (!BDFDB.ObjectUtils.isEmpty(matchedaliases)) {
let autocompletemenu = textarea.parentElement.querySelector(BDFDB.dotCNS.autocomplete + BDFDB.dotCN.autocompleteinner), amount = 15;
if (!autocompletemenu) {
autocompletemenu = BDFDB.htmlToElement(`<div class="${BDFDB.disCNS.autocomplete + BDFDB.disCN.autocomplete2} autocompleteAliases"><div class="${BDFDB.disCN.autocompleteinner}"></div></div>`);
@ -429,7 +427,7 @@ class ChatAliases {
}
let autocompleterowheader = BDFDB.htmlToElement(`<div class="${BDFDB.disCNS.autocompleterowvertical + BDFDB.disCN.autocompleterow} autocompleteAliasesRow"><div class="${BDFDB.disCN.autocompleteselector} autocompleteAliasesSelector"><div class="${BDFDB.disCNS.autocompletecontenttitle + BDFDB.disCNS.small + BDFDB.disCNS.titlesize12 + BDFDB.disCNS.height16 + BDFDB.disCN.weightsemibold}">Aliases: <strong class="lastword">${BDFDB.encodeToHTML(lastword)}</strong></div></div></div>`);
autocompletemenu.appendChild(autocompleterowheader);
BDFDB.addEventListener(this, autocompletemenu, "mouseenter", BDFDB.dotCN.autocompleteselectable, e => {
BDFDB.ListenerUtils.add(this, autocompletemenu, "mouseenter", BDFDB.dotCN.autocompleteselectable, e => {
var selected = autocompletemenu.querySelectorAll(BDFDB.dotCN.autocompleteselected);
BDFDB.removeClass(selected, BDFDB.disCN.autocompleteselected);
BDFDB.addClass(selected, BDFDB.disCN.autocompleteselector);
@ -537,12 +535,12 @@ class ChatAliases {
let invalidinputs = [];
let type = "";
if (!wordvalueinput.value.trim()) {
BDFDB.removeFromArray(validinputs, wordvalueinput);
BDFDB.ArrayUtils.remove(validinputs, wordvalueinput);
invalidinputs.push(wordvalueinput);
type += "Wordvalue";
}
if (!replacevalueinput.value.trim()) {
BDFDB.removeFromArray(validinputs, replacevalueinput);
BDFDB.ArrayUtils.remove(validinputs, replacevalueinput);
invalidinputs.push(replacevalueinput);
type += ((type ? " and " : "") + "Replacevalue");
}
@ -559,12 +557,12 @@ class ChatAliases {
addbutton.disabled = true;
BDFDB.addClass(invalidinputs, "invalid");
addbutton.style.setProperty("pointer-events", "none", "important");
BDFDB.createTooltip("Choose a " + type, addbutton, {type: "right", color: "red", selector: "chataliases-disabled-tooltip"});
BDFDB.TooltipUtils.create(addbutton, "Choose a " + type, {type: "right", color: "red", selector: "chataliases-disabled-tooltip"});
};
wordvalueinput.addEventListener("input", checkInputs);
replacevalueinput.addEventListener("input", checkInputs);
BDFDB.addChildEventListener(chataliasesAddModal, "click", BDFDB.dotCNC.backdrop + BDFDB.dotCNC.modalclose + ".btn-add", () => {
BDFDB.ListenerUtils.addToChildren(chataliasesAddModal, "click", BDFDB.dotCNC.backdrop + BDFDB.dotCNC.modalclose + ".btn-add", () => {
BDFDB.removeEles(".chataliases-disabled-tooltip");
});

View File

@ -143,11 +143,11 @@ class ChatFilter {
BDFDB.initElements(settingspanel, this);
BDFDB.addEventListener(this, settingspanel, "keypress", ".wordInputs", e => {if (e.which == 13) this.updateContainer(settingspanel, e.currentTarget);});
BDFDB.addEventListener(this, settingspanel, "keyup", ".defaultInputs", e => {this.saveReplace(e.currentTarget);});
BDFDB.addEventListener(this, settingspanel, "click", ".btn-addword, .remove-word, .remove-all", e => {this.updateContainer(settingspanel, e.currentTarget);});
BDFDB.addEventListener(this, settingspanel, "click", BDFDB.dotCN.checkboxinput, e => {this.updateConfig(e.currentTarget);});
BDFDB.addEventListener(this, settingspanel, "click", ".toggle-info", e => {this.toggleInfo(e.currentTarget);});
BDFDB.ListenerUtils.add(this, settingspanel, "keypress", ".wordInputs", e => {if (e.which == 13) this.updateContainer(settingspanel, e.currentTarget);});
BDFDB.ListenerUtils.add(this, settingspanel, "keyup", ".defaultInputs", e => {this.saveReplace(e.currentTarget);});
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".btn-addword, .remove-word, .remove-all", e => {this.updateContainer(settingspanel, e.currentTarget);});
BDFDB.ListenerUtils.add(this, settingspanel, "click", BDFDB.dotCN.checkboxinput, e => {this.updateConfig(e.currentTarget);});
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".toggle-info", e => {this.toggleInfo(e.currentTarget);});
return settingspanel;
}
@ -176,16 +176,14 @@ class ChatFilter {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
this.words = BDFDB.loadAllData(this, "words");
for (let rtype in this.defaults.replaces) if (!BDFDB.isObject(this.words[rtype])) this.words[rtype] = {};
for (let rtype in this.defaults.replaces) if (!BDFDB.ObjectUtils.is(this.words[rtype])) this.words[rtype] = {};
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
stop () {
@ -194,7 +192,7 @@ class ChatFilter {
document.querySelectorAll(`${BDFDB.dotCN.messagemarkup}.blocked, ${BDFDB.dotCN.messageaccessory}.censored, ${BDFDB.dotCN.messagemarkup}.blocked, ${BDFDB.dotCN.messageaccessory}.censored`).forEach(message => {this.resetMessage(message);});
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -297,10 +295,10 @@ class ChatFilter {
appendItem (menu, returnvalue, text) {
let [children, index] = BDFDB.getContextMenuGroupAndIndex(returnvalue, ["FluxContainer(MessageDeveloperModeGroup)", "DeveloperModeGroup"]);
const itemgroup = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
const itemgroup = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
className: `BDFDB-contextMenuItemGroup ${this.name}-contextMenuItemGroup`,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: "Add to ChatFilter",
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-addalias-contextMenuItem`,
action: e => {
@ -322,7 +320,7 @@ class ChatFilter {
if (this.SettingsUpdated) {
delete this.SettingsUpdated;
document.querySelectorAll(`${BDFDB.dotCN.messagemarkup}.blocked, ${BDFDB.dotCN.messageaccessory}.censored, ${BDFDB.dotCN.messagemarkup}.blocked, ${BDFDB.dotCN.messageaccessory}.censored`).forEach(message => {this.resetMessage(message);});
BDFDB.WebModules.forceAllUpdates(this);
BDFDB.ModuleUtils.forceAllUpdates(this);
}
}
@ -484,7 +482,7 @@ class ChatFilter {
addbutton.disabled = true;
BDFDB.addClass(wordvalueinput, "invalid");
addbutton.style.setProperty("pointer-events", "none", "important");
BDFDB.createTooltip("Choose a Wordvalue", {type: "right", color: "red", selector: "chatfilter-disabled-tooltip"});
BDFDB.TooltipUtils.create(wordvalueinput, "Choose a Wordvalue", {type: "right", color: "red", selector: "chatfilter-disabled-tooltip"});
}
else {
addbutton.disabled = false;
@ -494,7 +492,7 @@ class ChatFilter {
}
});
BDFDB.addChildEventListener(chatfilterAddModal, "click", BDFDB.dotCNC.backdrop + BDFDB.dotCNC.modalclose + ".btn-add", () => {
BDFDB.ListenerUtils.addToChildren(chatfilterAddModal, "click", BDFDB.dotCNC.backdrop + BDFDB.dotCNC.modalclose + ".btn-add", () => {
BDFDB.removeEles(".chatfilter-disabled-tooltip");
});
@ -508,7 +506,7 @@ class ChatFilter {
this.saveWord(wordvalueinput.value.trim(), replacevalueinput.value.trim(), rtype, configs);
BDFDB.saveAllData(this.words, this, "words");
document.querySelectorAll(`${BDFDB.dotCN.messagemarkup}.blocked, ${BDFDB.dotCN.messageaccessory}.censored, ${BDFDB.dotCN.messagemarkup}.blocked, ${BDFDB.dotCN.messageaccessory}.censored`).forEach(message => {this.resetMessage(message);});
BDFDB.WebModules.forceAllUpdates(this);
BDFDB.ModuleUtils.forceAllUpdates(this);
});
wordvalueinput.focus();
}

View File

@ -70,10 +70,10 @@ class CompleteTimestamps {
BDFDB.initElements(settingspanel, this);
BDFDB.addEventListener(this, settingspanel, "click", ".settings-switch", () => {setImmediate(() => {this.updateSettingsPanel(settingspanel);})});
BDFDB.addEventListener(this, settingspanel, "keyup", BDFDB.dotCN.input, () => {this.saveInputs(settingspanel);});
BDFDB.addEventListener(this, settingspanel, "click", ".toggle-info", e => {this.toggleInfo(e.currentTarget);});
BDFDB.addEventListener(this, settingspanel, "click", BDFDB.dotCN.selectcontrol, e => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".settings-switch", () => {setImmediate(() => {this.updateSettingsPanel(settingspanel);})});
BDFDB.ListenerUtils.add(this, settingspanel, "keyup", BDFDB.dotCN.input, () => {this.saveInputs(settingspanel);});
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".toggle-info", e => {this.toggleInfo(e.currentTarget);});
BDFDB.ListenerUtils.add(this, settingspanel, "click", BDFDB.dotCN.selectcontrol, e => {
BDFDB.openDropdownMenu(e, this.saveSelectChoice.bind(this), this.createSelectChoice.bind(this), this.languages);
});
return settingspanel;
@ -104,11 +104,11 @@ class CompleteTimestamps {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
this.languages = Object.assign({"own":{name:"Own",id:"own",integrated:false,dic:false}}, BDFDB.languages);
this.languages = Object.assign({"own":{name:"Own",id:"own",integrated:false,dic:false}}, BDFDB.LanguageUtils.languages);
BDFDB.addEventListener(this, document, "mouseenter", BDFDB.dotCNS.messagegroup + BDFDB.dotCN.messagecontent, e => {
BDFDB.ListenerUtils.add(this, document, "mouseenter", BDFDB.dotCNS.messagegroup + BDFDB.dotCN.messagecontent, e => {
if (BDFDB.getData("showOnHover", this, "settings")) {
let message = e.currentTarget;
let messagegroup = BDFDB.getParentEle(BDFDB.dotCN.messagegroup, message);
@ -116,24 +116,22 @@ class CompleteTimestamps {
let info = this.getMessageData(message, messagegroup);
if (!info || !info.timestamp || !info.timestamp._i) return;
let choice = BDFDB.getData("creationDateLang", this, "choices");
BDFDB.createTooltip(this.getTimestamp(this.languages[choice].id, info.timestamp._i), message, {type:"left", selector:"completetimestamp-tooltip"});
BDFDB.TooltipUtils.create(message, this.getTimestamp(this.languages[choice].id, info.timestamp._i), {type:"left", selector:"completetimestamp-tooltip"});
}
});
BDFDB.addEventListener(this, document, "mouseenter", BDFDB.dotCNS.messagegroup + BDFDB.dotCN.messageedited, e => {
BDFDB.ListenerUtils.add(this, document, "mouseenter", BDFDB.dotCNS.messagegroup + BDFDB.dotCN.messageedited, e => {
if (BDFDB.getData("changeForEdit", this, "settings")) {
let marker = e.currentTarget;
let time = marker.getAttribute("datetime");
if (!time) return;
let choice = BDFDB.getData("creationDateLang", this, "choices");
BDFDB.createTooltip(this.getTimestamp(this.languages[choice].id, time), marker, {type:"top", selector:"completetimestampedit-tooltip"});
BDFDB.TooltipUtils.create(marker, this.getTimestamp(this.languages[choice].id, time), {type:"top", selector:"completetimestampedit-tooltip"});
}
});
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
@ -146,7 +144,7 @@ class CompleteTimestamps {
BDFDB.removeLocalStyle(this.name + "CompactCorrection");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -193,7 +191,7 @@ class CompleteTimestamps {
}
processEmbed (instance, wrapper, returnvalue) {
let embed = BDFDB.getReactValue(instance, "props.embed");
let embed = BDFDB.ReactUtils.getValue(instance, "props.embed");
let footer = wrapper.querySelector(BDFDB.dotCN.embedfootertext);
if (footer && embed && embed.timestamp && BDFDB.getData("showInEmbed", this, "settings")) {
footer.lastChild.textContent = this.getTimestamp(this.languages[BDFDB.getData("creationDateLang", this, "choices")].id, embed.timestamp._i);
@ -203,7 +201,7 @@ class CompleteTimestamps {
processStandardSidebarView (instance, wrapper, returnvalue) {
if (this.SettingsUpdated) {
delete this.SettingsUpdated;
BDFDB.WebModules.forceAllUpdates(this);
BDFDB.ModuleUtils.forceAllUpdates(this);
}
}
@ -220,7 +218,7 @@ class CompleteTimestamps {
getMessageData (div, messagegroup) {
let pos = Array.from(messagegroup.querySelectorAll("." + div.className.replace(/ /g, "."))).indexOf(div);
let instance = BDFDB.getReactInstance(messagegroup);
let instance = BDFDB.ReactUtils.getInstance(messagegroup);
if (!instance) return;
let info = instance.return.stateNode.props.messages;
return info && pos > -1 ? info[pos] : null;
@ -281,8 +279,8 @@ class CompleteTimestamps {
}
setMaxWidth () {
if (this.currentMode != BDFDB.getDiscordMode()) {
this.currentMode = BDFDB.getDiscordMode();
if (this.currentMode != BDFDB.DiscordUtils.getMode()) {
this.currentMode = BDFDB.DiscordUtils.getMode();
let timestamp = document.querySelector(BDFDB.dotCN.messagetimestampcompact);
if (timestamp) {
let choice = BDFDB.getData("creationDateLang", this, "choices");

View File

@ -43,18 +43,16 @@ class CopyRawMessage {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.PluginUtils.init(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;
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -64,10 +62,10 @@ class CopyRawMessage {
onMessageContextMenu (instance, menu, returnvalue) {
if (instance.props && instance.props.message && instance.props.message.content && instance.props.target && !menu.querySelector(`${this.name}-contextMenuItem`)) {
let [children, index] = BDFDB.getContextMenuGroupAndIndex(returnvalue, ["FluxContainer(MessageDeveloperModeGroup)", "DeveloperModeGroup"]);
const itemgroup = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
const itemgroup = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
className: `BDFDB-contextMenuItemGroup ${this.name}-contextMenuItemGroup`,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: BDFDB.LanguageUtils.LanguageStrings.COPY_TEXT + " (Raw)",
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-copyraw-contextMenuItem`,
action: e => {
@ -85,7 +83,7 @@ class CopyRawMessage {
onMessageOptionPopout (instance, popout, returnvalue) {
if (instance.props.message && instance.props.channel && instance._reactInternalFiber.memoizedProps.target && !popout.querySelector(".copyrawmessage-itembtn")) {
let [children, index] = BDFDB.getContextMenuGroupAndIndex(returnvalue, BDFDB.LanguageUtils.LanguageStrings.DELETE);
const copyItem = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
const copyItem = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: BDFDB.LanguageUtils.LanguageStrings.COPY_TEXT + " (Raw)",
className: `${BDFDB.disCN.optionpopoutitem} BDFDB-popoutMenuItem ${this.name}-popoutMenuItem ${this.name}-copyraw-popoutMenuItem`,
action: e => {
@ -98,7 +96,7 @@ class CopyRawMessage {
}
processMessage (instance, wrapper, returnvalue) {
if (instance.props && typeof instance.props.renderButtons == "function" && !wrapper.querySelector(BDFDB.dotCN.optionpopoutbutton) && BDFDB.getReactValue(instance, "props.message.author.id") != 1) {
if (instance.props && typeof instance.props.renderButtons == "function" && !wrapper.querySelector(BDFDB.dotCN.optionpopoutbutton) && BDFDB.ReactUtils.getValue(instance, "props.message.author.id") != 1) {
let buttonwrap = wrapper.querySelector(BDFDB.dotCN.messagebuttoncontainer);
if (buttonwrap) {
let optionPopoutButton = BDFDB.htmlToElement(`<div tabindex="0" class="${BDFDB.disCN.optionpopoutbutton}" aria-label="More Options" role="button"><svg name="OverflowMenu" class="${BDFDB.disCN.optionpopoutbuttonicon}" aria-hidden="false" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path d="M24 0v24H0V0z"></path><path fill="currentColor" d="M12 16c1.1045695 0 2 .8954305 2 2s-.8954305 2-2 2-2-.8954305-2-2 .8954305-2 2-2zm0-6c1.1045695 0 2 .8954305 2 2s-.8954305 2-2 2-2-.8954305-2-2 .8954305-2 2-2zm0-6c1.1045695 0 2 .8954305 2 2s-.8954305 2-2 2-2-.8954305-2-2 .8954305-2 2-2z"></path></g></svg></div>`);

View File

@ -90,10 +90,10 @@ class CreationDate {
BDFDB.initElements(settingspanel, this);
BDFDB.addEventListener(this, settingspanel, "click", ".settings-switch", () => {setImmediate(() => {this.updateSettingsPanel(settingspanel);})});
BDFDB.addEventListener(this, settingspanel, "keyup", BDFDB.dotCN.input, () => {this.saveInputs(settingspanel);});
BDFDB.addEventListener(this, settingspanel, "click", ".toggle-info", e => {this.toggleInfo(e.currentTarget);});
BDFDB.addEventListener(this, settingspanel, "click", BDFDB.dotCN.selectcontrol, e => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".settings-switch", () => {setImmediate(() => {this.updateSettingsPanel(settingspanel);})});
BDFDB.ListenerUtils.add(this, settingspanel, "keyup", BDFDB.dotCN.input, () => {this.saveInputs(settingspanel);});
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".toggle-info", e => {this.toggleInfo(e.currentTarget);});
BDFDB.ListenerUtils.add(this, settingspanel, "click", BDFDB.dotCN.selectcontrol, e => {
BDFDB.openDropdownMenu(e, this.saveSelectChoice.bind(this), this.createSelectChoice.bind(this), this.languages);
});
return settingspanel;
@ -123,15 +123,13 @@ class CreationDate {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
this.languages = Object.assign({"own":{name:"Own",id:"own",integrated:false,dic:false}}, BDFDB.languages);
this.languages = Object.assign({"own":{name:"Own",id:"own",integrated:false,dic:false}}, BDFDB.LanguageUtils.languages);
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
@ -140,7 +138,7 @@ class CreationDate {
this.stopping = true;
BDFDB.removeEles(".creationDate");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -198,7 +196,7 @@ class CreationDate {
let addTimestamp = (timestamp) => {
if (document.contains(container)) {
BDFDB.removeEles(container.querySelectorAll(".creationDate"));
if (BDFDB.isObject(container.CreationDateObserver)) container.CreationDateObserver.disconnect();
if (BDFDB.ObjectUtils.is(container.CreationDateObserver)) container.CreationDateObserver.disconnect();
let choice = BDFDB.getData("creationDateLang", this, "choices");
let nametag = container.querySelector(BDFDB.dotCN.nametag);
container.insertBefore(BDFDB.htmlToElement(`<div class="creationDate BDFDB-textscrollwrapper ${BDFDB.disCN.textrow}" style="max-width: ${BDFDB.getRects(BDFDB.getParentEle(popout ? BDFDB.dotCN.userpopoutheader : BDFDB.dotCN.userprofileheaderinfo, container)).width - 20}px !important; order: 8 !important;"><div class="BDFDB-textscroll">${this.labels.createdat_text.replace("{{time}}", this.getTimestamp(this.languages[choice].id, timestamp))}</div></div>`), nametag ? nametag.nextSibling : null);

View File

@ -80,24 +80,22 @@ class DisplayServersAsChannels {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.addClass(document.body, "DSAC-styled");
this.addCSS();
BDFDB.WebModules.forceAllUpdates(this);
BDFDB.ModuleUtils.forceAllUpdates(this);
BDFDB.addEventListener(this, document, "mouseenter", BDFDB.dotCN.guildouter, e => {
BDFDB.ListenerUtils.add(this, document, "mouseenter", BDFDB.dotCN.guildouter, e => {
if (e.currentTarget.querySelector(BDFDB.dotCN.guildpillwrapper + BDFDB.notCN.dmpill + "+ *")) BDFDB.appendLocalStyle("HideAllToolTips" + this.name, `${BDFDB.dotCN.tooltip} {display: none !important;}`);
});
BDFDB.addEventListener(this, document, "mouseleave", BDFDB.dotCN.guildouter, e => {
BDFDB.ListenerUtils.add(this, document, "mouseleave", BDFDB.dotCN.guildouter, e => {
if (e.currentTarget.querySelector(BDFDB.dotCN.guildpillwrapper + BDFDB.notCN.dmpill + "+ *") && !document.querySelector(BDFDB.dotCN.guildpillwrapper + BDFDB.notCN.dmpill + "+ *:hover")) BDFDB.removeLocalStyle("HideAllToolTips" + this.name);
});
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
stop () {
@ -116,7 +114,7 @@ class DisplayServersAsChannels {
changedSVG.removeAttribute("DSAC-oldViewBox");
}
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -126,7 +124,7 @@ class DisplayServersAsChannels {
processGuilds (instance, wrapper, returnvalue) {
var observer = new MutationObserver((changes, _) => {changes.forEach((change, i) => {if (change.addedNodes) {change.addedNodes.forEach((node) => {
if (node && BDFDB.containsClass(node, BDFDB.disCN.guildouter) && !node.querySelector(BDFDB.dotCN.guildserror)) {
this.changeServer(BDFDB.getServerData(node));
this.changeServer(BDFDB.GuildUtils.getData(node));
}
if (node && node.tagName && (node = node.querySelector(BDFDB.dotCN.guildbuttoncontainer)) != null) {
this.changeButton(node);
@ -135,9 +133,9 @@ class DisplayServersAsChannels {
this.changeError(node);
}
});}});});
BDFDB.addObserver(this, BDFDB.dotCN.guilds, {name:"serverListObserver",instance:observer}, {childList: true, subtree:true, attributes:true, attributeFilter: ["class", "draggable"], attributeOldValue: true});
BDFDB.ObserverUtils.connect(this, BDFDB.dotCN.guilds, {name:"serverListObserver",instance:observer}, {childList: true, subtree:true, attributes:true, attributeFilter: ["class", "draggable"], attributeOldValue: true});
BDFDB.readServerList().forEach(info => {this.changeServer(info);});
BDFDB.GuildUtils.getAll().forEach(info => {this.changeServer(info);});
document.querySelectorAll(BDFDB.dotCN.homebuttonpill + " + *").forEach(homebuttoncontainer => {this.changeHome(homebuttoncontainer);});
document.querySelectorAll(BDFDB.dotCN.guildbuttonpill + " + *").forEach(guildbuttoncontainer => {this.changeButton(guildbuttoncontainer);});
document.querySelectorAll(BDFDB.dotCN.guildserror).forEach(guildserror => {this.changeError(guildserror);});

View File

@ -58,18 +58,18 @@ class EditChannels {
var settings = BDFDB.getAllData(this, "settings");
var settingsitems = [], inneritems = [];
for (let key in settings) (!this.defaults.settings[key].inner ? settingsitems : inneritems).push(BDFDB.React.createElement(BDFDB.LibraryComponents.SettingsSwitch, {
for (let key in settings) (!this.defaults.settings[key].inner ? settingsitems : inneritems).push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSwitch, {
className: BDFDB.disCN.marginbottom8,
plugin: this,
keys: ["settings", key],
label: this.defaults.settings[key].description,
value: settings[key]
}));
settingsitems.push(BDFDB.React.createElement(BDFDB.LibraryComponents.SettingsPanelInner, {
settingsitems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsPanelInner, {
title: "Change Channels in:",
children: inneritems
}));
settingsitems.push(BDFDB.React.createElement(BDFDB.LibraryComponents.SettingsItem, {
settingsitems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, {
type: "Button",
className: BDFDB.disCN.marginbottom8,
color: BDFDB.LibraryComponents.Button.Colors.RED,
@ -83,7 +83,7 @@ class EditChannels {
children: BDFDB.LanguageUtils.LanguageStrings.RESET
}));
return BDFDB.createSettingsPanel(this, settingsitems);
return BDFDB.PluginUtils.createSettingsPanel(this, settingsitems);
}
//legacy
@ -110,16 +110,14 @@ class EditChannels {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
var observer = new MutationObserver(() => {this.changeAppTitle();});
BDFDB.addObserver(this, document.head.querySelector("title"), {name:"appTitleObserver",instance:observer}, {childList:true});
BDFDB.ObserverUtils.connect(this, document.head.querySelector("title"), {name:"appTitleObserver",instance:observer}, {childList:true});
this.forceUpdateAll();
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
stop () {
@ -133,7 +131,7 @@ class EditChannels {
BDFDB.removeEles(".autocompleteEditChannels", ".autocompleteEditChannelsRow");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -143,16 +141,16 @@ class EditChannels {
onChannelContextMenu (instance, menu, returnvalue) {
if (instance.props && instance.props.channel && !BDFDB.getParentEle(".container-hidden", instance.props.target) && !menu.querySelector(`${this.name}-contextMenuSubItem`)) {
let [children, index] = BDFDB.getContextMenuGroupAndIndex(returnvalue, ["FluxContainer(MessageDeveloperModeGroup)", "DeveloperModeGroup"]);
const itemgroup = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
const itemgroup = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
className: `BDFDB-contextMenuItemGroup ${this.name}-contextMenuItemGroup`,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuSubItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuSubItem, {
label: this.labels.context_localchannelsettings_text,
className: `BDFDB-contextMenuSubItem ${this.name}-contextMenuSubItem ${this.name}-channelsettings-contextMenuSubItem`,
render: [BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
render: [BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
className: `BDFDB-contextMenuItemGroup ${this.name}-contextMenuItemGroup`,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.submenu_channelsettings_text,
className: `BDFDB-ContextMenuItem ${this.name}-ContextMenuItem ${this.name}-channelsettings-ContextMenuItem`,
action: e => {
@ -160,7 +158,7 @@ class EditChannels {
this.showChannelSettings(instance.props.channel);
}
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.submenu_resetsettings_text,
className: `BDFDB-ContextMenuItem ${this.name}-ContextMenuItem ${this.name}-resetsettings-ContextMenuItem`,
disabled: !BDFDB.loadData(instance.props.channel.id, this, "channels"),
@ -182,7 +180,7 @@ class EditChannels {
forceUpdateAll () {
this.changeAppTitle();
BDFDB.WebModules.forceAllUpdates(this);
BDFDB.ModuleUtils.forceAllUpdates(this);
}
showChannelSettings (info) {
@ -193,31 +191,31 @@ class EditChannels {
header: this.labels.modal_header_text,
subheader: info.name,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_channelname_text,
className: BDFDB.disCN.marginbottom20 + " input-channelname",
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.TextInput, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TextInput, {
value: data.name,
placeholder: info.name,
autoFocus: true
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.FormComponents.FormDivider, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormDivider, {
className: BDFDB.disCN.dividerdefault
})
]
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_colorpicker1_text,
className: BDFDB.disCN.marginbottom20,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ColorSwatches, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ColorSwatches, {
color: data.color,
number: 1
})
]
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.SettingsItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, {
type: "Switch",
className: BDFDB.disCN.marginbottom20 + " input-inheritcolor",
label: this.labels.modal_inheritcolor_text,
@ -239,7 +237,7 @@ class EditChannels {
data.color = BDFDB.getSwatchColor(modal, 1);
console.log(data.color);
if (data.color != null && !BDFDB.isObject(data.color)) {
if (data.color != null && !BDFDB.ObjectUtils.is(data.color)) {
if (data.color[0] < 30 && data.color[1] < 30 && data.color[2] < 30) data.color = BDFDB.colorCHANGE(data.color, 30);
else if (data.color[0] > 225 && data.color[1] > 225 && data.color[2] > 225) data.color = BDFDB.colorCHANGE(data.color, -30);
}
@ -256,7 +254,7 @@ class EditChannels {
}
processChannelTextArea (instance, wrapper, returnvalue) {
let channel = BDFDB.getReactValue(instance, "props.channel");
let channel = BDFDB.ReactUtils.getValue(instance, "props.channel");
if (channel) {
var textarea = wrapper.querySelector("textarea");
if (!textarea) return;
@ -264,13 +262,13 @@ class EditChannels {
let data = this.getChannelData(channel.id, wrapper);
wrapper.querySelector("textarea").setAttribute("placeholder", BDFDB.LanguageUtils.LanguageStringsFormat("TEXTAREA_PLACEHOLDER", "#" + (data.name || channel.name)));
}
BDFDB.removeEventListener(this, textarea);
BDFDB.ListenerUtils.remove(this, textarea);
if (BDFDB.getData("changeInAutoComplete", this, "settings")) {
BDFDB.addEventListener(this, textarea, "keydown", e => {
BDFDB.ListenerUtils.add(this, textarea, "keydown", e => {
let autocompletemenu = textarea.parentElement.querySelector(BDFDB.dotCN.autocomplete);
if (autocompletemenu && (e.which == 9 || e.which == 13)) {
if (BDFDB.containsClass(autocompletemenu.querySelector(BDFDB.dotCN.autocompleteselected).parentElement, "autocompleteEditChannelsRow")) {
BDFDB.stopEvent(e);
BDFDB.ListenerUtils.stopEvent(e);
this.swapWordWithMention(textarea);
}
}
@ -278,7 +276,7 @@ class EditChannels {
let autocompleteitems = autocompletemenu.querySelectorAll(BDFDB.dotCN.autocompleteselectable + ":not(.autocompleteEditChannelsSelector)");
let selected = autocompletemenu.querySelector(BDFDB.dotCN.autocompleteselected);
if (BDFDB.containsClass(selected, "autocompleteEditChannelsSelector") || autocompleteitems[e.which == 38 ? 0 : (autocompleteitems.length-1)] == selected) {
BDFDB.stopEvent(e);
BDFDB.ListenerUtils.stopEvent(e);
let next = this.getNextSelection(autocompletemenu, null, e.which == 38 ? false : true);
BDFDB.removeClass(selected, BDFDB.disCN.autocompleteselected);
BDFDB.addClass(selected, BDFDB.disCN.autocompleteselector);
@ -296,7 +294,7 @@ class EditChannels {
if (!e.ctrlKey && e.which != 38 && e.which != 40 && !(e.which == 39 && textarea.selectionStart == textarea.selectionEnd && textarea.selectionEnd == textarea.value.length)) BDFDB.removeEles(".autocompleteEditChannels", ".autocompleteEditChannelsRow");
});
BDFDB.addEventListener(this, textarea, "click", e => {
BDFDB.ListenerUtils.add(this, textarea, "click", e => {
if (textarea.selectionStart == textarea.selectionEnd && textarea.selectionEnd == textarea.value.length) setImmediate(() => {this.addAutoCompleteMenu(textarea, channel);});
});
}
@ -304,7 +302,7 @@ class EditChannels {
}
processAuditLog (instance, wrapper, returnvalue) {
let channel = BDFDB.getReactValue(instance, "props.log.options.channel");
let channel = BDFDB.ReactUtils.getValue(instance, "props.log.options.channel");
if (channel) {
let hooks = wrapper.querySelectorAll(`${BDFDB.dotCN.flexchild} > span${BDFDB.notCN.auditloguserhook}`);
if (hooks.length > 0) this.changeChannel2(channel, hooks[0].firstChild);
@ -312,7 +310,7 @@ class EditChannels {
}
processInviteCard (instance, wrapper, returnvalue) {
let invite = BDFDB.getReactValue(instance, "props.invite");
let invite = BDFDB.ReactUtils.getValue(instance, "props.invite");
if (invite && invite.inviter && invite.channel) {
let channelname = wrapper.querySelector(BDFDB.dotCN.guildsettingsinvitechannelname);
if (channelname) this.changeChannel2(invite.channel, channelname);
@ -336,7 +334,7 @@ class EditChannels {
}
processHeaderBar (instance, wrapper, returnvalue) {
let channel_id = BDFDB.getReactValue(instance, "props.channelId") || BDFDB.getReactValue(instance, "_reactInternalFiber.return.memoizedProps.channelId");
let channel_id = BDFDB.ReactUtils.getValue(instance, "props.channelId") || BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.return.memoizedProps.channelId");
if (channel_id) {
let channelname = wrapper.querySelector(BDFDB.dotCN.channelheaderheaderbartitle);
if (channelname) {
@ -346,7 +344,7 @@ class EditChannels {
else {
if (channel.type == 1) channel = BDFDB.LibraryModules.UserStore.getUser(channel.recipients[0]) || channel;
if (channelname.EditChannelsChangeObserver && typeof channelname.EditChannelsChangeObserver.disconnect == "function") channelname.EditChannelsChangeObserver.disconnect();
if (BDFDB.isPluginEnabled("EditUsers")) BDFDB.getPlugin("EditUsers").changeName(channel, channelname);
if (BDFDB.BdUtils.isPluginEnabled("EditUsers")) BDFDB.BdUtils.getPlugin("EditUsers").changeName(channel, channelname);
else {
channelname.style.removeProperty("color");
channelname.style.removeProperty("background");
@ -361,10 +359,10 @@ class EditChannels {
processClickable (instance, wrapper, returnvalue) {
if (!instance.props || !instance.props.className) return;
else if (instance.props.tag == "span" && instance.props.className.indexOf(BDFDB.disCN.mentionwrapper) > -1 && instance.props.className.indexOf(BDFDB.disCN.mention) == -1) {
let children = BDFDB.getReactValue(instance, "_reactInternalFiber.memoizedProps.children");
let children = BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.memoizedProps.children");
if (children && typeof children[0] == "string") {
let channelname = children[0].slice(1);
let categoryname = BDFDB.getReactValue(instance, "_reactInternalFiber.return.return.type.displayName") == "Tooltip" ? BDFDB.getReactValue(instance, "_reactInternalFiber.return.return.memoizedProps.text") : null
let categoryname = BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.return.return.type.displayName") == "Tooltip" ? BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.return.return.memoizedProps.text") : null
let channelid = BDFDB.LibraryModules.LastGuildStore.getGuildId();
let channels = channelid ? (BDFDB.LibraryModules.GuildChannelStore.getChannels(channelid)[0] || BDFDB.LibraryModules.GuildChannelStore.getChannels(channelid).SELECTABLE) : null;
if (Array.isArray(channels)) for (let channel of channels) {
@ -379,22 +377,22 @@ class EditChannels {
}
}
else if (instance.props.tag == "div" && instance.props.className.indexOf(BDFDB.disCN.quickswitchresult) > -1) {
let channel = BDFDB.getReactValue(instance, "_reactInternalFiber.return.return.memoizedProps.channel");
let channel = BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.return.return.memoizedProps.channel");
if (channel) {
this.changeChannel(channel, wrapper.querySelector(BDFDB.dotCN.quickswitchresultmatch));
if (channel.parent_id) this.changeChannel(BDFDB.LibraryModules.ChannelStore.getChannel(channel.parent_id), wrapper.querySelector(BDFDB.dotCN.quickswitchresultnote));
}
}
else if (instance.props.tag == "div" && instance.props.className.indexOf(BDFDB.disCN.autocompleterow) > -1) {
let channel = BDFDB.getReactValue(instance, "_reactInternalFiber.return.memoizedProps.channel");
let channel = BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.return.memoizedProps.channel");
if (channel) {
this.changeChannel(channel, wrapper.querySelector(BDFDB.dotCN.marginleft4));
let category = BDFDB.getReactValue(instance, "_reactInternalFiber.return.memoizedProps.category");
let category = BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.return.memoizedProps.category");
if (category) this.changeChannel(category, wrapper.querySelector(BDFDB.dotCN.autocompletedescription));
}
}
else if (instance.props.tag == "span" && instance.props.className.indexOf(BDFDB.disCN.messagespopoutchannelname) > -1) {
let channel = BDFDB.getReactValue(instance, "_reactInternalFiber.return.sibling.child.child.memoizedProps.channel");
let channel = BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.return.sibling.child.child.memoizedProps.channel");
if (channel) this.changeChannel2(channel, wrapper);
}
}
@ -421,7 +419,7 @@ class EditChannels {
if (channelname.EditChannelsChangeObserver && typeof channelname.EditChannelsChangeObserver.disconnect == "function") channelname.EditChannelsChangeObserver.disconnect();
let data = this.getChannelData(info.id, info.parent_id, channelname);
if (data.name || data.color || channelname.parentElement.getAttribute("changed-by-editchannels")) {
let isgradient = data.color && BDFDB.isObject(data.color);
let isgradient = data.color && BDFDB.ObjectUtils.is(data.color);
let color = this.chooseColor(channelname, data.color);
if (isgradient) {
channelname.style.setProperty("color", BDFDB.colorCONVERT(data.color[Object.keys(data.color)[0]], "RGBA"), "important");
@ -491,7 +489,7 @@ class EditChannels {
if (channelname.EditChannelsChangeObserver && typeof channelname.EditChannelsChangeObserver.disconnect == "function") channelname.EditChannelsChangeObserver.disconnect();
let data = this.getChannelData(info.id, info.parent_id, channelname);
if (data.name || data.color || channelname.getAttribute("changed-by-editchannels")) {
if (BDFDB.isObject(data.color)) {
if (BDFDB.ObjectUtils.is(data.color)) {
channelname.style.setProperty("color", BDFDB.colorCONVERT(data.color[Object.keys(data.color)[0]], "RGBA"), "important");
BDFDB.setInnerText(channelname, BDFDB.htmlToElement(`<span style="pointer-events: none; -webkit-background-clip: text !important; color: transparent !important; background-image: ${BDFDB.colorGRADIENT(this.chooseColor(channelname, data.color))} !important;">${BDFDB.encodeToHTML("#" + (data.name || info.name))}</span>`));
}
@ -525,7 +523,7 @@ class EditChannels {
let data = this.getChannelData(info.id, info.parent_id, mention);
let name = "#" + (data.name || info.name);
let isgradient = data.color && BDFDB.isObject(data.color);
let isgradient = data.color && BDFDB.ObjectUtils.is(data.color);
let color = isgradient ? BDFDB.colorGRADIENT(data.color) : BDFDB.colorCONVERT(data.color, "RGBA");
let color0_1 = isgradient ? BDFDB.colorGRADIENT(BDFDB.colorSETALPHA(data.color, 0.1, "RGBA")) : BDFDB.colorSETALPHA(data.color, 0.1, "RGBA");
let color0_7 = isgradient ? BDFDB.colorGRADIENT(BDFDB.colorSETALPHA(data.color, 0.7, "RGBA")) : BDFDB.colorSETALPHA(data.color, 0.7, "RGBA");
@ -536,7 +534,7 @@ class EditChannels {
mention.EditChannelsHovered = true;
colorHover();
let categorydata = this.getChannelData(categoryinfo.id, null, mention);
if (categorydata.name) BDFDB.createTooltip(categorydata.name, mention, {type:"top", selector:"EditChannels-tooltip", hide:true});
if (categorydata.name) BDFDB.TooltipUtils.create(mention, categorydata.name, {type:"top", selector:"EditChannels-tooltip", hide:true});
};
mention.mouseoutListenerEditChannels = () => {
delete mention.EditChannelsHovered;
@ -574,7 +572,7 @@ class EditChannels {
let classname = channelname.className ? channelname.className.toLowerCase() : "";
if (classname.indexOf("muted") > -1 || classname.indexOf("locked") > -1) color = BDFDB.colorCHANGE(color, -0.5);
else if (hovered || classname.indexOf("selected") > -1 || classname.indexOf("hovered") > -1 || classname.indexOf("unread") > -1 || classname.indexOf("connected") > -1) color = BDFDB.colorCHANGE(color, 0.5);
return BDFDB.isObject(color) ? color : BDFDB.colorCONVERT(color, "RGBA");
return BDFDB.ObjectUtils.is(color) ? color : BDFDB.colorCONVERT(color, "RGBA");
}
return null;
}
@ -619,7 +617,7 @@ class EditChannels {
let catdata = (category ? channels[category.id] : null) || {};
if (channel && channel.type == 0) channelarray.push(Object.assign({lowercasename:channels[id].name.toLowerCase(),lowercasecatname:(catdata && catdata.name ? catdata.name.toLowerCase() : null),channel,category,catdata},channels[id]));
}
channelarray = BDFDB.sortArrayByKey(channelarray.filter(n => n.lowercasename.indexOf(lastword.toLowerCase().slice(1)) != -1 || (n.lowercasecatname && n.lowercasecatname.indexOf(lastword.toLowerCase().slice(1)) != -1)), "lowercasename");
channelarray = BDFDB.ArrayUtils.keySort(channelarray.filter(n => n.lowercasename.indexOf(lastword.toLowerCase().slice(1)) != -1 || (n.lowercasecatname && n.lowercasecatname.indexOf(lastword.toLowerCase().slice(1)) != -1)), "lowercasename");
if (channelarray.length) {
let settings = BDFDB.getAllData(this, "settings");
let autocompletemenu = textarea.parentElement.querySelector(BDFDB.dotCNS.autocomplete + BDFDB.dotCN.autocompleteinner), amount = 15;
@ -632,7 +630,7 @@ class EditChannels {
amount -= autocompletemenu.querySelectorAll(BDFDB.dotCN.autocompleteselectable).length;
}
BDFDB.addEventListener(this, autocompletemenu, "mouseenter", BDFDB.dotCN.autocompleteselectable, e => {
BDFDB.ListenerUtils.add(this, autocompletemenu, "mouseenter", BDFDB.dotCN.autocompleteselectable, e => {
var selected = autocompletemenu.querySelectorAll(BDFDB.dotCN.autocompleteselected);
BDFDB.removeClass(selected, BDFDB.disCN.autocompleteselected);
BDFDB.addClass(selected, BDFDB.disCN.autocompleteselector);

View File

@ -41,18 +41,18 @@ class EditServers {
var settings = BDFDB.getAllData(this, "settings");
var settingsitems = [], inneritems = [];
for (let key in settings) (!this.defaults.settings[key].inner ? settingsitems : inneritems).push(BDFDB.React.createElement(BDFDB.LibraryComponents.SettingsSwitch, {
for (let key in settings) (!this.defaults.settings[key].inner ? settingsitems : inneritems).push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSwitch, {
className: BDFDB.disCN.marginbottom8,
plugin: this,
keys: ["settings", key],
label: this.defaults.settings[key].description,
value: settings[key]
}));
settingsitems.push(BDFDB.React.createElement(BDFDB.LibraryComponents.SettingsPanelInner, {
settingsitems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsPanelInner, {
title: "Change Servers in:",
children: inneritems
}));
settingsitems.push(BDFDB.React.createElement(BDFDB.LibraryComponents.SettingsItem, {
settingsitems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, {
type: "Button",
className: BDFDB.disCN.marginbottom8,
color: BDFDB.LibraryComponents.Button.Colors.RED,
@ -66,7 +66,7 @@ class EditServers {
children: BDFDB.LanguageUtils.LanguageStrings.RESET
}));
return BDFDB.createSettingsPanel(this, settingsitems);
return BDFDB.PluginUtils.createSettingsPanel(this, settingsitems);
}
//legacy
@ -93,9 +93,9 @@ class EditServers {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.WebModules.patch(BDFDB.LibraryModules.IconUtils, 'getGuildBannerURL', this, {instead:e => {
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;
@ -107,9 +107,7 @@ class EditServers {
this.forceUpdateAll();
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
stop () {
@ -121,11 +119,11 @@ class EditServers {
try {this.forceUpdateAll();} catch (err) {}
BDFDB.saveAllData(data, this, "servers");
for (let guildobj of BDFDB.readServerList()) if (guildobj.instance) {
for (let guildobj of BDFDB.GuildUtils.getAll()) if (guildobj.instance) {
delete guildobj.instance.props.guild.EditServersCachedBanner;
}
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -134,16 +132,16 @@ class EditServers {
onGuildContextMenu (instance, menu, returnvalue) {
if (instance.props && instance.props.guild && !menu.querySelector(`${this.name}-contextMenuSubItem`)) {
let [children, index] = BDFDB.getContextMenuGroupAndIndex(returnvalue, ["FluxContainer(MessageDeveloperModeGroup)", "DeveloperModeGroup"]);
const itemgroup = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
const itemgroup = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
className: `BDFDB-contextMenuItemGroup ${this.name}-contextMenuItemGroup`,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuSubItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuSubItem, {
label: this.labels.context_localserversettings_text,
className: `BDFDB-contextMenuSubItem ${this.name}-contextMenuSubItem ${this.name}-serversettings-contextMenuSubItem`,
render: [BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
render: [BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
className: `BDFDB-contextMenuItemGroup ${this.name}-contextMenuItemGroup`,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.submenu_serversettings_text,
className: `BDFDB-ContextMenuItem ${this.name}-ContextMenuItem ${this.name}-serversettings-ContextMenuItem`,
action: e => {
@ -151,7 +149,7 @@ class EditServers {
this.showServerSettings(instance.props.guild);
}
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.submenu_resetsettings_text,
className: `BDFDB-ContextMenuItem ${this.name}-ContextMenuItem ${this.name}-resetsettings-ContextMenuItem`,
disabled: !BDFDB.loadData(instance.props.guild.id, this, "servers"),
@ -198,16 +196,16 @@ class EditServers {
processClickable (instance, wrapper, returnvalue) {
if (!wrapper || !instance.props || !instance.props.className) return;
else if (instance.props.tag == "div" && instance.props.className.indexOf(BDFDB.disCN.userprofilelistrow) > -1) {
let guild = BDFDB.getReactValue(instance, "_reactInternalFiber.return.memoizedProps.guild");
if (guild && BDFDB.getReactValue(instance, "_reactInternalFiber.return.type.displayName") == "GuildRow") {
let guild = BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.return.memoizedProps.guild");
if (guild && BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.return.type.displayName") == "GuildRow") {
this.changeGuildName(guild, wrapper.querySelector(BDFDB.dotCN.userprofilelistname));
}
}
else if (instance.props.tag == "div" && instance.props.className.indexOf(BDFDB.disCN.quickswitchresult) > -1) {
let guild = BDFDB.getReactValue(instance, "_reactInternalFiber.return.return.memoizedProps.guild");
let guild = BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.return.return.memoizedProps.guild");
if (guild) this.changeGuildName(guild, wrapper.querySelector(BDFDB.dotCN.quickswitchresultmatch));
else {
let channel = BDFDB.getReactValue(instance, "_reactInternalFiber.return.return.memoizedProps.channel");
let channel = BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.return.return.memoizedProps.channel");
if (channel && channel.guild_id) this.changeGuildName(BDFDB.LibraryModules.GuildStore.getGuild(channel.guild_id), wrapper.querySelector(BDFDB.dotCN.quickswitchresultmisccontainer));
}
}
@ -215,9 +213,9 @@ class EditServers {
forceUpdateAll (guildid) {
this.updateGuildSidebar();
BDFDB.WebModules.forceAllUpdates(this);
BDFDB.ModuleUtils.forceAllUpdates(this);
if (guildid) {
let ServerFolders = BDFDB.getPlugin("ServerFolders", true);
let ServerFolders = BDFDB.BdUtils.getPlugin("ServerFolders", true);
if (ServerFolders) {
let folder = ServerFolders.getFolderOfGuildId(guildid);
if (folder) ServerFolders.updateGuildInFolderContent(folder.folderId, guildid);
@ -233,39 +231,39 @@ class EditServers {
header: this.labels.modal_header_text,
subheader: info.name,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ModalTabContent, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ModalTabContent, {
tab: this.labels.modal_tabheader1_text,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_guildname_text,
className: BDFDB.disCN.marginbottom20 + " input-guildname",
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.TextInput, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TextInput, {
value: data.name,
placeholder: info.name,
autoFocus: true
})
]
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_guildacronym_text,
className: BDFDB.disCN.marginbottom20 + " input-guildacronym",
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.TextInput, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TextInput, {
value: data.shortName,
placeholder: info.acronym
})
]
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_guildicon_text,
className: BDFDB.disCN.marginbottom8 + " input-guildicon",
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.TextInput, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TextInput, {
inputClassName: !data.removeIcon && data.url ? BDFDB.disCN.inputsuccess : null,
inputId: "GUILDICON",
value: data.url,
placeholder: BDFDB.getGuildIcon(info.id),
placeholder: BDFDB.GuildUtils.getIcon(info.id),
disabled: data.removeIcon,
onFocus: e => {
this.createNoticeTooltip(e.target);
@ -276,7 +274,7 @@ class EditServers {
})
]
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.SettingsItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, {
type: "Switch",
className: BDFDB.disCN.marginbottom20 + " input-removeicon",
label: this.labels.modal_removeicon_text,
@ -290,15 +288,15 @@ class EditServers {
}
}
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_guildbanner_text,
className: BDFDB.disCN.marginbottom8 + " input-guildbanner",
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.TextInput, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TextInput, {
inputClassName: !data.removeBanner && data.banner ? BDFDB.disCN.inputsuccess : null,
inputId: "GUILDBANNER",
value: data.banner,
placeholder: BDFDB.getGuildBanner(info.id),
placeholder: BDFDB.GuildUtils.getBanner(info.id),
disabled: data.removeBanner || info.id == "410787888507256842",
onFocus: e => {
this.createNoticeTooltip(e.target);
@ -309,7 +307,7 @@ class EditServers {
})
]
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.SettingsItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, {
type: "Switch",
className: BDFDB.disCN.marginbottom20 + " input-removebanner",
label: this.labels.modal_removebanner_text,
@ -326,24 +324,24 @@ class EditServers {
})
]
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.ModalTabContent, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ModalTabContent, {
tab: this.labels.modal_tabheader2_text,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_colorpicker1_text,
className: BDFDB.disCN.marginbottom20,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ColorSwatches, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ColorSwatches, {
color: data.color1,
number: 1
})
]
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_colorpicker2_text,
className: BDFDB.disCN.marginbottom20,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ColorSwatches, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ColorSwatches, {
color: data.color2,
number: 2
})
@ -351,24 +349,24 @@ class EditServers {
})
]
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.ModalTabContent, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ModalTabContent, {
tab: this.labels.modal_tabheader3_text,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_colorpicker3_text,
className: BDFDB.disCN.marginbottom20,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ColorSwatches, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ColorSwatches, {
color: data.color3,
number: 3
})
]
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_colorpicker4_text,
className: BDFDB.disCN.marginbottom20,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ColorSwatches, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ColorSwatches, {
color: data.color4,
number: 4
})
@ -413,7 +411,7 @@ class EditServers {
}
checkUrl (url, instance) {
let input = BDFDB.React.findDOMNode(instance).firstElementChild;
let input = BDFDB.ReactUtils.findDOMNode(instance).firstElementChild;
clearTimeout(instance.checkTimeout);
if (url == null || !url.trim()) {
if (input) BDFDB.removeEles(input.tooltip);
@ -441,7 +439,7 @@ class EditServers {
BDFDB.removeEles(input.tooltip);
var invalid = isinvalid || BDFDB.containsClass(input, BDFDB.disCN.inputerror);
var valid = invalid ? false : BDFDB.containsClass(input, BDFDB.disCN.inputsuccess);
if (invalid || valid) input.tooltip = BDFDB.createTooltip(invalid ? this.labels.modal_invalidurl_text : this.labels.modal_validurl_text, input, {type:"right", selector:"notice-tooltip", color: invalid ? "red" : "green"});
if (invalid || valid) input.tooltip = BDFDB.TooltipUtils.create(input, invalid ? this.labels.modal_invalidurl_text : this.labels.modal_validurl_text, {type:"right", selector:"notice-tooltip", color: invalid ? "red" : "green"});
}
changeGuildName (info, guildname) {
@ -450,7 +448,7 @@ class EditServers {
guildname.removeEventListener("mouseenter", guildname.mouseenterListenerEditChannels);
let data = this.getGuildData(info.id, guildname);
if (data.name || data.color2 || guildname.getAttribute("changed-by-editservers")) {
if (BDFDB.isObject(data.color2)) {
if (BDFDB.ObjectUtils.is(data.color2)) {
guildname.style.setProperty("color", BDFDB.colorCONVERT(data.color2[Object.keys(data.color2)[0]], "RGBA"), "important");
BDFDB.setInnerText(guildname, BDFDB.htmlToElement(`<span style="pointer-events: none; -webkit-background-clip: text !important; color: transparent !important; background-image: ${BDFDB.colorGRADIENT(data.color2)} !important;">${BDFDB.encodeToHTML(data.name || info.name)}</span>`));
}
@ -460,7 +458,7 @@ class EditServers {
}
if (data.name && BDFDB.containsClass(guildname, BDFDB.disCN.guildheadername) && BDFDB.getData("addOriginalTooltip", this, "settings")) {
guildname.mouseenterListenerEditChannels = () => {
BDFDB.createTooltip(info.name, guildname.parentElement, {type:"right", selector:"EditServers-tooltip", hide:true});
BDFDB.TooltipUtils.create(guildname.parentElement, info.name, {type:"right", selector:"EditServers-tooltip", hide:true});
};
guildname.addEventListener("mouseenter", guildname.mouseenterListenerEditChannels);
}
@ -481,7 +479,7 @@ class EditServers {
if (icon.EditServersChangeObserver && typeof icon.EditServersChangeObserver.disconnect == "function") icon.EditServersChangeObserver.disconnect();
let data = this.getGuildData(info.id, icon);
if (data.url || data.name || data.shortName || data.removeIcon || icon.getAttribute("changed-by-editservers")) {
let url = data.url || BDFDB.getGuildIcon(info.id);
let url = data.url || BDFDB.GuildUtils.getIcon(info.id);
let name = data.name || info.name || "";
let shortname = data.url ? "" : (data.shortName || (info.icon && !data.removeIcon ? "" : info.acronym));
if (BDFDB.containsClass(icon.parentElement, BDFDB.disCN.guildiconwrapper)) icon.parentElement.setAttribute("aria-label", name);
@ -493,11 +491,11 @@ class EditServers {
if (removeicon) {
let fakeicon = BDFDB.htmlToElement(`<div class="${BDFDB.disCNS.guildiconchildwrapper + BDFDB.disCN.guildiconacronym} fake-guildacronym" aria-label="Server Acronym"></div>`);
if (data.color1) {
if (BDFDB.isObject(data.color1)) fakeicon.style.setProperty("background-image", BDFDB.colorGRADIENT(data.color1));
if (BDFDB.ObjectUtils.is(data.color1)) fakeicon.style.setProperty("background-image", BDFDB.colorGRADIENT(data.color1));
else fakeicon.style.setProperty("background-color", BDFDB.colorCONVERT(data.color1, "RGBA"));
}
if (data.color2) fakeicon.style.setProperty("color", BDFDB.colorCONVERT(BDFDB.isObject(data.color2) ? data.color2[Object.keys(data.color2)[0]] : data.color2, "RGBA"));
BDFDB.setInnerText(fakeicon, BDFDB.isObject(data.color2) ? BDFDB.htmlToElement(`<span style="pointer-events: none; -webkit-background-clip: text !important; color: transparent !important; background-image: ${BDFDB.colorGRADIENT(data.color2)} !important;">${BDFDB.encodeToHTML(shortname)}</span>`) : shortname);
if (data.color2) fakeicon.style.setProperty("color", BDFDB.colorCONVERT(BDFDB.ObjectUtils.is(data.color2) ? data.color2[Object.keys(data.color2)[0]] : data.color2, "RGBA"));
BDFDB.setInnerText(fakeicon, BDFDB.ObjectUtils.is(data.color2) ? BDFDB.htmlToElement(`<span style="pointer-events: none; -webkit-background-clip: text !important; color: transparent !important; background-image: ${BDFDB.colorGRADIENT(data.color2)} !important;">${BDFDB.encodeToHTML(shortname)}</span>`) : shortname);
icon.parentElement.appendChild(fakeicon);
fakeicon.style.setProperty("font-size", this.getFontSize(fakeicon));
}
@ -509,18 +507,18 @@ class EditServers {
}
else {
if (data.color1) {
if (BDFDB.isObject(data.color1)) icon.style.setProperty("background-image", BDFDB.colorGRADIENT(data.color1));
if (BDFDB.ObjectUtils.is(data.color1)) icon.style.setProperty("background-image", BDFDB.colorGRADIENT(data.color1));
else icon.style.setProperty("background-color", BDFDB.colorCONVERT(data.color1, "RGBA"));
}
else {
icon.style.removeProperty("background-image");
icon.style.removeProperty("background-color");
}
if (data.color2) icon.style.setProperty("color", BDFDB.colorCONVERT(BDFDB.isObject(data.color2) ? data.color2[Object.keys(data.color2)[0]] : data.color2, "RGBA"));
BDFDB.setInnerText(icon, BDFDB.isObject(data.color2) ? BDFDB.htmlToElement(`<span style="pointer-events: none; -webkit-background-clip: text !important; color: transparent !important; background-image: ${BDFDB.colorGRADIENT(data.color2)} !important;">${BDFDB.encodeToHTML(shortname)}</span>`) : shortname);
if (data.color2) icon.style.setProperty("color", BDFDB.colorCONVERT(BDFDB.ObjectUtils.is(data.color2) ? data.color2[Object.keys(data.color2)[0]] : data.color2, "RGBA"));
BDFDB.setInnerText(icon, BDFDB.ObjectUtils.is(data.color2) ? BDFDB.htmlToElement(`<span style="pointer-events: none; -webkit-background-clip: text !important; color: transparent !important; background-image: ${BDFDB.colorGRADIENT(data.color2)} !important;">${BDFDB.encodeToHTML(shortname)}</span>`) : shortname);
}
icon.style.setProperty("font-size", this.getFontSize(icon));
BDFDB.toggleClass(icon, this.getNoIconClasses(icon), !icon.style.getPropertyValue("background-image") || BDFDB.isObject(data.color1));
BDFDB.toggleClass(icon, this.getNoIconClasses(icon), !icon.style.getPropertyValue("background-image") || BDFDB.ObjectUtils.is(data.color1));
if (data.url && !data.removeIcon) {
icon.style.setProperty("background-position", "center");
icon.style.setProperty("background-size", "cover");
@ -548,17 +546,17 @@ class EditServers {
let data = this.getGuildData(info.id, wrapper);
wrapper.removeEventListener("mouseenter", wrapper.tooltipListenerEditServers);
if (data.name || data.color3 || data.color4) {
let ServerFolders = BDFDB.getPlugin("ServerFolders", true);
let ServerFolders = BDFDB.BdUtils.getPlugin("ServerFolders", true);
let folder = ServerFolders ? ServerFolders.getFolderOfGuildId(info.id) : null;
let folderData = folder ? BDFDB.loadData(folder.folderId, "ServerFolders", "folders") : null;
let color3 = data.color3 || (folderData && folderData.copyTooltipColor ? folderData.color3 : null);
let color4 = data.color4 || (folderData && folderData.copyTooltipColor ? folderData.color4 : null);
var isgradient3 = color3 && BDFDB.isObject(color3);
var isgradient4 = color4 && BDFDB.isObject(color4);
var isgradient3 = color3 && BDFDB.ObjectUtils.is(color3);
var isgradient4 = color4 && BDFDB.ObjectUtils.is(color4);
var bgColor = color3 ? (!isgradient3 ? BDFDB.colorCONVERT(color3, "RGBA") : BDFDB.colorGRADIENT(color3)) : "";
var fontColor = color4 ? (!isgradient4 ? BDFDB.colorCONVERT(color4, "RGBA") : BDFDB.colorGRADIENT(color4)) : "";
wrapper.tooltipListenerEditServers = () => {
BDFDB.createTooltip(isgradient4 ? `<span style="pointer-events: none; -webkit-background-clip: text !important; color: transparent !important; background-image: ${fontColor} !important;">${BDFDB.encodeToHTML(data.name || info.name)}</span>` : (data.name || info.name), wrapper, {type, selector:"EditServers-tooltip", style:`${isgradient4 ? '' : 'color: ' + fontColor + ' !important; '}background: ${bgColor} !important; border-color: ${isgradient3 ? BDFDB.colorCONVERT(color3[0], "RGBA") : bgColor} !important;`, html:isgradient3});
BDFDB.TooltipUtils.create(wrapper, isgradient4 ? `<span style="pointer-events: none; -webkit-background-clip: text !important; color: transparent !important; background-image: ${fontColor} !important;">${BDFDB.encodeToHTML(data.name || info.name)}</span>` : (data.name || info.name), {type, selector:"EditServers-tooltip", style:`${isgradient4 ? '' : 'color: ' + fontColor + ' !important; '}background: ${bgColor} !important; border-color: ${isgradient3 ? BDFDB.colorCONVERT(color3[0], "RGBA") : bgColor} !important;`, html:isgradient3});
};
wrapper.addEventListener("mouseenter", wrapper.tooltipListenerEditServers);
if (document.querySelector(BDFDB.dotCN.guildcontainer + ":hover") == wrapper) wrapper.tooltipListenerEditServers();

View File

@ -104,18 +104,18 @@ class EditUsers {
var settings = BDFDB.getAllData(this, "settings");
var settingsitems = [], inneritems = [];
for (let key in settings) (!this.defaults.settings[key].inner ? settingsitems : inneritems).push(BDFDB.React.createElement(BDFDB.LibraryComponents.SettingsSwitch, {
for (let key in settings) (!this.defaults.settings[key].inner ? settingsitems : inneritems).push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSwitch, {
className: BDFDB.disCN.marginbottom8,
plugin: this,
keys: ["settings", key],
label: this.defaults.settings[key].description,
value: settings[key]
}));
settingsitems.push(BDFDB.React.createElement(BDFDB.LibraryComponents.SettingsPanelInner, {
settingsitems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsPanelInner, {
title: "Change Users in:",
children: inneritems
}));
settingsitems.push(BDFDB.React.createElement(BDFDB.LibraryComponents.SettingsItem, {
settingsitems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, {
type: "Button",
className: BDFDB.disCN.marginbottom8,
color: BDFDB.LibraryComponents.Button.Colors.RED,
@ -129,7 +129,7 @@ class EditUsers {
children: BDFDB.LanguageUtils.LanguageStrings.RESET
}));
return BDFDB.createSettingsPanel(this, settingsitems);
return BDFDB.PluginUtils.createSettingsPanel(this, settingsitems);
}
//legacy
@ -156,16 +156,14 @@ class EditUsers {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
var observer = new MutationObserver(() => {this.changeAppTitle();});
BDFDB.addObserver(this, document.head.querySelector("title"), {name:"appTitleObserver",instance:observer}, {childList:true});
BDFDB.ObserverUtils.connect(this, document.head.querySelector("title"), {name:"appTitleObserver",instance:observer}, {childList:true});
this.forceUpdateAll();
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
@ -180,7 +178,7 @@ class EditUsers {
BDFDB.removeEles(".autocompleteEditUsers", ".autocompleteEditUsersRow");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -190,16 +188,16 @@ class EditUsers {
onUserContextMenu (instance, menu, returnvalue) {
if (instance.props && instance.props.user && !menu.querySelector(`${this.name}-contextMenuSubItem`)) {
let [children, index] = BDFDB.getContextMenuGroupAndIndex(returnvalue, ["FluxContainer(MessageDeveloperModeGroup)", "DeveloperModeGroup"]);
const itemgroup = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
const itemgroup = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
className: `BDFDB-contextMenuItemGroup ${this.name}-contextMenuItemGroup`,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuSubItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuSubItem, {
label: this.labels.context_localusersettings_text,
className: `BDFDB-contextMenuSubItem ${this.name}-contextMenuSubItem ${this.name}-usersettings-contextMenuSubItem`,
render: [BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
render: [BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
className: `BDFDB-contextMenuItemGroup ${this.name}-contextMenuItemGroup`,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.submenu_usersettings_text,
className: `BDFDB-ContextMenuItem ${this.name}-ContextMenuItem ${this.name}-usersettings-ContextMenuItem`,
action: e => {
@ -207,7 +205,7 @@ class EditUsers {
this.showUserSettings(instance.props.user);
}
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.submenu_resetsettings_text,
className: `BDFDB-ContextMenuItem ${this.name}-ContextMenuItem ${this.name}-resetsettings-ContextMenuItem`,
disabled: !BDFDB.loadData(instance.props.user.id, this, "users"),
@ -229,7 +227,7 @@ class EditUsers {
forceUpdateAll () {
this.changeAppTitle();
BDFDB.WebModules.forceAllUpdates(this);
BDFDB.ModuleUtils.forceAllUpdates(this);
}
showUserSettings (info) {
@ -241,38 +239,38 @@ class EditUsers {
header: this.labels.modal_header_text,
subheader: member.nick || info.username,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ModalTabContent, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ModalTabContent, {
tab: this.labels.modal_tabheader1_text,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_username_text,
className: BDFDB.disCN.marginbottom20 + " input-username",
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.TextInput, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TextInput, {
value: data.name,
placeholder: member.nick || info.username,
autoFocus: true
})
]
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_usertag_text,
className: BDFDB.disCN.marginbottom20 + " input-usertag",
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.TextInput, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TextInput, {
value: data.tag
})
]
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_useravatar_text,
className: BDFDB.disCN.marginbottom8 + " input-useravatar",
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.TextInput, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TextInput, {
inputClassName: !data.removeIcon && data.url ? BDFDB.disCN.inputsuccess : null,
inputId: "USERAVATAR",
value: data.url,
placeholder: BDFDB.getUserAvatar(info.id),
placeholder: BDFDB.UserUtils.getAvatar(info.id),
disabled: data.removeIcon,
onFocus: e => {
this.createNoticeTooltip(e.target);
@ -283,7 +281,7 @@ class EditUsers {
})
]
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.SettingsItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, {
type: "Switch",
className: BDFDB.disCN.marginbottom20 + " input-removeicon",
label: this.labels.modal_removeicon_text,
@ -299,24 +297,24 @@ class EditUsers {
})
]
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.ModalTabContent, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ModalTabContent, {
tab: this.labels.modal_tabheader2_text,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_colorpicker1_text,
className: BDFDB.disCN.marginbottom20,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ColorSwatches, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ColorSwatches, {
color: data.color1,
number: 1
})
]
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_colorpicker2_text,
className: BDFDB.disCN.marginbottom20,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ColorSwatches, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ColorSwatches, {
color: data.color2,
number: 2
})
@ -324,32 +322,32 @@ class EditUsers {
})
]
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.ModalTabContent, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ModalTabContent, {
tab: this.labels.modal_tabheader3_text,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_colorpicker3_text,
className: BDFDB.disCN.marginbottom20,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ColorSwatches, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ColorSwatches, {
color: data.color3,
number: 3,
disabled: data.ignoreTagColor
})
]
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
title: this.labels.modal_colorpicker4_text,
className: BDFDB.disCN.marginbottom20,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ColorSwatches, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ColorSwatches, {
color: data.color4,
number: 4,
disabled: data.ignoreTagColor
})
]
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.SettingsItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, {
type: "Switch",
className: BDFDB.disCN.marginbottom20 + " input-ignoretagcolor",
label: this.labels.modal_ignoretagcolor_text,
@ -398,7 +396,7 @@ class EditUsers {
}
processChannelTextArea (instance, wrapper, returnvalue) {
let channel = BDFDB.getReactValue(instance, "props.channel");
let channel = BDFDB.ReactUtils.getValue(instance, "props.channel");
if (channel) {
var textarea = wrapper.querySelector("textarea");
if (!textarea) return;
@ -409,13 +407,13 @@ class EditUsers {
textarea.setAttribute("placeholder", BDFDB.LanguageUtils.LanguageStrings.TEXTAREA_PLACEHOLDER.replace("{{channel}}", "@" + (data.name || user.username)));
}
}
BDFDB.removeEventListener(this, textarea);
BDFDB.ListenerUtils.remove(this, textarea);
if (BDFDB.getData("changeInAutoComplete", this, "settings")) {
BDFDB.addEventListener(this, textarea, "keydown", e => {
BDFDB.ListenerUtils.add(this, textarea, "keydown", e => {
let autocompletemenu = textarea.parentElement.querySelector(BDFDB.dotCN.autocomplete);
if (autocompletemenu && (e.which == 9 || e.which == 13)) {
if (BDFDB.containsClass(autocompletemenu.querySelector(BDFDB.dotCN.autocompleteselected).parentElement, "autocompleteEditUsersRow")) {
BDFDB.stopEvent(e);
BDFDB.ListenerUtils.stopEvent(e);
this.swapWordWithMention(textarea);
}
}
@ -423,7 +421,7 @@ class EditUsers {
let autocompleteitems = autocompletemenu.querySelectorAll(BDFDB.dotCN.autocompleteselectable + ":not(.autocompleteEditUsersSelector)");
let selected = autocompletemenu.querySelector(BDFDB.dotCN.autocompleteselected);
if (BDFDB.containsClass(selected, "autocompleteEditUsersSelector") || autocompleteitems[e.which == 38 ? 0 : (autocompleteitems.length-1)] == selected) {
BDFDB.stopEvent(e);
BDFDB.ListenerUtils.stopEvent(e);
let next = this.getNextSelection(autocompletemenu, null, e.which == 38 ? false : true);
BDFDB.removeClass(selected, BDFDB.disCN.autocompleteselected);
BDFDB.addClass(selected, BDFDB.disCN.autocompleteselector);
@ -441,7 +439,7 @@ class EditUsers {
if (!e.ctrlKey && e.which != 38 && e.which != 40 && !(e.which == 39 && textarea.selectionStart == textarea.selectionEnd && textarea.selectionEnd == textarea.value.length)) BDFDB.removeEles(".autocompleteEditUsers", ".autocompleteEditUsersRow");
});
BDFDB.addEventListener(this, textarea, "click", e => {
BDFDB.ListenerUtils.add(this, textarea, "click", e => {
if (textarea.selectionStart == textarea.selectionEnd && textarea.selectionEnd == textarea.value.length) setImmediate(() => {this.addAutoCompleteMenu(textarea, channel);});
});
}
@ -492,7 +490,7 @@ class EditUsers {
}
processAccount (instance, wrapper, returnvalue) {
let user = BDFDB.getReactValue(instance, "_reactInternalFiber.child.stateNode.props.currentUser");
let user = BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.child.stateNode.props.currentUser");
if (user) {
this.changeName(user, wrapper.querySelector(BDFDB.dotCN.accountinfodetails).firstElementChild);
this.changeAvatar(user, this.getAvatarDiv(wrapper));
@ -500,7 +498,7 @@ class EditUsers {
}
processMessageUsername (instance, wrapper, returnvalue) {
let message = BDFDB.getReactValue(instance, "props.message");
let message = BDFDB.ReactUtils.getValue(instance, "props.message");
if (message) {
let username = wrapper.querySelector(BDFDB.dotCN.messageusername);
if (username) {
@ -514,10 +512,10 @@ class EditUsers {
}
processAuditLog (instance, wrapper, returnvalue) {
let log = BDFDB.getReactValue(instance, "props.log");
let log = BDFDB.ReactUtils.getValue(instance, "props.log");
if (log && log.user) {
let hooks = wrapper.querySelectorAll(BDFDB.dotCN.auditloguserhook);
let guild_id = BDFDB.getReactValue(instance, "_reactInternalFiber.return.memoizedProps.guildId");
let guild_id = BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.return.memoizedProps.guildId");
if (hooks.length > 0) this.changeName2(log.user, hooks[0].firstChild, guild_id);
if (hooks.length > 1 && log.targetType == "USER") this.changeName2(log.target, hooks[1].firstChild, guild_id);
}
@ -534,7 +532,7 @@ class EditUsers {
}
processInviteCard (instance, wrapper, returnvalue) {
let invite = BDFDB.getReactValue(instance, "props.invite");
let invite = BDFDB.ReactUtils.getValue(instance, "props.invite");
if (invite && invite.inviter && invite.guild) {
let username = wrapper.querySelector(BDFDB.dotCN.username);
if (username) {
@ -565,14 +563,14 @@ class EditUsers {
}
processTypingUsers (instance, wrapper, returnvalue) {
let users = !instance.props.typingUsers ? [] : Object.keys(instance.props.typingUsers).filter(id => id != BDFDB.myData.id).filter(id => !BDFDB.LibraryModules.FriendUtils.isBlocked(id)).map(id => BDFDB.LibraryModules.UserStore.getUser(id)).filter(id => id != null);
let users = !instance.props.typingUsers ? [] : Object.keys(instance.props.typingUsers).filter(id => id != BDFDB.UserUtils.me.id).filter(id => !BDFDB.LibraryModules.FriendUtils.isBlocked(id)).map(id => BDFDB.LibraryModules.UserStore.getUser(id)).filter(id => id != null);
wrapper.querySelectorAll(BDFDB.dotCNS.typing + "strong").forEach((username, i) => {
if (users[i] && username) this.changeName2(users[i], username);
});
}
processDirectMessage (instance, wrapper, returnvalue) {
let channel = BDFDB.getReactValue(instance, "props.channel");
let channel = BDFDB.ReactUtils.getValue(instance, "props.channel");
if (channel && channel.type == 1) {
let user = BDFDB.LibraryModules.UserStore.getUser(channel.recipients[0]);
if (user) {
@ -627,7 +625,7 @@ class EditUsers {
}
processHeaderBar (instance, wrapper, returnvalue) {
let channel_id = BDFDB.getReactValue(instance, "props.channelId") || BDFDB.getReactValue(instance, "_reactInternalFiber.return.memoizedProps.channelId");
let channel_id = BDFDB.ReactUtils.getValue(instance, "props.channelId") || BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.return.memoizedProps.channelId");
if (channel_id) {
let channelname = wrapper.querySelector(BDFDB.dotCN.channelheaderheaderbartitle);
if (channelname) {
@ -636,7 +634,7 @@ class EditUsers {
if (channel.type == 1) this.changeName(BDFDB.LibraryModules.UserStore.getUser(channel.recipients[0]), channelname);
else {
if (channelname.EditUsersChangeObserver && typeof channelname.EditUsersChangeObserver.disconnect == "function") channelname.EditUsersChangeObserver.disconnect();
if (BDFDB.isPluginEnabled("EditChannels")) BDFDB.getPlugin("EditChannels").changeChannel(channel, channelname);
if (BDFDB.BdUtils.isPluginEnabled("EditChannels")) BDFDB.BdUtils.getPlugin("EditChannels").changeChannel(channel, channelname);
else {
channelname.style.removeProperty("color");
channelname.style.removeProperty("background");
@ -660,7 +658,7 @@ class EditUsers {
}
}
else if (instance.props.tag == "span" && instance.props.className.indexOf(BDFDB.disCN.mention) > -1) {
let render = BDFDB.getReactValue(instance, "_reactInternalFiber.return.return.stateNode.props.render");
let render = BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.return.return.stateNode.props.render");
if (typeof render == "function") {
var props = render().props;
if (props && props.user) this.changeMention(props.user, wrapper);
@ -668,21 +666,21 @@ class EditUsers {
}
}
else if (instance.props.tag == "div" && instance.props.className.indexOf(BDFDB.disCN.quickswitchresult) > -1) {
let user = BDFDB.getReactValue(instance, "_reactInternalFiber.return.return.memoizedProps.user");
let user = BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.return.return.memoizedProps.user");
if (user) {
this.changeName2(user, wrapper.querySelector(BDFDB.dotCN.quickswitchresultmatch));
this.changeAvatar(user, this.getAvatarDiv(wrapper));
}
}
else if (instance.props.tag == "div" && instance.props.className.indexOf(BDFDB.disCN.autocompleterow) > -1) {
let user = BDFDB.getReactValue(instance, "_reactInternalFiber.return.memoizedProps.user");
let user = BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.return.memoizedProps.user");
if (user) {
this.changeName2(user, wrapper.querySelector(BDFDB.dotCN.marginleft8));
this.changeAvatar(user, this.getAvatarDiv(wrapper));
}
}
else if (instance.props.tag == "div" && instance.props.className.indexOf(BDFDB.disCN.searchpopoutuser) > -1) {
let result = BDFDB.getReactValue(instance, "_reactInternalFiber.return.memoizedProps.result");
let result = BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.return.memoizedProps.result");
if (result && result.user) {
this.changeName3(result.user, wrapper.querySelector(BDFDB.dotCN.searchpopoutdisplayednick));
this.changeAvatar(result.user, wrapper.querySelector(BDFDB.dotCN.searchpopoutdisplayavatar));
@ -691,14 +689,14 @@ class EditUsers {
}
processMessageContent (instance, wrapper, returnvalue) {
let message = BDFDB.getReactValue(instance, "props.message");
let message = BDFDB.ReactUtils.getValue(instance, "props.message");
if (message && message.author) {
let markup = wrapper.querySelector(BDFDB.dotCN.messagemarkup);
if (markup) {
let channel = BDFDB.LibraryModules.ChannelStore.getChannel(message.channel_id) || {};
let member = BDFDB.LibraryModules.MemberStore.getMember(channel.guild_id, message.author.id) || {};
let data = this.getUserData(message.author.id, wrapper);
markup.style.setProperty("color", window.settingsCookie["bda-gs-7"] ? BDFDB.colorCONVERT(data.color1 && !BDFDB.isObject(data.color1) ? data.color1 : member.colorString, "RGBA") : null, "important");
markup.style.setProperty("color", window.settingsCookie["bda-gs-7"] ? BDFDB.colorCONVERT(data.color1 && !BDFDB.ObjectUtils.is(data.color1) ? data.color1 : member.colorString, "RGBA") : null, "important");
}
}
}
@ -711,7 +709,7 @@ class EditUsers {
}
checkUrl (url, instance) {
let input = BDFDB.React.findDOMNode(instance).firstElementChild;
let input = BDFDB.ReactUtils.findDOMNode(instance).firstElementChild;
clearTimeout(instance.checkTimeout);
if (url == null || !url.trim()) {
if (input) BDFDB.removeEles(input.tooltip);
@ -739,7 +737,7 @@ class EditUsers {
BDFDB.removeEles(input.tooltip);
var invalid = isinvalid || BDFDB.containsClass(input, BDFDB.disCN.inputerror);
var valid = invalid ? false : BDFDB.containsClass(input, BDFDB.disCN.inputsuccess);
if (invalid || valid) input.tooltip = BDFDB.createTooltip(invalid ? this.labels.modal_invalidurl_text : this.labels.modal_validurl_text, input, {type:"right", selector:"notice-tooltip", color: invalid ? "red" : "green"});
if (invalid || valid) input.tooltip = BDFDB.TooltipUtils.create(input, invalid ? this.labels.modal_invalidurl_text : this.labels.modal_validurl_text, {type:"right", selector:"notice-tooltip", color: invalid ? "red" : "green"});
}
changeAppTitle () {
@ -761,11 +759,11 @@ class EditUsers {
let member = BDFDB.LibraryModules.MemberStore.getMember(guildid, info.id) || {};
this.changeBotTags(data, username, member);
if (data.name || data.color1 || data.color2 || username.getAttribute("changed-by-editusers")) {
let isBRCenabled = BDFDB.isPluginEnabled("BetterRoleColors");
let isBRCenabled = BDFDB.BdUtils.isPluginEnabled("BetterRoleColors");
let usenick = !BDFDB.containsClass(username, BDFDB.disCN.userprofileusername) && !BDFDB.containsClass(username.parentElement, BDFDB.disCN.userprofilelistname, BDFDB.disCN.accountinfodetails, false) && member.nick;
let usemembercolor = !BDFDB.containsClass(username.parentElement, BDFDB.disCN.userprofilelistname) && (BDFDB.containsClass(username, BDFDB.disCN.memberusername, BDFDB.disCN.messageusername, false) || isBRCenabled);
if (BDFDB.isObject(data.color1)) {
if (BDFDB.ObjectUtils.is(data.color1)) {
username.style.setProperty("color", BDFDB.colorCONVERT(data.color1[Object.keys(data.color1)[0]], "RGBA"), "important");
BDFDB.setInnerText(username, BDFDB.htmlToElement(`<span style="pointer-events: none; -webkit-background-clip: text !important; color: transparent !important; background-image: ${BDFDB.colorGRADIENT(data.color1)} !important;">${BDFDB.encodeToHTML(data.name || (usenick ? member.nick : info.username))}</span>`));
}
@ -774,7 +772,7 @@ class EditUsers {
BDFDB.setInnerText(username, data.name || (usenick ? member.nick : info.username));
}
username.style.setProperty("background", BDFDB.isObject(data.color2) ? BDFDB.colorGRADIENT(data.color2) : BDFDB.colorCONVERT(data.color2, "RGBA"), "important");
username.style.setProperty("background", BDFDB.ObjectUtils.is(data.color2) ? BDFDB.colorGRADIENT(data.color2) : BDFDB.colorCONVERT(data.color2, "RGBA"), "important");
if (data.name || data.color1 || data.color2) {
username.setAttribute("changed-by-editusers", true);
@ -795,12 +793,12 @@ class EditUsers {
let member = BDFDB.LibraryModules.MemberStore.getMember(guildid, info.id) || {};
this.changeBotTags(data, username, member);
if (data.name || data.color1 || username.getAttribute("changed-by-editusers")) {
if (BDFDB.isObject(data.color1)) {
if (BDFDB.ObjectUtils.is(data.color1)) {
username.style.setProperty("color", BDFDB.colorCONVERT(data.color1[Object.keys(data.color1)[0]], "RGBA"), "important");
BDFDB.setInnerText(username, BDFDB.htmlToElement(`<span style="pointer-events: none; -webkit-background-clip: text !important; color: transparent !important; background-image: ${BDFDB.colorGRADIENT(data.color1)} !important;">${BDFDB.encodeToHTML(data.name || member.nick || info.username)}</span>`));
}
else {
username.style.setProperty("color", BDFDB.colorCONVERT(data.color1 || (BDFDB.isPluginEnabled("BetterRoleColors") ? member.colorString : null), "RGBA"), "important");
username.style.setProperty("color", BDFDB.colorCONVERT(data.color1 || (BDFDB.BdUtils.isPluginEnabled("BetterRoleColors") ? member.colorString : null), "RGBA"), "important");
BDFDB.setInnerText(username, data.name || member.nick || info.username);
}
if (data.name || data.color1) {
@ -821,10 +819,10 @@ class EditUsers {
let data = this.getUserData(info.id, username);
if (data.name || data.color1 || username.getAttribute("changed-by-editusers")) {
if (adddisc) {
BDFDB.setInnerText(username, BDFDB.htmlToElement(`<span ${data.color1 ? (BDFDB.isObject(data.color1) ? 'style="pointer-events: none; -webkit-background-clip: text !important; color: transparent !important; background-image:' + BDFDB.colorGRADIENT(data.color1) + ' !important;"' : 'style="color:' + data.color1 + ' !important;"'): ''}>${BDFDB.encodeToHTML(data.name || info.username)}</span><span${typeof adddisc == "string" ? ' class="' + adddisc + '"' : ''}>#${info.discriminator}</span>`));
BDFDB.setInnerText(username, BDFDB.htmlToElement(`<span ${data.color1 ? (BDFDB.ObjectUtils.is(data.color1) ? 'style="pointer-events: none; -webkit-background-clip: text !important; color: transparent !important; background-image:' + BDFDB.colorGRADIENT(data.color1) + ' !important;"' : 'style="color:' + data.color1 + ' !important;"'): ''}>${BDFDB.encodeToHTML(data.name || info.username)}</span><span${typeof adddisc == "string" ? ' class="' + adddisc + '"' : ''}>#${info.discriminator}</span>`));
}
else {
if (BDFDB.isObject(data.color1)) {
if (BDFDB.ObjectUtils.is(data.color1)) {
username.style.setProperty("color", BDFDB.colorCONVERT(data.color1[Object.keys(data.color1)[0]], "RGBA"), "important");
BDFDB.setInnerText(username, BDFDB.htmlToElement(`<span style="pointer-events: none; -webkit-background-clip: text !important; color: transparent !important; background-image: ${BDFDB.colorGRADIENT(data.color1)} !important;">${BDFDB.encodeToHTML(data.name || info.username)}</span>`));
}
@ -847,7 +845,7 @@ class EditUsers {
changeBotTags (data, username, member) {
for (let tag of username.parentElement.parentElement.querySelectorAll(BDFDB.dotCN.bottag)) if (!BDFDB.containsClass(tag, "TRE-tag")) {
let isBRCbottagsEnabled = BDFDB.getReactValue(BDFDB.getPlugin("BetterRoleColors", true), "settings.modules.botTags");
let isBRCbottagsEnabled = BDFDB.ReactUtils.getValue(BDFDB.BdUtils.getPlugin("BetterRoleColors", true), "settings.modules.botTags");
let tagcolor = BDFDB.colorCONVERT(data.color1 || (isBRCbottagsEnabled || BDFDB.containsClass(tag, "owner-tag-rolecolor") ? member.colorString : null), "RGBA");
tagcolor = BDFDB.colorISBRIGHT(tagcolor) ? BDFDB.colorCHANGE(tagcolor, -0.3) : tagcolor;
tag.style.setProperty(BDFDB.containsClass(tag, BDFDB.disCN.bottaginvert) ? "color" : "background-color", tagcolor, "important");
@ -859,9 +857,9 @@ class EditUsers {
if (avatar.EditUsersChangeObserver && typeof avatar.EditUsersChangeObserver.disconnect == "function") avatar.EditUsersChangeObserver.disconnect();
let data = this.getUserData(info.id, avatar);
if (data.url || data.removeIcon || avatar.getAttribute("changed-by-editusers")) {
if (avatar.tagName == "IMG") avatar.setAttribute("src", data.removeIcon ? null : (data.url || BDFDB.getUserAvatar(info.id)));
if (avatar.tagName == "IMG") avatar.setAttribute("src", data.removeIcon ? null : (data.url || BDFDB.UserUtils.getAvatar(info.id)));
else {
let url = data.removeIcon ? null : ("url(" + (data.url || BDFDB.getUserAvatar(info.id)) + ")");
let url = data.removeIcon ? null : ("url(" + (data.url || BDFDB.UserUtils.getAvatar(info.id)) + ")");
if (url && BDFDB.getParentEle(BDFDB.dotCN.userprofile, avatar) && url.search(/discordapp\.com\/avatars\/[0-9]*\/a_/) > -1) url = url.replace(".webp)", ".gif)");
avatar.style.setProperty("background-image", url);
if (data.url && !data.removeIcon) {
@ -888,7 +886,7 @@ class EditUsers {
wrapper.removeEventListener("mouseenter", wrapper.tooltipListenerEditUsers);
if (data.name) {
wrapper.tooltipListenerEditUsers = () => {
BDFDB.createTooltip(data.name, wrapper, {type, selector:"EditUsers-tooltip", hide:true});
BDFDB.TooltipUtils.create(wrapper, data.name, {type, selector:"EditUsers-tooltip", hide:true});
};
wrapper.addEventListener("mouseenter", wrapper.tooltipListenerEditUsers);
}
@ -900,15 +898,15 @@ class EditUsers {
let data = this.getUserData(info.id, wrapper);
if (data.tag) {
let member = data.ignoreTagColor ? (BDFDB.LibraryModules.MemberStore.getMember(BDFDB.LibraryModules.LastGuildStore.getGuildId(), info.id) || {}) : {};
let color3 = BDFDB.isObject(data.color3) && !data.ignoreTagColor ? BDFDB.colorGRADIENT(data.color3) : BDFDB.colorCONVERT(!data.ignoreTagColor ? data.color3 : member.colorString, "RGBA");
let color4 = BDFDB.isObject(data.color4) && !data.ignoreTagColor ? BDFDB.colorGRADIENT(data.color4) : (!data.ignoreTagColor && data.color4 ? BDFDB.colorCONVERT(data.color4, "RGBA") : (color3 ? (BDFDB.colorISBRIGHT(color3) ? "black" : "white") : null));
let color3 = BDFDB.ObjectUtils.is(data.color3) && !data.ignoreTagColor ? BDFDB.colorGRADIENT(data.color3) : BDFDB.colorCONVERT(!data.ignoreTagColor ? data.color3 : member.colorString, "RGBA");
let color4 = BDFDB.ObjectUtils.is(data.color4) && !data.ignoreTagColor ? BDFDB.colorGRADIENT(data.color4) : (!data.ignoreTagColor && data.color4 ? BDFDB.colorCONVERT(data.color4, "RGBA") : (color3 ? (BDFDB.colorISBRIGHT(color3) ? "black" : "white") : null));
let tag = document.createElement("span");
let invert = container && !color3 && !color4 && container.firstElementChild && !(BDFDB.containsClass(container.firstElementChild, BDFDB.disCN.userpopoutheadernormal) || BDFDB.containsClass(container.firstElementChild, BDFDB.disCN.userprofiletopsectionnormal));
tag.className = "EditUsers-tag " + (!invert ? BDFDB.disCN.bottagregular : BDFDB.disCN.bottaginvert) + (selector ? (" " + selector) : "");
tag.style.setProperty("background", !invert ? color3 : color4, "important");
let fontcolor = invert ? color3 : color4;
let fontobj = invert ? data.color3 : data.color4;
if (BDFDB.isObject(fontobj)) tag.appendChild(BDFDB.htmlToElement(`<span style="pointer-events: none; -webkit-background-clip: text !important; color: transparent !important; background-image: ${fontcolor} !important;">${BDFDB.encodeToHTML(data.tag)}</span>`));
if (BDFDB.ObjectUtils.is(fontobj)) tag.appendChild(BDFDB.htmlToElement(`<span style="pointer-events: none; -webkit-background-clip: text !important; color: transparent !important; background-image: ${fontcolor} !important;">${BDFDB.encodeToHTML(data.tag)}</span>`));
else {
tag.innerText = data.tag;
tag.style.setProperty("color", fontcolor, "important");
@ -949,7 +947,7 @@ class EditUsers {
}
else username.removeAttribute("changed-by-editusers");
function colorDefault() {
if (BDFDB.isObject(data.color1)) {
if (BDFDB.ObjectUtils.is(data.color1)) {
username.style.removeProperty("color");
BDFDB.setInnerText(username, BDFDB.htmlToElement(`<span style="pointer-events: none; -webkit-background-clip: text !important; color: transparent !important; background-image: ${BDFDB.colorGRADIENT(BDFDB.colorCHANGE(data.color1, -0.5))} !important;">${BDFDB.encodeToHTML(data.name || info.username)}</span>`));
}
@ -957,10 +955,10 @@ class EditUsers {
username.style.setProperty("color", BDFDB.colorCHANGE(data.color1, -0.5, "RGBA"), "important");
BDFDB.setInnerText(username, data.name || info.username);
}
username.style.setProperty("background", BDFDB.isObject(data.color2) ? BDFDB.colorGRADIENT(BDFDB.colorCHANGE(data.color2, -0.5)) : BDFDB.colorCHANGE(data.color2, -0.5, "RGBA"), "important");
username.style.setProperty("background", BDFDB.ObjectUtils.is(data.color2) ? BDFDB.colorGRADIENT(BDFDB.colorCHANGE(data.color2, -0.5)) : BDFDB.colorCHANGE(data.color2, -0.5, "RGBA"), "important");
}
function colorHover() {
if (BDFDB.isObject(data.color1)) {
if (BDFDB.ObjectUtils.is(data.color1)) {
username.style.removeProperty("color");
BDFDB.setInnerText(username, BDFDB.htmlToElement(`<span style="pointer-events: none; -webkit-background-clip: text !important; color: transparent !important; background-image: ${BDFDB.colorGRADIENT(data.color1)} !important;">${BDFDB.encodeToHTML(data.name || info.username)}</span>`));
}
@ -968,7 +966,7 @@ class EditUsers {
username.style.setProperty("color", BDFDB.colorCONVERT(data.color1, "RGBA"), "important");
BDFDB.setInnerText(username, data.name || info.username);
}
username.style.setProperty("background", BDFDB.isObject(data.color2) ? BDFDB.colorGRADIENT(data.color2) : BDFDB.colorCONVERT(data.color2, "RGBA"), "important");
username.style.setProperty("background", BDFDB.ObjectUtils.is(data.color2) ? BDFDB.colorGRADIENT(data.color2) : BDFDB.colorCONVERT(data.color2, "RGBA"), "important");
}
}
}
@ -980,10 +978,10 @@ class EditUsers {
mention.removeEventListener("mouseout", mention.mouseoutListenerEditUsers);
let data = this.getUserData(info.id, mention);
let member = BDFDB.LibraryModules.MemberStore.getMember(BDFDB.LibraryModules.LastGuildStore.getGuildId(), info.id) || {};
let name = "@" + (data.name ? data.name : (BDFDB.isPluginEnabled("RemoveNicknames") ? BDFDB.getPlugin("RemoveNicknames").getNewName(info, mention) : member.nick || info.username));
let name = "@" + (data.name ? data.name : (BDFDB.BdUtils.isPluginEnabled("RemoveNicknames") ? BDFDB.BdUtils.getPlugin("RemoveNicknames").getNewName(info, mention) : member.nick || info.username));
let isgradient = data.color1 && BDFDB.isObject(data.color1);
let datacolor = data.color1 || (BDFDB.isPluginEnabled("BetterRoleColors") ? member.colorString : null);
let isgradient = data.color1 && BDFDB.ObjectUtils.is(data.color1);
let datacolor = data.color1 || (BDFDB.BdUtils.isPluginEnabled("BetterRoleColors") ? member.colorString : null);
let color = isgradient ? BDFDB.colorGRADIENT(data.color1) : BDFDB.colorCONVERT(datacolor, "RGBA");
let color0_1 = isgradient ? BDFDB.colorGRADIENT(BDFDB.colorSETALPHA(data.color1, 0.1, "RGBA")) : BDFDB.colorSETALPHA(datacolor, 0.1, "RGBA");
let color0_7 = isgradient ? BDFDB.colorGRADIENT(BDFDB.colorSETALPHA(data.color1, 0.7, "RGBA")) : BDFDB.colorSETALPHA(datacolor, 0.7, "RGBA");
@ -1052,18 +1050,18 @@ class EditUsers {
}
else username.removeAttribute("changed-by-editusers");
function colorDefault() {
if (BDFDB.isObject(data.color1)) {
if (BDFDB.ObjectUtils.is(data.color1)) {
username.style.removeProperty("color");
BDFDB.setInnerText(username, BDFDB.htmlToElement(`<span style="pointer-events: none; -webkit-background-clip: text !important; color: transparent !important; background-image: ${BDFDB.colorGRADIENT(!speaking ? BDFDB.colorCHANGE(data.color1, -50) : data.color1)} !important;">${BDFDB.encodeToHTML(data.name || member.nick || info.username)}</span>`));
}
else {
var color1 = data.color1 || (BDFDB.isPluginEnabled("BetterRoleColors") ? member.colorString : "");
var color1 = data.color1 || (BDFDB.BdUtils.isPluginEnabled("BetterRoleColors") ? member.colorString : "");
username.style.setProperty("color", !speaking ? BDFDB.colorCHANGE(color1, -50, "RGBA") : BDFDB.colorCONVERT(color1, "RGBA"), "important");
BDFDB.setInnerText(username, data.name || member.nick || info.username);
}
}
function colorHover() {
if (BDFDB.isObject(data.color1)) {
if (BDFDB.ObjectUtils.is(data.color1)) {
username.style.removeProperty("color");
BDFDB.setInnerText(username, BDFDB.htmlToElement(`<span style="pointer-events: none; -webkit-background-clip: text !important; color: transparent !important; background-image: ${BDFDB.colorGRADIENT(data.color1)} !important;">${BDFDB.encodeToHTML(data.name || member.nick || info.username)}</span>`));
}
@ -1128,9 +1126,7 @@ class EditUsers {
wrapper.EditUsersCachedDataState = true;
return data;
}
else {
return {};
}
else return {};
}
addAutoCompleteMenu (textarea, channel) {
@ -1146,7 +1142,7 @@ class EditUsers {
let member = user ? BDFDB.LibraryModules.MemberStore.getMember(channel.guild_id, id) : null;
if (user && member) userarray.push(Object.assign({lowercasename:users[id].name.toLowerCase(),user,member},users[id]));
}
userarray = BDFDB.sortArrayByKey(userarray.filter(n => n.lowercasename.indexOf(lastword.toLowerCase().slice(1)) != -1), "lowercasename");
userarray = BDFDB.ArrayUtils.keySort(userarray.filter(n => n.lowercasename.indexOf(lastword.toLowerCase().slice(1)) != -1), "lowercasename");
if (userarray.length) {
let autocompletemenu = textarea.parentElement.querySelector(BDFDB.dotCNS.autocomplete + BDFDB.dotCN.autocompleteinner), amount = 15;
if (!autocompletemenu) {
@ -1158,7 +1154,7 @@ class EditUsers {
amount -= autocompletemenu.querySelectorAll(BDFDB.dotCN.autocompleteselectable).length;
}
BDFDB.addEventListener(this, autocompletemenu, "mouseenter", BDFDB.dotCN.autocompleteselectable, e => {
BDFDB.ListenerUtils.add(this, autocompletemenu, "mouseenter", BDFDB.dotCN.autocompleteselectable, e => {
var selected = autocompletemenu.querySelectorAll(BDFDB.dotCN.autocompleteselected);
BDFDB.removeClass(selected, BDFDB.disCN.autocompleteselected);
BDFDB.addClass(selected, BDFDB.disCN.autocompleteselector);
@ -1167,10 +1163,10 @@ class EditUsers {
for (let data of userarray) {
if (amount-- < 1) break;
let status = BDFDB.getUserStatus(data.user.id);
let isgradient = data.color1 && BDFDB.isObject(data.color1);
let status = BDFDB.UserUtils.getStatus(data.user.id);
let isgradient = data.color1 && BDFDB.ObjectUtils.is(data.color1);
let username = isgradient ? `<div class="${BDFDB.disCN.marginleft8}" changed-by-editusers="true" style="flex: 1 1 auto;"><span style="pointer-events: none; -webkit-background-clip: text !important; color: transparent !important; background-image: ${BDFDB.colorGRADIENT(data.color1)} !important;">${BDFDB.encodeToHTML(data.name || data.member.nick || data.user.username)}</span></div>` : `<div class="${BDFDB.disCN.marginleft8}" changed-by-editusers="true" style="flex: 1 1 auto;${data.color1 ? (' color: ' + BDFDB.colorCONVERT(data.color1, 'RGB') + ' !important;') : ''}">${BDFDB.encodeToHTML(data.name || data.member.nick || data.user.username)}</div>`;
let autocompleterow = BDFDB.htmlToElement(`<div class="${BDFDB.disCNS.autocompleterowvertical + BDFDB.disCN.autocompleterow} autocompleteEditUsersRow"><div userid="${data.user.id}" class="${BDFDB.disCNS.autocompleteselector + BDFDB.disCN.autocompleteselectable} autocompleteEditUsersSelector"><div class="${BDFDB.disCNS.flex + BDFDB.disCNS.horizontal + BDFDB.disCNS.justifystart + BDFDB.disCNS.aligncenter + BDFDB.disCNS.nowrap + BDFDB.disCN.autocompletecontent}" style="flex: 1 1 auto;"><div class="${BDFDB.disCN.avatarwrapper}" role="img" aria-label="${data.user.username}, ${BDFDB.LanguageUtils.LanguageStrings["STATUS_" + status.toUpperCase()]}" aria-hidden="false" style="width: 24px; height: 24px;"><svg width="30" height="24" viewBox="0 0 30 24" class="${BDFDB.disCN.avatarmask}" aria-hidden="true"><foreignObject x="0" y="0" width="24" height="24" mask="url(#svg-mask-avatar-status-round-24)"><img src="${data.url || BDFDB.getUserAvatar(data.user.id)}" alt=" " class="${BDFDB.disCN.avatar}" aria-hidden="true"></foreignObject><rect width="8" height="8" x="16" y="16" fill="${BDFDB.getUserStatusColor(status)}" mask="url(#svg-mask-status-${status})" class="${BDFDB.disCN.avatarpointerevents}"></rect></svg></div>${username}<div class="${BDFDB.disCNS.flex + BDFDB.disCNS.horizontal + BDFDB.disCNS.justifystart + BDFDB.disCNS.alignbaseline + BDFDB.disCNS.nowrap + BDFDB.disCN.autocompletedescription}" style="flex: 0 1 auto;"><div class="${BDFDB.disCN.autocompletedescriptionusername}">${BDFDB.encodeToHTML(data.user.username)}</div><div class="${BDFDB.disCN.autocompletedescriptiondiscriminator}">#${data.user.discriminator}</div></div></div></div></div>`);
let autocompleterow = BDFDB.htmlToElement(`<div class="${BDFDB.disCNS.autocompleterowvertical + BDFDB.disCN.autocompleterow} autocompleteEditUsersRow"><div userid="${data.user.id}" class="${BDFDB.disCNS.autocompleteselector + BDFDB.disCN.autocompleteselectable} autocompleteEditUsersSelector"><div class="${BDFDB.disCNS.flex + BDFDB.disCNS.horizontal + BDFDB.disCNS.justifystart + BDFDB.disCNS.aligncenter + BDFDB.disCNS.nowrap + BDFDB.disCN.autocompletecontent}" style="flex: 1 1 auto;"><div class="${BDFDB.disCN.avatarwrapper}" role="img" aria-label="${data.user.username}, ${BDFDB.LanguageUtils.LanguageStrings["STATUS_" + status.toUpperCase()]}" aria-hidden="false" style="width: 24px; height: 24px;"><svg width="30" height="24" viewBox="0 0 30 24" class="${BDFDB.disCN.avatarmask}" aria-hidden="true"><foreignObject x="0" y="0" width="24" height="24" mask="url(#svg-mask-avatar-status-round-24)"><img src="${data.url || BDFDB.UserUtils.getAvatar(data.user.id)}" alt=" " class="${BDFDB.disCN.avatar}" aria-hidden="true"></foreignObject><rect width="8" height="8" x="16" y="16" fill="${BDFDB.UserUtils.getStatusColor(status)}" mask="url(#svg-mask-status-${status})" class="${BDFDB.disCN.avatarpointerevents}"></rect></svg></div>${username}<div class="${BDFDB.disCNS.flex + BDFDB.disCNS.horizontal + BDFDB.disCNS.justifystart + BDFDB.disCNS.alignbaseline + BDFDB.disCNS.nowrap + BDFDB.disCN.autocompletedescription}" style="flex: 0 1 auto;"><div class="${BDFDB.disCN.autocompletedescriptionusername}">${BDFDB.encodeToHTML(data.user.username)}</div><div class="${BDFDB.disCN.autocompletedescriptiondiscriminator}">#${data.user.discriminator}</div></div></div></div></div>`);
autocompleterow.querySelector(BDFDB.dotCN.autocompleteselectable).addEventListener("click", () => {this.swapWordWithMention(textarea);});
autocompletemenu.appendChild(autocompleterow);
}
@ -1213,7 +1209,7 @@ class EditUsers {
}
setLabelsByLanguage () {
switch (BDFDB.getDiscordLanguage().id) {
switch (BDFDB.LanguageUtils.getLanguage().id) {
case "hr": //croatian
return {
context_localusersettings_text: "Lokalne korisničke postavke",

View File

@ -180,13 +180,11 @@ class EmojiStatistics {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
stop () {
@ -194,7 +192,7 @@ class EmojiStatistics {
this.stopping = true;
BDFDB.removeEles(".emoji-tooltip",".emojistatistics-button");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -222,18 +220,18 @@ class EmojiStatistics {
let emojiStatisticsButton = BDFDB.htmlToElement(`<div class="emojistatistics-button"></div>`);
emojipickerdiversityselector.parentElement.insertBefore(emojiStatisticsButton, emojipickerdiversityselector);
emojiStatisticsButton.addEventListener("click", () => {
let close = BDFDB.getReactValue(instance, "_reactInternalFiber.return.return.return.return.stateNode.close");
let close = BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.return.return.return.return.stateNode.close");
if (close) close();
this.showEmojiInformationModal();
});
emojiStatisticsButton.addEventListener("mouseenter", e => {
BDFDB.createTooltip("Emoji Statistics", emojiStatisticsButton, {type:"top",selector:"emojistatistics-tooltip"});
BDFDB.TooltipUtils.create(emojiStatisticsButton, "Emoji Statistics", {type:"top",selector:"emojistatistics-tooltip"});
});
}
if (settings.enableEmojiHovering) {
BDFDB.addEventListener(this, wrapper, "mouseenter", BDFDB.dotCN.emojipickeremojiitem, e => {
BDFDB.ListenerUtils.add(this, wrapper, "mouseenter", BDFDB.dotCN.emojipickeremojiitem, e => {
let data = this.emojiToServerList[e.target.style.getPropertyValue("background-image").replace('url("',"").replace('")',"")];
if (data) BDFDB.createTooltip(`${BDFDB.encodeToHTML(data.emoji)}\n${BDFDB.encodeToHTML(data.server)}`, e.target, {type:"right",selector:"emoji-tooltip",delay:BDFDB.getData("hoverDelay", this, "amounts")});
if (data) BDFDB.TooltipUtils.create(e.target, `${BDFDB.encodeToHTML(data.emoji)}\n${BDFDB.encodeToHTML(data.server)}`, {type:"right",selector:"emoji-tooltip",delay:BDFDB.getData("hoverDelay", this, "amounts")});
});
}
}
@ -242,7 +240,7 @@ class EmojiStatistics {
loadEmojiList () {
this.emojiReplicaList = {};
this.emojiToServerList = {};
for (let serverObj of BDFDB.readServerList()) {
for (let serverObj of BDFDB.GuildUtils.getAll()) {
for (let emoji of BDFDB.LibraryModules.GuildEmojiStore.getGuildEmoji(serverObj.id)) {
this.emojiToServerList[emoji.url] = {emoji:emoji.allNamesString, server:serverObj.name};
if (emoji.managed) this.emojiReplicaList[emoji.name] = this.emojiReplicaList[emoji.name] != undefined;
@ -261,7 +259,7 @@ class EmojiStatistics {
var titleEntry = BDFDB.htmlToElement(this.emojiserverTitlesMarkup);
titlescontainer.appendChild(titleEntry);
var entries = [], index = 0, totalGlobal = 0, totalLocal = 0, totalCopies = 0;
BDFDB.addChildEventListener(titleEntry, "click", ".sorttitle-label ", e => {
BDFDB.ListenerUtils.addToChildren(titleEntry, "click", ".sorttitle-label ", e => {
var oldTitle = e.currentTarget.innerText;
this.resetTitles(titleEntry, totalGlobal, totalLocal, totalCopies);
@ -272,13 +270,13 @@ class EmojiStatistics {
e.currentTarget.innerText = oldTitle.indexOf("▼") < 0 ? e.currentTarget.innerText + "▼" : e.currentTarget.innerText + "▲";
}
BDFDB.sortArrayByKey(entries, sortKey);
BDFDB.ArrayUtils.keySort(entries, sortKey);
if (reverse) entries.reverse();
this.updateAllEntries(entriescontainer, entries);
});
for (let info of BDFDB.readServerList()) {
for (let info of BDFDB.GuildUtils.getAll()) {
let amountGlobal = 0, amountLocal = 0, amountCopies = 0;
for (let emoji of BDFDB.LibraryModules.GuildEmojiStore.getGuildEmoji(info.id)) {
if (emoji.managed) {
@ -290,7 +288,7 @@ class EmojiStatistics {
}
}
var emojiEntry = BDFDB.htmlToElement(this.emojiserverEntryMarkup);
emojiEntry.querySelector(".emojiserver-icon").appendChild(BDFDB.createServerDivCopy(info, {click: () => {BDFDB.removeEles(emojiInformationModal);}, menu: true, size: 48}));
emojiEntry.querySelector(".emojiserver-icon").appendChild(BDFDB.GuildUtils.createCopy(info, {click: () => {BDFDB.removeEles(emojiInformationModal);}, menu: true, size: 48}));
emojiEntry.querySelector(".emojiname-label").innerText = info.name || "";
emojiEntry.querySelector(".emojitotal-label").innerText = amountGlobal + amountLocal;
emojiEntry.querySelector(".emojiglobal-label").innerText = amountGlobal;

View File

@ -43,13 +43,11 @@ class ForceImagePreviews {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
stop () {
@ -57,7 +55,7 @@ class ForceImagePreviews {
this.stopping = true;
BDFDB.removeEles(".FIP-embed");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -114,7 +112,7 @@ class ForceImagePreviews {
let width = 400;
let height = Math.round(width*(result.split('<meta itemprop="height" content="')[1].split('"')[0]/result.split('<meta itemprop="width" content="')[1].split('"')[0]));
let embed = BDFDB.htmlToElement(`<div class="FIP-embed ${BDFDB.disCNS.embed + BDFDB.disCN.embedwrapper}" style="max-width: 426px;"><div class="${BDFDB.disCN.embedpill}" style="background-color: rgb(255, 0, 0);"></div><div class="${BDFDB.disCN.embedinner}"><div class="${BDFDB.disCNS.embedcontent + BDFDB.disCN.flex}"><div class="${BDFDB.disCN.embedcontentinner}"><div class=""><a class="${BDFDB.disCNS.anchor + BDFDB.disCNS.embedproviderlink + BDFDB.disCNS.embedlink + BDFDB.disCNS.embedprovider + BDFDB.disCNS.titlesize12 + BDFDB.disCN.weightnormal}" href="https://www.youtube.com/" rel="noreferrer noopener" target="_blank">YouTube</a></div><div class="${BDFDB.disCNS.embedauthor + BDFDB.disCNS.flex2 + BDFDB.disCNS.aligncenter + BDFDB.disCNS.embedmargin + BDFDB.disCN.margintop4}"><a class="${BDFDB.disCNS.anchor + BDFDB.disCNS.embedauthornamelink + BDFDB.disCNS.embedlink + BDFDB.disCNS.embedauthorname + BDFDB.disCNS.weightmedium + BDFDB.disCN.titlesize14}" href="https://www.youtube.com${result.split('<div class="yt-user-info"><a href="')[1].split('"')[0]}" rel="noreferrer noopener" target="_blank">${BDFDB.encodeToHTML(result.split('<div class="yt-user-info"><a href="')[1].split('>')[1].split('<')[0])}</a></div><div class="${BDFDB.disCNS.embedmargin + BDFDB.disCN.margintop4}"><a class="${BDFDB.disCNS.anchor + BDFDB.disCNS.embedtitlelink + BDFDB.disCNS.embedlink + BDFDB.disCNS.embedtitle + BDFDB.disCNS.titlesize14 + BDFDB.disCN.weightmedium}" href="${itemsrc}" rel="noreferrer noopener" target="_blank">${BDFDB.encodeToHTML(result.split('<meta property="og:title" content="')[1].split('"')[0])}</a></div></div></div><div class="${BDFDB.disCNS.embedvideo + BDFDB.disCNS.embedimage + BDFDB.disCNS.embedmarginlarge + BDFDB.disCN.margintop8}" style="width: ${width}px; height: ${height}px;"><div class="${BDFDB.disCNS.imagewrapper + BDFDB.disCNS.imageclickable + BDFDB.disCN.embedvideoimagecomponent}" style="width: ${width}px; height: ${height}px;"><img alt="" src="${result.split('<link itemprop="thumbnailUrl" href="')[1].split('"')[0]}" style="width: ${width}px; height: ${height}px;"></div><div class="${BDFDB.disCN.embedvideoactions}"><div class="${BDFDB.disCN.embedcentercontent}"><div class="${BDFDB.disCN.iconactionswrapper}"><div tabindex="0" class="${BDFDB.disCNS.iconwrapper + BDFDB.disCN.iconwrapperactive}" role="button"><svg name="Play" class="${BDFDB.disCNS.iconplay + BDFDB.disCN.icon}" width="16" height="16" viewBox="0 0 24 24"><polygon fill="currentColor" points="0 0 0 14 11 7" transform="translate(7 5)"></polygon></svg></div><a class="${BDFDB.disCNS.anchor + BDFDB.disCNS.anchorunderlineonhover + BDFDB.disCNS.iconwrapper + BDFDB.disCN.iconwrapperactive}" href="${itemsrc}" rel="noreferrer noopener" target="_blank"><svg name="OpenExternal" class="${BDFDB.disCNS.iconexternalmargins + BDFDB.disCN.icon}" width="16" height="16" viewBox="0 0 24 24"><path fill="currentColor" transform="translate(3.000000, 4.000000)" d="M16 0H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h4v-2H2V4h14v10h-4v2h4c1.1 0 2-.9 2-2V2a2 2 0 0 0-2-2zM9 6l-4 4h3v6h2v-6h3L9 6z"></path></svg></a></div></div></div></div></div></div></div>`);
BDFDB.addChildEventListener(embed, "click", BDFDB.dotCN.iconplay, () => {
BDFDB.ListenerUtils.addToChildren(embed, "click", BDFDB.dotCN.iconplay, () => {
let videowrapper = embed.querySelector(BDFDB.dotCN.embedvideo);
BDFDB.removeEles(videowrapper.childNodes);
videowrapper.appendChild(BDFDB.htmlToElement(`<iframe src="${result.split('<link itemprop="embedURL" href="')[1].split('"')[0]}?start=0&amp;autoplay=1&amp;auto_play=1" width="${width}" height="${height}" frameborder="0" allowfullscreen=""></iframe>`));

View File

@ -225,9 +225,9 @@ class FriendNotifications {
BDFDB.initElements(settingspanel, this);
BDFDB.addEventListener(this, settingspanel, "keyup", ".input-notificationstring", e => {this.saveNotificationString(e.currentTarget);});
BDFDB.addEventListener(this, settingspanel, "click", ".btn-savesong", e => {this.saveNotificationSound(e.currentTarget.parentElement.querySelector(BDFDB.dotCN.input));});
BDFDB.addEventListener(this, settingspanel, "click", ".mute-checkbox", e => {
BDFDB.ListenerUtils.add(this, settingspanel, "keyup", ".input-notificationstring", e => {this.saveNotificationString(e.currentTarget);});
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".btn-savesong", e => {this.saveNotificationSound(e.currentTarget.parentElement.querySelector(BDFDB.dotCN.input));});
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".mute-checkbox", e => {
let config = e.currentTarget.getAttribute("config");
if (config) {
let notificationsound = BDFDB.getData(config, this, "notificationsounds");
@ -235,30 +235,30 @@ class FriendNotifications {
BDFDB.saveData(config, notificationsound, this, "notificationsounds");
}
});
BDFDB.addEventListener(this, settingspanel, "click", ".settings-avatar", e => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".settings-avatar", e => {
this.changeNotificationType(e.currentTarget, false, !BDFDB.containsClass(e.currentTarget, "disabled", "desktop", false));
});
BDFDB.addEventListener(this, settingspanel, "contextmenu", ".settings-avatar", e => {
BDFDB.ListenerUtils.add(this, settingspanel, "contextmenu", ".settings-avatar", e => {
if (!("Notification" in window)) return;
this.changeNotificationType(e.currentTarget, true, !(BDFDB.containsClass(e.currentTarget, "disabled") || !BDFDB.containsClass(e.currentTarget, "desktop")));
});
BDFDB.addEventListener(this, settingspanel, "click", ".btn-batch", e => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".btn-batch", e => {
this.changeAllNotificationTypes(settingspanel, e.currentTarget, true);
});
BDFDB.addEventListener(this, settingspanel, "contextmenu", ".btn-batch", e => {
BDFDB.ListenerUtils.add(this, settingspanel, "contextmenu", ".btn-batch", e => {
this.changeAllNotificationTypes(settingspanel, e.currentTarget, false);
});
BDFDB.addEventListener(this, settingspanel, "click", BDFDB.dotCN.checkboxinput, e => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", BDFDB.dotCN.checkboxinput, e => {
if (BDFDB.containsClass(e.target, "remove-user")) return;
this.changeNotificationConfig(e.currentTarget);
});
BDFDB.addEventListener(this, settingspanel, "click", ".BDFDB-tableheadercolumn", e => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".BDFDB-tableheadercolumn", e => {
this.changeAllNotificationConfigs(settingspanel, e.currentTarget, true);
});
BDFDB.addEventListener(this, settingspanel, "contextmenu", ".BDFDB-tableheadercolumn", e => {
BDFDB.ListenerUtils.add(this, settingspanel, "contextmenu", ".BDFDB-tableheadercolumn", e => {
this.changeAllNotificationConfigs(settingspanel, e.currentTarget, false);
});
BDFDB.addEventListener(this, settingspanel, "click", ".remove-user", e => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".remove-user", e => {
let id = e.currentTarget.getAttribute("user-id");
let group = e.currentTarget.getAttribute("group");
if (id && group) {
@ -267,12 +267,12 @@ class FriendNotifications {
this.SettingsUpdated = true;
}
});
BDFDB.addEventListener(this, settingspanel, "click", ".btn-adduser", e => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".btn-adduser", e => {
let idinput = settingspanel.querySelector("#input-userid");
let id = idinput.value;
idinput.value = "";
if (friendIDs.includes(id)) BDFDB.showToast("User is already a friend of yours. Please use the 'Friends' area to configure him/her.", {type:"error"});
else if (BDFDB.loadData(id, this, "nonfriends")) BDFDB.showToast("User is already being observed as a 'Non-Friend'.", {type:"error"});
if (friendIDs.includes(id)) BDFDB.NotificationUtils.toast("User is already a friend of yours. Please use the 'Friends' area to configure him/her.", {type:"error"});
else if (BDFDB.loadData(id, this, "nonfriends")) BDFDB.NotificationUtils.toast("User is already being observed as a 'Non-Friend'.", {type:"error"});
else {
let user = BDFDB.LibraryModules.UserStore.getUser(id);
if (user) {
@ -283,11 +283,11 @@ class FriendNotifications {
BDFDB.initElements(hovercard);
this.SettingsUpdated = true;
}
else if (/.+#[0-9]{4}/.test(id)) BDFDB.showToast("A UserID does not consist of the username and discriminator.", {type:"error"});
else BDFDB.showToast("Please enter a valid UserID of a user that has been loaded in your client.", {type:"error"});
else if (/.+#[0-9]{4}/.test(id)) BDFDB.NotificationUtils.toast("A UserID does not consist of the username and discriminator.", {type:"error"});
else BDFDB.NotificationUtils.toast("Please enter a valid UserID of a user that has been loaded in your client.", {type:"error"});
}
});
BDFDB.addEventListener(this, settingspanel, "click", ".btn-timelog", () => {this.showTimeLog();});
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".btn-timelog", () => {this.showTimeLog();});
return settingspanel;
}
@ -316,15 +316,13 @@ class FriendNotifications {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
this.startInterval();
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
stop () {
@ -332,7 +330,7 @@ class FriendNotifications {
this.stopping = true;
clearInterval(this.checkInterval);
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -341,7 +339,7 @@ class FriendNotifications {
createHoverCard (user, data, group) {
let EUdata = BDFDB.loadData(user.id, "EditUsers", "users") || {};
var hovercardhtml = `<div class="${BDFDB.disCNS.flex + BDFDB.disCNS.vertical + BDFDB.disCNS.justifystart + BDFDB.disCNS.aligncenter + BDFDB.disCNS.nowrap + BDFDB.disCNS.margintop4 + BDFDB.disCNS.marginbottom4 + BDFDB.disCN.hovercard}"><div class="${BDFDB.disCN.hovercardinner}"><div class="settings-avatar${data.desktop ? " desktop" : ""}${data.disabled ? " disabled" : ""}" group="${group}" user-id="${user.id}" style="flex: 0 0 auto; background-image: url(${EUdata.removeIcon ? "" : (EUdata.url ? EUdata.url : BDFDB.getUserAvatar(user.id))});"></div><div class="BDFDB-textscrollwrapper" style="flex: 1 1 auto;"><div class="BDFDB-textscroll">${BDFDB.encodeToHTML(EUdata.name || user.username)}</div></div>`;
var hovercardhtml = `<div class="${BDFDB.disCNS.flex + BDFDB.disCNS.vertical + BDFDB.disCNS.justifystart + BDFDB.disCNS.aligncenter + BDFDB.disCNS.nowrap + BDFDB.disCNS.margintop4 + BDFDB.disCNS.marginbottom4 + BDFDB.disCN.hovercard}"><div class="${BDFDB.disCN.hovercardinner}"><div class="settings-avatar${data.desktop ? " desktop" : ""}${data.disabled ? " disabled" : ""}" group="${group}" user-id="${user.id}" style="flex: 0 0 auto; background-image: url(${EUdata.removeIcon ? "" : (EUdata.url ? EUdata.url : BDFDB.UserUtils.getAvatar(user.id))});"></div><div class="BDFDB-textscrollwrapper" style="flex: 1 1 auto;"><div class="BDFDB-textscroll">${BDFDB.encodeToHTML(EUdata.name || user.username)}</div></div>`;
for (let config in this.defaults.notificationstrings) {
hovercardhtml += `<div class="${BDFDB.disCNS.checkboxcontainer + BDFDB.disCN.marginreset} BDFDB-tablecheckbox" table-id="${group}" style="flex: 0 0 auto;"><label class="${BDFDB.disCN.checkboxwrapper}"><input user-id="${user.id}" group="${group}" config="${config}" type="checkbox" class="${BDFDB.disCN.checkboxinputdefault}"${data[config] ? " checked" : ""}><div class="${BDFDB.disCNS.checkbox + BDFDB.disCNS.flexcenter + BDFDB.disCNS.flex2 + BDFDB.disCNS.justifystart + BDFDB.disCNS.aligncenter + BDFDB.disCN.checkboxround}"><svg name="Checkmark" width="18" height="18" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><polyline stroke="transparent" stroke-width="2" points="3.5 9.5 7 13 15 5"></polyline></g></svg></div></label></div>`;
}
@ -407,7 +405,7 @@ class FriendNotifications {
}
createDefaultConfig () {
return Object.assign({desktop: false, disabled: BDFDB.getData("disableForNew", this, "settings")}, BDFDB.mapObject(this.defaults.notificationstrings, "init"));
return Object.assign({desktop: false, disabled: BDFDB.getData("disableForNew", this, "settings")}, BDFDB.ObjectUtils.map(this.defaults.notificationstrings, "init"));
}
saveNotificationString (input) {
@ -422,7 +420,7 @@ class FriendNotifications {
let config = input.getAttribute("config");
if (config) {
let successSavedAudio = (parsedurl, parseddata) => {
if (parsedurl && parseddata) BDFDB.showToast(`Sound was saved successfully.`, {type:"success"});
if (parsedurl && parseddata) BDFDB.NotificationUtils.toast(`Sound was saved successfully.`, {type:"success"});
let notificationsound = BDFDB.getData(config, this, "notificationsounds");
notificationsound.url = parsedurl;
notificationsound.song = parseddata;
@ -432,7 +430,7 @@ class FriendNotifications {
let url = input.value;
if (url.length == 0) {
BDFDB.showToast(`Sound file was removed.`, {type:"warn"});
BDFDB.NotificationUtils.toast(`Sound file was removed.`, {type:"warn"});
successSavedAudio(url, url);
}
else if (url.indexOf("http") == 0) {
@ -444,12 +442,12 @@ class FriendNotifications {
return;
}
}
BDFDB.showToast("Use a valid direct link to a video or audio source. They usually end on something like .mp3, .mp4 or .wav.", {type:"danger"});
BDFDB.NotificationUtils.toast("Use a valid direct link to a video or audio source. They usually end on something like .mp3, .mp4 or .wav.", {type:"danger"});
});
}
else {
BDFDB.LibraryRequires.fs.readFile(url, (error, response) => {
if (error) BDFDB.showToast("Could not fetch file. Please make sure the file exists.", {type:"danger"});
if (error) BDFDB.NotificationUtils.toast("Could not fetch file. Please make sure the file exists.", {type:"danger"});
else successSavedAudio(url, `data:audio/mpeg;base64,${response.toString("base64")}`);
});
}
@ -464,7 +462,7 @@ class FriendNotifications {
}
getStatusWithMobileAndActivity (id, config) {
let statusname = BDFDB.getUserStatus(id);
let statusname = BDFDB.UserUtils.getStatus(id);
let status = {statusname, isactivity:false};
let activity = BDFDB.LibraryModules.StatusMetaUtils.getPrimaryActivity(id);
if (activity && this.activityTypes[activity.type]) {
@ -498,20 +496,20 @@ class FriendNotifications {
let string = notificationstrings[status.statusname] || "$user changed status to $status";
let toaststring = BDFDB.encodeToHTML(string).replace(/'{0,1}\$user'{0,1}/g, `<strong>${BDFDB.encodeToHTML(EUdata.name || user.username)}</strong>`).replace(/'{0,1}\$status'{0,1}/g, `<strong>${libstring}</strong>`);
if (status.isactivity) toaststring = toaststring.replace(/'{0,1}\$song'{0,1}|'{0,1}\$game'{0,1}/g, `<strong>${status.name || status.details}</strong>`).replace(/'{0,1}\$artist'{0,1}/g, `<strong>${status.state}</strong>`);
let avatar = EUdata.removeIcon ? "" : (EUdata.url ? EUdata.url : BDFDB.getUserAvatar(user.id));
let avatar = EUdata.removeIcon ? "" : (EUdata.url ? EUdata.url : BDFDB.UserUtils.getAvatar(user.id));
this.timeLog.push({string:toaststring, avatar, time: new Date()});
if (!(settings.muteOnDND && BDFDB.getUserStatus() == "dnd")) {
if (!(settings.muteOnDND && BDFDB.UserUtils.getStatus() == "dnd")) {
let openChannel = () => {
if (settings.openOnClick) {
let DMid = BDFDB.LibraryModules.ChannelStore.getDMFromUserId(user.id)
if (DMid) BDFDB.LibraryModules.SelectChannelUtils.selectPrivateChannel(DMid);
else BDFDB.LibraryModules.DirectMessageUtils.openPrivateChannel(BDFDB.myData.id, user.id);
else BDFDB.LibraryModules.DirectMessageUtils.openPrivateChannel(BDFDB.UserUtils.me.id, user.id);
BDFDB.LibraryRequires.electron.remote.getCurrentWindow().maximize();
}
};
if (!users[id].desktop) {
if (!document.querySelector(`.friendnotifications-${id}-toast`)) {
let toast = BDFDB.showToast(`<div class="toast-inner"><div class="toast-avatar" style="background-image:url(${avatar});"></div><div>${toaststring}</div></div>`, {html:true, timeout:toasttime, color:BDFDB.getUserStatusColor(status.statusname), icon:false, selector:`friendnotifications-${status.statusname}-toast friendnotifications-${id}-toast`});
let toast = BDFDB.NotificationUtils.toast(`<div class="toast-inner"><div class="toast-avatar" style="background-image:url(${avatar});"></div><div>${toaststring}</div></div>`, {html:true, timeout:toasttime, color:BDFDB.UserUtils.getStatusColor(status.statusname), icon:false, selector:`friendnotifications-${status.statusname}-toast friendnotifications-${id}-toast`});
toast.addEventListener("click", openChannel);
let notificationsound = notificationsounds["toast" + status.statusname] || {};
if (!notificationsound.mute && notificationsound.song) {
@ -525,7 +523,7 @@ class FriendNotifications {
let desktopstring = string.replace(/\$user/g, EUdata.name || user.username).replace(/\$status/g, libstring);
if (status.isactivity) desktopstring = desktopstring.replace(/\$song|\$game/g, status.name || status.details).replace(/\$artist/g, status.state);
let notificationsound = notificationsounds["desktop" + status.statusname] || {};
BDFDB.showDesktopNotification(desktopstring, {icon:avatar, timeout:desktoptime, click:openChannel, silent:notificationsound.mute, sound:notificationsound.song});
BDFDB.NotificationUtils.desktop(desktopstring, {icon:avatar, timeout:desktoptime, click:openChannel, silent:notificationsound.mute, sound:notificationsound.song});
}
}
}

View File

@ -83,18 +83,16 @@ class GoogleSearchReplace {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.PluginUtils.init(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;
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -117,7 +115,7 @@ class GoogleSearchReplace {
appendItem (menu, returnvalue, text) {
let engines = BDFDB.getAllData(this, "engines");
let items = [];
for (let key in engines) if (engines[key]) items.push(BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
for (let key in engines) if (engines[key]) items.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.defaults.engines[key].name,
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-engine-contextMenuItem`,
action: e => {
@ -128,13 +126,13 @@ class GoogleSearchReplace {
else window.open(this.defaults.engines[key].url.replace(this.textUrlReplaceString, encodeURIComponent(text)), "_blank");
}
}));
if (!items.length) items.push(BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
if (!items.length) items.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.submenu_disabled_text,
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-disabled-contextMenuItem`,
disabled: true
}));
let [children, index] = BDFDB.getContextMenuGroupAndIndex(returnvalue, "SearchWithGoogle");
const item = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuSubItem, {
const item = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuSubItem, {
label: this.labels.context_googlesearchreplace_text,
className: `BDFDB-contextMenuSubItem ${this.name}-contextMenuSubItem ${this.name}-search-contextMenuSubItem`,
render: items

View File

@ -154,9 +154,9 @@ class GoogleTranslateOption {
BDFDB.initElements(settingspanel, this);
BDFDB.addEventListener(this, settingspanel, "click", BDFDB.dotCN.selectcontrol, e => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", BDFDB.dotCN.selectcontrol, e => {
let type = BDFDB.getParentEle(BDFDB.dotCN.select, e.currentTarget).getAttribute("type");
let menulanguages = this.defaults.choices[type].direction == "Output" ? BDFDB.filterObject(this.languages, lang => {return lang.id != "auto";}) : this.languages;
let menulanguages = this.defaults.choices[type].direction == "Output" ? BDFDB.ObjectUtils.filter(this.languages, lang => {return lang.id != "auto";}) : this.languages;
BDFDB.openDropdownMenu(e, this.saveSelectChoice.bind(this), this.createSelectChoice.bind(this), menulanguages);
});
@ -187,15 +187,13 @@ class GoogleTranslateOption {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
this.setLanguages();
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
stop () {
@ -208,7 +206,7 @@ class GoogleTranslateOption {
BDFDB.removeEles(".translate-button", ".popout-googletranslate");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -221,9 +219,9 @@ class GoogleTranslateOption {
if (!messagediv || pos == -1) return;
let translated = BDFDB.containsClass(messagediv, "GTO-translated-message");
let [children, index] = BDFDB.getContextMenuGroupAndIndex(returnvalue, "MessagePinItem");
const translateUntranslateItem = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
const translateUntranslateItem = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: translated ? this.labels.context_messageuntranslateoption_text : this.labels.context_messagetranslateoption_text,
hint: BDFDB.isPluginEnabled("MessageUtilities") ? BDFDB.getPlugin("MessageUtilities").getActiveShortcutString("__Translate_Message") : null,
hint: BDFDB.BdUtils.isPluginEnabled("MessageUtilities") ? BDFDB.BdUtils.getPlugin("MessageUtilities").getActiveShortcutString("__Translate_Message") : null,
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-${translated ? "untranslate" : "translate"}-contextMenuItem`,
action: e => {
BDFDB.closeContextMenu(menu);
@ -234,17 +232,17 @@ class GoogleTranslateOption {
else children.push(translateUntranslateItem);
let text = document.getSelection().toString();
if (text) {
let GSRstring = BDFDB.getReactValue(BDFDB.getPlugin("GoogleSearchReplace", true), "labels.context_googlesearchreplace_text");
let GSRstring = BDFDB.ReactUtils.getValue(BDFDB.BdUtils.getPlugin("GoogleSearchReplace", true), "labels.context_googlesearchreplace_text");
let [children2, index2] = BDFDB.getContextMenuGroupAndIndex(returnvalue, GSRstring ? ["SearchWithGoogle", GSRstring] : "SearchWithGoogle");
var foundtranslation, foundinput, foundoutput;
const searchTranslationItem = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
const searchTranslationItem = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.context_googletranslateoption_text,
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-searchtranslation-contextMenuItem`,
action: e => {
var item = BDFDB.getParentEle(BDFDB.dotCN.contextmenuitem, e.target);
if (item) {
var createTooltip = () => {
BDFDB.createTooltip(`From ${foundinput.name}:\n${text}\n\nTo ${foundoutput.name}:\n${foundtranslation}`, item, {type:"right", selector:"googletranslate-tooltip"});
BDFDB.TooltipUtils.create(item, `From ${foundinput.name}:\n${text}\n\nTo ${foundoutput.name}:\n${foundtranslation}`, {type:"right", selector:"googletranslate-tooltip"});
};
if (foundtranslation && foundinput && foundoutput) {
if (document.querySelector(".googletranslate-tooltip")) {
@ -274,7 +272,7 @@ class GoogleTranslateOption {
if (!messagediv || pos == -1) return;
let translated = BDFDB.containsClass(messagediv, "GTO-translated-message");
let [children, index] = BDFDB.getContextMenuGroupAndIndex(returnvalue, [BDFDB.LanguageUtils.LanguageStrings.PIN, BDFDB.LanguageUtils.LanguageStrings.UNPIN]);
const translateUntranslateItem = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
const translateUntranslateItem = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels[translated ? "popout_untranslateoption_text" : "popout_translateoption_text"],
className: `${BDFDB.disCN.optionpopoutitem} BDFDB-popoutMenuItem ${this.name}-popoutMenuItem ${this.name}-${translated ? "untranslate" : "translate"}-popoutMenuItem`,
action: e => {
@ -289,14 +287,14 @@ class GoogleTranslateOption {
setLanguages () {
this.languages = Object.assign({},
{"auto": {name:"Auto", id:"auto", integrated:false, dic:false}},
BDFDB.languages,
BDFDB.LanguageUtils.languages,
{"binary": {name:"Binary", id:"binary", integrated:false, dic:false}},
{"braille": {name:"Braille 6-dot", id:"braille", integrated:false, dic:false}},
{"morse": {name:"Morse", id:"morse", integrated:false, dic:false}}
);
let favorites = BDFDB.loadAllData(this, "favorites")
for (let id in this.languages) this.languages[id].fav = favorites[id] != undefined ? 0 : 1;
this.languages = BDFDB.sortObject(this.languages, "fav");
this.languages = BDFDB.ObjectUtils.sort(this.languages, "fav");
}
getLanguageChoice (direction, place) {
@ -313,7 +311,7 @@ class GoogleTranslateOption {
delete this.SettingsUpdated;
this.setLanguages();
BDFDB.removeEles(".translate-button");
BDFDB.WebModules.forceAllUpdates(this, "ChannelTextArea");
BDFDB.ModuleUtils.forceAllUpdates(this, "ChannelTextArea");
}
}
@ -334,7 +332,7 @@ class GoogleTranslateOption {
buttoncontainer.insertBefore(translateButton, buttoncontainer.firstElementChild);
BDFDB.addClass(translateButton, instance.props.type);
BDFDB.toggleClass(translateButton, "translating-active", this.translating);
BDFDB.addEventListener(this, textarea, "input", () => {
BDFDB.ListenerUtils.add(this, textarea, "input", () => {
if (this.doTranslate) {
this.doTranslate = false;
if (document.activeElement == textarea) {
@ -352,7 +350,7 @@ class GoogleTranslateOption {
}
}
});
BDFDB.addEventListener(this, textarea, "keydown", e => {
BDFDB.ListenerUtils.add(this, textarea, "keydown", e => {
if (textarea.value && this.translating && !e.shiftKey && e.which == 13 && !wrapper.querySelector(BDFDB.dotCN.autocomplete)) {
this.doTranslate = true;
textarea.dispatchEvent(new Event("input"));
@ -363,7 +361,7 @@ class GoogleTranslateOption {
}
processMessage (instance, wrapper, returnvalue) {
if (instance.props && typeof instance.props.renderButtons == "function" && !wrapper.querySelector(BDFDB.dotCN.optionpopoutbutton) && BDFDB.getReactValue(instance, "props.message.author.id") != 1) {
if (instance.props && typeof instance.props.renderButtons == "function" && !wrapper.querySelector(BDFDB.dotCN.optionpopoutbutton) && BDFDB.ReactUtils.getValue(instance, "props.message.author.id") != 1) {
let buttonwrap = wrapper.querySelector(BDFDB.dotCN.messagebuttoncontainer);
if (buttonwrap) {
let optionPopoutButton = BDFDB.htmlToElement(`<div tabindex="0" class="${BDFDB.disCN.optionpopoutbutton}" aria-label="More Options" role="button"><svg name="OverflowMenu" class="${BDFDB.disCN.optionpopoutbuttonicon}" aria-hidden="false" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path d="M24 0v24H0V0z"></path><path fill="currentColor" d="M12 16c1.1045695 0 2 .8954305 2 2s-.8954305 2-2 2-2-.8954305-2-2 .8954305-2 2-2zm0-6c1.1045695 0 2 .8954305 2 2s-.8954305 2-2 2-2-.8954305-2-2 .8954305-2 2-2zm0-6c1.1045695 0 2 .8954305 2 2s-.8954305 2-2 2-2-.8954305-2-2 .8954305-2 2-2z"></path></g></svg></div>`);
@ -411,8 +409,8 @@ class GoogleTranslateOption {
if (embeddescriptions.length) for (let embeddescription of embeddescriptions) {
embeddescription.insertBefore(BDFDB.htmlToElement(`<label class="GTO-translation">${translations.shift().trim()}<time class="${BDFDB.disCN.messageedited} GTO-translated">(${this.labels.translated_watermark_text})</time></label>`), embeddescription.firstChild);
}
BDFDB.addChildEventListener(messagediv, "mouseenter", BDFDB.dotCN.messageedited + ".GTO-translated", e => {
BDFDB.createTooltip(`<div>From: ${input.name}</div><div>To: ${output.name}</div>`, e.currentTarget, {html:true, type:"top", selector:"translation-tooltip"});
BDFDB.ListenerUtils.addToChildren(messagediv, "mouseenter", BDFDB.dotCN.messageedited + ".GTO-translated", e => {
BDFDB.TooltipUtils.create(e.currentTarget, `<div>From: ${input.name}</div><div>To: ${output.name}</div>`, {html:true, type:"top", selector:"translation-tooltip"});
});
}
});
@ -436,7 +434,7 @@ class GoogleTranslateOption {
callback(translation, input, output);
};
var translationError = (exceptions, input, output, toast, test) => {
BDFDB.showToast("Could not translate message, you most likely got rate limited by Google for today due to too frequent usage of their Translate-API.", {type:"error",timeout:15000});
BDFDB.NotificationUtils.toast("Could not translate message, you most likely got rate limited by Google for today due to too frequent usage of their Translate-API.", {type:"error",timeout:15000});
finishTranslation(null, exceptions, input, output, toast);
};
var [newtext, exceptions, translate] = this.removeExceptions(text.trim(), type);
@ -444,7 +442,7 @@ class GoogleTranslateOption {
var output = Object.assign({}, this.languages[this.getLanguageChoice("output", type)]);
var translation = "";
if (translate) {
toast = BDFDB.showToast("Translating. Please wait", {timeout:0});
toast = BDFDB.NotificationUtils.toast("Translating. Please wait", {timeout:0});
toast.interval = setInterval(() => {
toast.textContent = toast.textContent.indexOf(".....") > -1 ? "Translating. Please wait" : toast.textContent + ".";
},500);
@ -544,7 +542,7 @@ class GoogleTranslateOption {
}
}
}
else BDFDB.showToast("Invalid binary format. Only use 0s and 1s.", {type:"error"});
else BDFDB.NotificationUtils.toast("Invalid binary format. Only use 0s and 1s.", {type:"error"});
return string;
}
@ -609,11 +607,11 @@ class GoogleTranslateOption {
translatepopout.style.setProperty("left", buttonrects.left + buttonrects.width + "px");
translatepopout.style.setProperty("top", buttonrects.top - buttonrects.height/2 + "px")
BDFDB.addChildEventListener(translatepopout, "click", BDFDB.dotCN.selectcontrol, e => {
BDFDB.ListenerUtils.addToChildren(translatepopout, "click", BDFDB.dotCN.selectcontrol, e => {
let type = BDFDB.getParentEle(BDFDB.dotCN.select, e.currentTarget).getAttribute("type");
let menulanguages = this.defaults.choices[type].direction == "Output" ? BDFDB.filterObject(this.languages, lang => {return lang.id != "auto";}) : this.languages;
let menulanguages = this.defaults.choices[type].direction == "Output" ? BDFDB.ObjectUtils.filter(this.languages, lang => {return lang.id != "auto";}) : this.languages;
let menu = BDFDB.openDropdownMenu(e, this.saveSelectChoice.bind(this), this.createSelectChoice.bind(this), menulanguages, true);
BDFDB.addChildEventListener(menu, "click", BDFDB.dotCN.giffavoritebutton, e => {
BDFDB.ListenerUtils.addToChildren(menu, "click", BDFDB.dotCN.giffavoritebutton, e => {
let choice = e.currentTarget.parentElement.getAttribute("value");
if (choice) {
let favorize = !BDFDB.loadData(choice, this, "favorites")
@ -623,7 +621,7 @@ class GoogleTranslateOption {
}
});
});
BDFDB.addChildEventListener(translatepopout, "click", ".reverse-button", e => {
BDFDB.ListenerUtils.addToChildren(translatepopout, "click", ".reverse-button", e => {
let place = e.currentTarget.getAttribute("type").replace("output","");
let input = this.getLanguageChoice("output", place);
let output = this.getLanguageChoice("input", place);
@ -675,12 +673,12 @@ class GoogleTranslateOption {
}
getGoogleTranslateApiURL (input, output, text) {
input = BDFDB.languages[input] ? input : "auto";
input = BDFDB.LanguageUtils.languages[input] ? input : "auto";
return "https://translate.googleapis.com/translate_a/single?client=gtx&sl=" + input + "&tl=" + output + "&dt=t&ie=UTF-8&oe=UTF-8&q=" + encodeURIComponent(text);
}
getGoogleTranslatePageURL (input, output, text) {
input = BDFDB.languages[input] ? input : "auto";
input = BDFDB.LanguageUtils.languages[input] ? input : "auto";
return "https://translate.google.com/#" + input + "/" + output + "/" + encodeURIComponent(text);
}

View File

@ -63,13 +63,11 @@ class ImageGallery {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
stop () {
@ -78,14 +76,14 @@ class ImageGallery {
this.closemodal = true;
BDFDB.WebModules.forceAllUpdates(this, "ImageModal");
BDFDB.ModuleUtils.forceAllUpdates(this, "ImageModal");
delete this.closemodal;
document.removeEventListener("keydown", document.keydownImageGalleryListener);
document.removeEventListener("keyup", document.keyupImageGalleryListener);
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}

View File

@ -66,13 +66,11 @@ class ImageZoom {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
stop () {
@ -87,7 +85,7 @@ class ImageZoom {
BDFDB.removeEles(".imagezoom-contextmenu", ".imagezoom-separator", ".imagezoom-settings", ".imagezoom-lense", ".imagezoom-backdrop");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -112,7 +110,7 @@ class ImageZoom {
let openContext = e => {
let settings = BDFDB.getAllData(this, "settings");
let items = [];
for (let type in settings) items.push(BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuSliderItem, {
for (let type in settings) items.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuSliderItem, {
label: this.defaults.settings[type].name + ": " + settings[type] + this.defaults.settings[type].unit,
className: `BDFDB-contextMenuSliderItem ${this.name}-contextMenuSliderItem ${this.name}-${type}-contextMenuSliderItem`,
type,
@ -121,7 +119,7 @@ class ImageZoom {
BDFDB.saveData(type, Math.round(BDFDB.mapRange([0, 100], [this.defaults.settings[type].min, this.defaults.settings[type].max], value)), this, "settings");
},
onValueRender: value => {
setImmediate(() => {for (let slider of document.querySelectorAll(BDFDB.dotCN.contextmenuitemslider)) if (BDFDB.getReactValue(slider, "return.memoizedProps.type") == type) {
setImmediate(() => {for (let slider of document.querySelectorAll(BDFDB.dotCN.contextmenuitemslider)) if (BDFDB.ReactUtils.getValue(slider, "return.memoizedProps.type") == type) {
value = Math.round(BDFDB.mapRange([0, 100], [this.defaults.settings[type].min, this.defaults.settings[type].max], value));
let label = slider.querySelector(BDFDB.dotCN.contextmenulabel);
if (label) label.innerText = this.defaults.settings[type].name + ": " + value + this.defaults.settings[type].unit;
@ -131,7 +129,7 @@ class ImageZoom {
}});
}
}));
const itemGroup = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
const itemGroup = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
className: `BDFDB-contextMenuItemGroup ${this.name}-contextMenuItemGroup`,
children: items
});
@ -140,7 +138,7 @@ class ImageZoom {
settingslink.addEventListener("click", openContext);
settingslink.addEventListener("contextmenu", openContext);
img.ImageZoomMouseDownListener = e => {
BDFDB.stopEvent(e);
BDFDB.ListenerUtils.stopEvent(e);
BDFDB.appendLocalStyle("ImageZoomCrossHair", "* {cursor: crosshair !important;}");
let imgrects = BDFDB.getRects(img);

View File

@ -91,10 +91,10 @@ class JoinedAtDate {
BDFDB.initElements(settingspanel, this);
BDFDB.addEventListener(this, settingspanel, "click", ".settings-switch", () => {setImmediate(() => {this.updateSettingsPanel(settingspanel);})});
BDFDB.addEventListener(this, settingspanel, "keyup", BDFDB.dotCN.input, () => {this.saveInputs(settingspanel);});
BDFDB.addEventListener(this, settingspanel, "click", ".toggle-info", e => {this.toggleInfo(e.currentTarget);});
BDFDB.addEventListener(this, settingspanel, "click", BDFDB.dotCN.selectcontrol, e => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".settings-switch", () => {setImmediate(() => {this.updateSettingsPanel(settingspanel);})});
BDFDB.ListenerUtils.add(this, settingspanel, "keyup", BDFDB.dotCN.input, () => {this.saveInputs(settingspanel);});
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".toggle-info", e => {this.toggleInfo(e.currentTarget);});
BDFDB.ListenerUtils.add(this, settingspanel, "click", BDFDB.dotCN.selectcontrol, e => {
BDFDB.openDropdownMenu(e, this.saveSelectChoice.bind(this), this.createSelectChoice.bind(this), this.languages);
});
return settingspanel;
@ -124,15 +124,13 @@ class JoinedAtDate {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
this.languages = Object.assign({"own":{name:"Own",id:"own",integrated:false,dic:false}},BDFDB.languages);
this.languages = Object.assign({"own":{name:"Own",id:"own",integrated:false,dic:false}},BDFDB.LanguageUtils.languages);
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
@ -141,7 +139,7 @@ class JoinedAtDate {
this.stopping = true;
BDFDB.removeEles(".joinedAtDate");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -202,7 +200,7 @@ class JoinedAtDate {
let addTimestamp = (timestamp) => {
if (document.contains(container)) {
BDFDB.removeEles(container.querySelectorAll(".joinedAtDate"));
if (BDFDB.isObject(container.JoinedAtDateObserver)) container.JoinedAtDateObserver.disconnect();
if (BDFDB.ObjectUtils.is(container.JoinedAtDateObserver)) container.JoinedAtDateObserver.disconnect();
let choice = BDFDB.getData("joinedAtDateLang", this, "choices");
let nametag = container.querySelector(BDFDB.dotCN.nametag);
container.insertBefore(BDFDB.htmlToElement(`<div class="joinedAtDate BDFDB-textscrollwrapper ${BDFDB.disCN.textrow}" style="max-width: ${BDFDB.getRects(BDFDB.getParentEle(popout ? BDFDB.dotCN.userpopoutheader : BDFDB.dotCN.userprofileheaderinfo, container)).width - 20}px !important; order: 7 !important;"><div class="BDFDB-textscroll">${this.labels.joinedat_text.replace("{{time}}", this.getTimestamp(this.languages[choice].id, timestamp))}</div></div>`), nametag ? nametag.nextSibling : null);

View File

@ -92,10 +92,10 @@ class LastMessageDate {
BDFDB.initElements(settingspanel, this);
BDFDB.addEventListener(this, settingspanel, "click", ".settings-switch", () => {setImmediate(() => {this.updateSettingsPanel(settingspanel);})});
BDFDB.addEventListener(this, settingspanel, "keyup", BDFDB.dotCN.input, () => {this.saveInputs(settingspanel);});
BDFDB.addEventListener(this, settingspanel, "click", ".toggle-info", e => {this.toggleInfo(e.currentTarget);});
BDFDB.addEventListener(this, settingspanel, "click", BDFDB.dotCN.selectcontrol, e => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".settings-switch", () => {setImmediate(() => {this.updateSettingsPanel(settingspanel);})});
BDFDB.ListenerUtils.add(this, settingspanel, "keyup", BDFDB.dotCN.input, () => {this.saveInputs(settingspanel);});
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".toggle-info", e => {this.toggleInfo(e.currentTarget);});
BDFDB.ListenerUtils.add(this, settingspanel, "click", BDFDB.dotCN.selectcontrol, e => {
BDFDB.openDropdownMenu(e, this.saveSelectChoice.bind(this), this.createSelectChoice.bind(this), this.languages);
});
return settingspanel;
@ -125,21 +125,19 @@ class LastMessageDate {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
this.languages = Object.assign({"own":{name:"Own",id:"own",integrated:false,dic:false}}, BDFDB.languages);
this.languages = Object.assign({"own":{name:"Own",id:"own",integrated:false,dic:false}}, BDFDB.LanguageUtils.languages);
BDFDB.WebModules.patch(BDFDB.LibraryModules.MessageUtils, "receiveMessage", this, {after: e => {
BDFDB.ModuleUtils.patch(this, BDFDB.LibraryModules.MessageUtils, "receiveMessage", {after: e => {
let message = e.methodArguments[1];
let guildid = message.guild_id || message.channel_id;
if (guildid && this.loadedusers[guildid] && this.loadedusers[guildid][message.author.id]) this.loadedusers[guildid][message.author.id] = new Date(message.timestamp);
}});
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
@ -148,7 +146,7 @@ class LastMessageDate {
this.stopping = true;
BDFDB.removeEles(".lastMessageDate");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -211,7 +209,7 @@ class LastMessageDate {
let addTimestamp = (timestamp) => {
if (document.contains(container)) {
BDFDB.removeEles(container.querySelectorAll(".lastMessageDate"));
if (BDFDB.isObject(container.LastMessageDateObserver)) container.LastMessageDateObserver.disconnect();
if (BDFDB.ObjectUtils.is(container.LastMessageDateObserver)) container.LastMessageDateObserver.disconnect();
let choice = BDFDB.getData("lastMessageDateLang", this, "choices");
let nametag = container.querySelector(BDFDB.dotCN.nametag);
container.insertBefore(BDFDB.htmlToElement(`<div class="lastMessageDate BDFDB-textscrollwrapper ${BDFDB.disCN.textrow}" style="max-width: ${BDFDB.getRects(BDFDB.getParentEle(popout ? BDFDB.dotCN.userpopoutheader : BDFDB.dotCN.userprofileheaderinfo, container)).width - 20}px !important; order: 6 !important;"><div class="BDFDB-textscroll">${this.labels.lastmessage_text.replace("{{time}}", timestamp == "never" ? "---" : this.getTimestamp(this.languages[choice].id, timestamp))}</div></div>`), nametag ? nametag.nextSibling : null);

View File

@ -64,7 +64,7 @@ class MessageUtilities {
if (this.defaults.settings[key].description) settingshtml += `<div class="${BDFDB.disCNS.flex + BDFDB.disCNS.horizontal + BDFDB.disCNS.justifystart + BDFDB.disCNS.aligncenter + BDFDB.disCNS.nowrap + BDFDB.disCN.marginbottom8}" style="flex: 1 1 auto;"><h3 class="${BDFDB.disCNS.titledefault + BDFDB.disCNS.marginreset + BDFDB.disCNS.weightmedium + BDFDB.disCNS.titlesize16 + BDFDB.disCNS.height24 + BDFDB.disCN.flexchild}" style="flex: 1 1 auto;">${this.defaults.settings[key].description}</h3><div class="${BDFDB.disCNS.flexchild + BDFDB.disCNS.switchenabled + BDFDB.disCNS.switch + BDFDB.disCNS.switchvalue + BDFDB.disCNS.switchsizedefault + BDFDB.disCNS.switchsize + BDFDB.disCN.switchthemedefault}" style="flex: 0 0 auto;"><input type="checkbox" value="settings ${key}" class="${BDFDB.disCNS.switchinnerenabled + BDFDB.disCN.switchinner} settings-switch"${settings[key] ? " checked" : ""}></div></div>`;
}
for (let action in bindings) {
if (!this.defaults.bindings[action].plugin || BDFDB.isPluginEnabled(this.defaults.bindings[action].plugin)) {
if (!this.defaults.bindings[action].plugin || BDFDB.BdUtils.isPluginEnabled(this.defaults.bindings[action].plugin)) {
settingshtml += `<div class="${BDFDB.disCNS.divider + BDFDB.disCN.marginbottom4}"></div>`;
settingshtml += `<div class="${action}-key-settings"><div class="${BDFDB.disCNS.flex + BDFDB.disCNS.horizontal + BDFDB.disCNS.justifystart + BDFDB.disCNS.aligncenter + BDFDB.disCNS.nowrap + BDFDB.disCN.marginbottom8}" style="flex: 1 1 auto;"><h3 class="${BDFDB.disCNS.titledefault + BDFDB.disCNS.marginreset + BDFDB.disCNS.weightmedium + BDFDB.disCNS.titlesize16 + BDFDB.disCNS.height24 + BDFDB.disCN.flexchild}" style="flex: 1 1 auto;">${this.defaults.bindings[action].name}:</h3>${toasts[action] != undefined ? `<h5 class="${BDFDB.disCNS.flexchild + BDFDB.disCNS.h5 + BDFDB.disCNS.title + BDFDB.disCNS.titlesize12 + BDFDB.disCNS.height16 + BDFDB.disCNS.weightsemibold + BDFDB.disCNS.h5defaultmargin}" style="flex: 0 0 auto;">Toast:</h5><div class="${BDFDB.disCNS.flexchild + BDFDB.disCNS.switchenabled + BDFDB.disCNS.switch + BDFDB.disCNS.switchvalue + BDFDB.disCNS.switchsizedefault + BDFDB.disCNS.switchsize + BDFDB.disCN.switchthemedefault}" style="flex: 0 0 auto;"><input type="checkbox" value="toasts ${action}" class="${BDFDB.disCNS.switchinnerenabled + BDFDB.disCN.switchinner} settings-switch"${toasts[action] ? " checked" : ""}></div>` : ''}<h5 class="${BDFDB.disCNS.flexchild + BDFDB.disCNS.h5 + BDFDB.disCNS.title + BDFDB.disCNS.titlesize12 + BDFDB.disCNS.height16 + BDFDB.disCNS.weightsemibold + BDFDB.disCNS.h5defaultmargin}" style="flex: 0 0 auto;">Enabled:</h5><div class="${BDFDB.disCNS.flexchild + BDFDB.disCNS.switchenabled + BDFDB.disCNS.switch + BDFDB.disCNS.switchvalue + BDFDB.disCNS.switchsizedefault + BDFDB.disCNS.switchsize + BDFDB.disCN.switchthemedefault}" style="flex: 0 0 auto;"><input type="checkbox" value="settings ${action}" class="${BDFDB.disCNS.switchinnerenabled + BDFDB.disCN.switchinner} settings-switch"${settings[action] ? " checked" : ""}></div></div><div class="${BDFDB.disCNS.flex + BDFDB.disCNS.horizontal + BDFDB.disCNS.justifystart + BDFDB.disCNS.aligncenter + BDFDB.disCNS.nowrap + BDFDB.disCN.marginbottom8}" style="flex: 1 1 auto;">`;
settingshtml += `<div class="${BDFDB.disCN.flexchild}" style="flex: 1 1 20%;"><h5 class="${BDFDB.disCNS.h5 + BDFDB.disCNS.title + BDFDB.disCNS.titlesize12 + BDFDB.disCNS.height16 + BDFDB.disCNS.weightsemibold + BDFDB.disCNS.h5defaultmargin + BDFDB.disCN.marginbottom4}">Click:</h5>${BDFDB.createSelectMenu(this.createSelectChoice(bindings[action].click), bindings[action].click, action + " click")}</div>`;
@ -81,10 +81,10 @@ class MessageUtilities {
BDFDB.initElements(settingspanel, this);
BDFDB.addEventListener(this, settingspanel, "click", BDFDB.dotCN.hotkeycontainer, e => {this.startRecording(settingspanel, e);})
BDFDB.addEventListener(this, settingspanel, "click", ".reset-recorder", e => {this.resetRecorder(settingspanel, e);})
BDFDB.addEventListener(this, settingspanel, "click", ".reset-button", () => {this.resetAll(settingspanel);});
BDFDB.addEventListener(this, settingspanel, "click", BDFDB.dotCN.selectcontrol, e => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", BDFDB.dotCN.hotkeycontainer, e => {this.startRecording(settingspanel, e);})
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".reset-recorder", e => {this.resetRecorder(settingspanel, e);})
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".reset-button", () => {this.resetAll(settingspanel);});
BDFDB.ListenerUtils.add(this, settingspanel, "click", BDFDB.dotCN.selectcontrol, e => {
BDFDB.openDropdownMenu(e, this.saveSelectChoice.bind(this), this.createSelectChoice.bind(this), this.clickMap);
});
@ -115,28 +115,26 @@ class MessageUtilities {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.addEventListener(this, document, "click", BDFDB.dotCN.messagegroup + "> [aria-disabled]," + BDFDB.dotCN.messagegroup + "> * > [aria-disabled]," + BDFDB.dotCN.messagesystem, e => {
BDFDB.ListenerUtils.add(this, document, "click", BDFDB.dotCN.messagegroup + "> [aria-disabled]," + BDFDB.dotCN.messagegroup + "> * > [aria-disabled]," + BDFDB.dotCN.messagesystem, e => {
this.onClick(e, 0, "onSglClick");
})
BDFDB.addEventListener(this, document, "dblclick", BDFDB.dotCN.messagegroup + "> [aria-disabled]," + BDFDB.dotCN.messagegroup + "> * > [aria-disabled]," + BDFDB.dotCN.messagesystem, e => {
BDFDB.ListenerUtils.add(this, document, "dblclick", BDFDB.dotCN.messagegroup + "> [aria-disabled]," + BDFDB.dotCN.messagegroup + "> * > [aria-disabled]," + BDFDB.dotCN.messagesystem, e => {
this.onClick(e, 1, "onDblClick");
});
BDFDB.addEventListener(this, document, "keydown", BDFDB.dotCN.textareawrapchat, e => {
BDFDB.ListenerUtils.add(this, document, "keydown", BDFDB.dotCN.textareawrapchat, e => {
this.onKeyDown(e, e.which, "onKeyDown");
});
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
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;
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -265,7 +263,7 @@ class MessageUtilities {
if (!this.isEventFired(name)) {
this.fireEvent(name);
let settings = BDFDB.getAllData(this, "settings");
let bindings = BDFDB.filterObject(BDFDB.getAllData(this, "bindings"), action => {return settings[action]}, true);
let bindings = BDFDB.ObjectUtils.filter(BDFDB.getAllData(this, "bindings"), action => {return settings[action]}, true);
let priorityaction = null;
for (let action in bindings) {
let binding = bindings[action];
@ -275,7 +273,7 @@ class MessageUtilities {
if (priorityaction) {
let {messagediv, pos, message} = this.getMessageData(e.currentTarget);
if (messagediv && pos > -1 && message) {
BDFDB.stopEvent(e);
BDFDB.ListenerUtils.stopEvent(e);
clearTimeout(this.clickTimeout);
if (!this.hasDoubleClickOverwrite(bindings, bindings[priorityaction])) {
this.defaults.bindings[priorityaction].func.bind(this)({messagediv, pos, message}, priorityaction);
@ -298,7 +296,7 @@ class MessageUtilities {
hasDoubleClickOverwrite (bindings, binding) {
if (binding.click == 1) return false;
let dblbindings = BDFDB.filterObject(bindings, bndg => {return bndg.click == 1});
let dblbindings = BDFDB.ObjectUtils.filter(bindings, bndg => {return bndg.click == 1});
for (let dblaction in dblbindings) {
let dblbndg = dblbindings[dblaction];
let overwrite = true;
@ -313,17 +311,17 @@ class MessageUtilities {
if (deletelink) deletelink.click();
else {
let channel = BDFDB.LibraryModules.ChannelStore.getChannel(message.channel_id);
if ((channel && BDFDB.isUserAllowedTo("MANAGE_MESSAGES")) || message.author.id == BDFDB.myData.id && message.type != 1 && message.type != 2 && message.type != 3) {
if ((channel && BDFDB.UserUtils.can("MANAGE_MESSAGES")) || message.author.id == BDFDB.UserUtils.me.id && message.type != 1 && message.type != 2 && message.type != 3) {
BDFDB.LibraryModules.MessageUtils.deleteMessage(message.channel_id, message.id, message.state != "SENT");
if (BDFDB.getData(action, this, "toasts")) BDFDB.showToast("Message has been deleted.", {type:"success"});
if (BDFDB.getData(action, this, "toasts")) BDFDB.NotificationUtils.toast("Message has been deleted.", {type:"success"});
}
}
}
doEdit ({messagediv, pos, message}, action) {
if (message.author.id == BDFDB.myData.id && !messagediv.querySelector("textarea")) {
if (message.author.id == BDFDB.UserUtils.me.id && !messagediv.querySelector("textarea")) {
BDFDB.LibraryModules.MessageUtils.startEditMessage(message.channel_id, message.id, message.content);
if (BDFDB.getData(action, this, "toasts")) BDFDB.showToast("Started editing.", {type:"success"});
if (BDFDB.getData(action, this, "toasts")) BDFDB.NotificationUtils.toast("Started editing.", {type:"success"});
}
}
@ -331,21 +329,21 @@ class MessageUtilities {
let reactButton = messagediv.querySelector(BDFDB.dotCN.emojipickerbutton);
if (reactButton) {
reactButton.click();
if (BDFDB.getData(action, this, "toasts")) BDFDB.showToast("Reaction popout has been opened.", {type:"success"});
if (BDFDB.getData(action, this, "toasts")) BDFDB.NotificationUtils.toast("Reaction popout has been opened.", {type:"success"});
}
}
doPinUnPin ({messagediv, pos, message}, action) {
if (message.state == "SENT") {
let channel = BDFDB.LibraryModules.ChannelStore.getChannel(message.channel_id);
if (channel && (channel.type == 1 || channel.type == 3 || BDFDB.isUserAllowedTo("MANAGE_MESSAGES")) && message.type == 0) {
if (channel && (channel.type == 1 || channel.type == 3 || BDFDB.UserUtils.can("MANAGE_MESSAGES")) && message.type == 0) {
if (message.pinned) {
BDFDB.LibraryModules.MessagePinUtils.unpinMessage(channel, message.id);
if (BDFDB.getData(action, this, "toasts")) BDFDB.showToast("Message has been unpinned.", {type:"error"});
if (BDFDB.getData(action, this, "toasts")) BDFDB.NotificationUtils.toast("Message has been unpinned.", {type:"error"});
}
else {
BDFDB.LibraryModules.MessagePinUtils.pinMessage(channel, message.id);
if (BDFDB.getData(action, this, "toasts")) BDFDB.showToast("Message has been pinned.", {type:"success"});
if (BDFDB.getData(action, this, "toasts")) BDFDB.NotificationUtils.toast("Message has been pinned.", {type:"success"});
}
}
}
@ -354,7 +352,7 @@ class MessageUtilities {
doCopyRaw ({messagediv, pos, message}, action) {
if (message.content) {
BDFDB.LibraryRequires.electron.clipboard.write({text:message.content});
if (BDFDB.getData(action, this, "toasts")) BDFDB.showToast("Raw message content has been copied.", {type:"success"});
if (BDFDB.getData(action, this, "toasts")) BDFDB.NotificationUtils.toast("Raw message content has been copied.", {type:"success"});
}
}
@ -362,41 +360,41 @@ class MessageUtilities {
let channel = BDFDB.LibraryModules.ChannelStore.getChannel(message.channel_id);
if (channel) {
BDFDB.LibraryRequires.electron.clipboard.write({text:`https://discordapp.com/channels/${channel.guild_id}/${channel.id}/${message.id}`});
if (BDFDB.getData(action, this, "toasts")) BDFDB.showToast("Messagelink has been copied.", {type:"success"});
if (BDFDB.getData(action, this, "toasts")) BDFDB.NotificationUtils.toast("Messagelink has been copied.", {type:"success"});
}
}
doNote ({messagediv, pos, message}, action) {
if (BDFDB.isPluginEnabled(this.defaults.bindings.__Note_Message.plugin)) {
if (BDFDB.BdUtils.isPluginEnabled(this.defaults.bindings.__Note_Message.plugin)) {
let channel = BDFDB.LibraryModules.ChannelStore.getChannel(message.channel_id);
if (channel) BDFDB.getPlugin(this.defaults.bindings.__Note_Message.plugin).addMessageToNotes(message, messagediv, channel);
if (channel) BDFDB.BdUtils.getPlugin(this.defaults.bindings.__Note_Message.plugin).addMessageToNotes(message, messagediv, channel);
}
}
doTranslate ({messagediv, pos, message}, action) {
if (BDFDB.isPluginEnabled(this.defaults.bindings.__Translate_Message.plugin)) {
if (BDFDB.BdUtils.isPluginEnabled(this.defaults.bindings.__Translate_Message.plugin)) {
let channel = BDFDB.LibraryModules.ChannelStore.getChannel(message.channel_id);
if (channel) BDFDB.getPlugin(this.defaults.bindings.__Translate_Message.plugin).translateMessage(message, messagediv, channel);
if (channel) BDFDB.BdUtils.getPlugin(this.defaults.bindings.__Translate_Message.plugin).translateMessage(message, messagediv, channel);
}
}
doQuote ({messagediv, pos, message}, action) {
if (BDFDB.isPluginEnabled(this.defaults.bindings.__Quote_Message.plugin)) {
if (BDFDB.BdUtils.isPluginEnabled(this.defaults.bindings.__Quote_Message.plugin)) {
let quoteButton = messagediv.querySelector(".btn-quote");
if (quoteButton) quoteButton.click();
}
}
doCitate ({messagediv, pos, message}, action) {
if (BDFDB.isPluginEnabled(this.defaults.bindings.__Citate_Message.plugin)) {
if (BDFDB.BdUtils.isPluginEnabled(this.defaults.bindings.__Citate_Message.plugin)) {
let citarButton = messagediv.parentElement.querySelector(".citar-btn");
if (citarButton) citarButton.click();
}
}
doReveal ({messagediv, pos, message}, action) {
if (BDFDB.isPluginEnabled(this.defaults.bindings.__Reveal_Spoilers.plugin)) {
BDFDB.getPlugin(this.defaults.bindings.__Reveal_Spoilers.plugin).revealAllSpoilers(messagediv);
if (BDFDB.BdUtils.isPluginEnabled(this.defaults.bindings.__Reveal_Spoilers.plugin)) {
BDFDB.BdUtils.getPlugin(this.defaults.bindings.__Reveal_Spoilers.plugin).revealAllSpoilers(messagediv);
}
}
@ -427,7 +425,7 @@ class MessageUtilities {
getMessageData (target) {
let messagediv = BDFDB.getParentEle(BDFDB.dotCN.messagegroup + "> [aria-disabled]", target) || BDFDB.getParentEle(BDFDB.dotCN.messagegroup + "> * > [aria-disabled]", target) || BDFDB.getParentEle(BDFDB.dotCN.messagesystem, target);
let pos = messagediv ? Array.from(messagediv.parentElement.childNodes).filter(n => n.nodeType != Node.TEXT_NODE).indexOf(messagediv) : -1;
let instance = BDFDB.getReactInstance(messagediv);
let instance = BDFDB.ReactUtils.getInstance(messagediv);
let message = instance ? BDFDB.getKeyInformation({instance, key:"message", up:true}) : null;
return {messagediv, pos, message};
}
@ -441,6 +439,6 @@ class MessageUtilities {
}
cancelEvent (name) {
setImmediate(() => {BDFDB.removeFromArray(this.firedEvents, name)});
setImmediate(() => {BDFDB.ArrayUtils.remove(this.firedEvents, name)});
}
}

View File

@ -47,7 +47,7 @@ class MoveablePopups {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
var observer = null;
@ -64,7 +64,7 @@ class MoveablePopups {
}
);
});
BDFDB.addObserver(this, BDFDB.dotCN.popouts, {name:"popoutObserver",instance:observer}, {childList: true});
BDFDB.ObserverUtils.connect(this, BDFDB.dotCN.popouts, {name:"popoutObserver",instance:observer}, {childList: true});
observer = new MutationObserver((changes, _) => {
changes.forEach(
@ -82,11 +82,9 @@ class MoveablePopups {
}
);
});
BDFDB.addObserver(this, BDFDB.React.findDOMNode(BDFDB.getOwnerInstance({node:document.querySelector(BDFDB.dotCN.app), name:"Modals"})), {name:"modalObserver",instance:observer}, {childList: true});
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ObserverUtils.connect(this, BDFDB.ReactUtils.findDOMNode(BDFDB.getOwnerInstance({node:document.querySelector(BDFDB.dotCN.app), name:"Modals"})), {name:"modalObserver",instance:observer}, {childList: true});
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
@ -94,7 +92,7 @@ class MoveablePopups {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
this.stopping = true;
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -104,7 +102,7 @@ class MoveablePopups {
makeMoveable (div) {
div.removeEventListener("click", div.clickMovablePopups);
div.removeEventListener("mousedown", div.mousedownMovablePopups);
div.clickMovablePopups = e => {if (this.dragging) BDFDB.stopEvent(e);};
div.clickMovablePopups = e => {if (this.dragging) BDFDB.ListenerUtils.stopEvent(e);};
div.mousedownMovablePopups = e => {
if (!e.ctrlKey) return;
div.style.setProperty("position", "fixed", "important");

View File

@ -144,9 +144,9 @@ class NotificationSounds {
BDFDB.initElements(settingspanel, this);
BDFDB.addEventListener(this, settingspanel, "click", ".btn-addsong", e => {this.saveAudio(settingspanel);});
BDFDB.addEventListener(this, settingspanel, "keyup", ".songInput", e => {if (e.which == 13) this.saveAudio(settingspanel);});
BDFDB.addEventListener(this, settingspanel, "click", ".reset-button", () => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".btn-addsong", e => {this.saveAudio(settingspanel);});
BDFDB.ListenerUtils.add(this, settingspanel, "keyup", ".songInput", e => {if (e.which == 13) this.saveAudio(settingspanel);});
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".reset-button", () => {
BDFDB.openConfirmModal(this, "Are you sure you want to delete all added songs?", () => {
BDFDB.removeAllData(this, "choices");
BDFDB.removeAllData(this, "audios");
@ -167,21 +167,21 @@ class NotificationSounds {
});
});
});
BDFDB.addEventListener(this, settingspanel, "click", ".mutednd-checkbox", e => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".mutednd-checkbox", e => {
var type = e.currentTarget.parentElement.getAttribute("type");
this.choices[type].mute = e.currentTarget.checked;
this.saveChoice(type, false);
});
BDFDB.addEventListener(this, settingspanel, "click", ".mutefocus-checkbox", e => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".mutefocus-checkbox", e => {
var type = e.currentTarget.parentElement.getAttribute("type");
this.choices[type].focus = e.currentTarget.checked;
this.saveChoice(type, false);
});
BDFDB.addEventListener(this, settingspanel, "click", "#input-unimplemented", e => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", "#input-unimplemented", e => {
BDFDB.toggleEles(settingspanel.querySelectorAll(".unimplemented"), e.currentTarget.checked);
});
BDFDB.addEventListener(this, settingspanel, "mousedown", BDFDB.dotCN.slidergrabber, e => {this.dragSlider(settingspanel,e);});
BDFDB.addEventListener(this, settingspanel, "click", BDFDB.dotCN.selectcontrol, e => {
BDFDB.ListenerUtils.add(this, settingspanel, "mousedown", BDFDB.dotCN.slidergrabber, e => {this.dragSlider(settingspanel,e);});
BDFDB.ListenerUtils.add(this, settingspanel, "click", BDFDB.dotCN.selectcontrol, e => {
let type = BDFDB.getParentEle(BDFDB.dotCN.select, e.currentTarget).getAttribute("type").split(" ");
let songSelect = settingspanel.querySelector(`${BDFDB.dotCN.select}[type="${type[0]} song"]`);
let categorySelect = settingspanel.querySelector(`${BDFDB.dotCN.select}[type="${type[0]} category"]`);
@ -216,18 +216,18 @@ class NotificationSounds {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.WebModules.patch(BDFDB.LibraryModules.MessageUtils, "receiveMessage", this, {before: e => {
BDFDB.ModuleUtils.patch(this, BDFDB.LibraryModules.MessageUtils, "receiveMessage", {before: e => {
let message = e.methodArguments[1];
let guildid = message.guild_id ? message.guild_id : null;
if (!BDFDB.LibraryModules.MutedUtils.isGuildOrCategoryOrChannelMuted(guildid, message.channel_id) && message.author.id != BDFDB.myData.id) {
if (!BDFDB.LibraryModules.MutedUtils.isGuildOrCategoryOrChannelMuted(guildid, message.channel_id) && message.author.id != BDFDB.UserUtils.me.id) {
if (!guildid && !(this.choices.dm.focus && document.hasFocus() && BDFDB.LibraryModules.LastChannelStore.getChannelId() == message.channel_id)) {
this.fireEvent("dm");
this.playAudio("dm");
}
else if (message.mentions && !(this.choices.mentioned.focus && document.hasFocus() && BDFDB.LibraryModules.LastChannelStore.getChannelId() == message.channel_id)) {
for (let mention of message.mentions) if (mention.id == BDFDB.myData.id) {
for (let mention of message.mentions) if (mention.id == BDFDB.UserUtils.me.id) {
this.fireEvent("mentioned");
this.playAudio("mentioned");
break;
@ -236,7 +236,7 @@ class NotificationSounds {
}
}});
BDFDB.WebModules.patch(BDFDB.LibraryModules.SoundUtils, "playSound", this, {instead: e => {
BDFDB.ModuleUtils.patch(this, BDFDB.LibraryModules.SoundUtils, "playSound", {instead: e => {
let type = e.methodArguments[0];
if (this.choices[type]) setImmediate(() => {
if (type == "message1") {
@ -248,7 +248,7 @@ class NotificationSounds {
});
else e.callOriginalMethod();
}});
BDFDB.WebModules.patch(BDFDB.LibraryModules.SoundUtils, "createSound", this, {after: e => {
BDFDB.ModuleUtils.patch(this, BDFDB.LibraryModules.SoundUtils, "createSound", {after: e => {
let type = e.methodArguments[0];
let audio = new Audio();
audio.src = this.choices[type].src;
@ -269,11 +269,9 @@ class NotificationSounds {
this.loadAudios();
this.loadChoices();
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
@ -281,7 +279,7 @@ class NotificationSounds {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
this.stopping = true;
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
this.settingsaudio.pause();
}
}
@ -309,7 +307,7 @@ class NotificationSounds {
var selectMenu = this.createDropdownMenu(type, option, category, song);
selectWrap.appendChild(selectMenu);
BDFDB.addChildEventListener(selectMenu, "mousedown", BDFDB.dotCN.selectoption, e2 => {
BDFDB.ListenerUtils.addToChildren(selectMenu, "mousedown", BDFDB.dotCN.selectoption, e2 => {
var selection = e2.currentTarget.textContent;
selectWrap.setAttribute("value", selection);
selectWrap.querySelector(BDFDB.dotCN.title).innerText = selection;
@ -404,7 +402,7 @@ class NotificationSounds {
loadAudios () {
this.audios = BDFDB.loadAllData(this, "audios");
if (BDFDB.isObjectEmpty(this.audios)) this.audios = this.defaults;
if (BDFDB.ObjectUtils.isEmpty(this.audios)) this.audios = this.defaults;
BDFDB.saveAllData(this.audios, this, "audios");
}
@ -428,13 +426,13 @@ class NotificationSounds {
return;
}
}
BDFDB.showToast("Use a valid direct link to a video or audio source. They usually end on something like .mp3, .mp4 or .wav.", {type:"danger"});
BDFDB.NotificationUtils.toast("Use a valid direct link to a video or audio source. They usually end on something like .mp3, .mp4 or .wav.", {type:"danger"});
});
}
else {
BDFDB.LibraryRequires.fs.readFile(url, (error, response) => {
if (error) {
BDFDB.showToast("Could not fetch file. Please make sure the file exists.", {type:"danger"});
BDFDB.NotificationUtils.toast("Could not fetch file. Please make sure the file exists.", {type:"danger"});
}
else {
url = `data:audio/mpeg;base64,${response.toString("base64")}`;
@ -444,7 +442,7 @@ class NotificationSounds {
}
successSavedAudio = () => {
BDFDB.showToast(`Song ${song} was added to category ${category}.`, {type:"success"});
BDFDB.NotificationUtils.toast(`Song ${song} was added to category ${category}.`, {type:"success"});
if (!this.audios[category]) this.audios[category] = {};
this.audios[category][song] = url;
BDFDB.saveAllData(this.audios, this, "audios");
@ -453,9 +451,7 @@ class NotificationSounds {
});
};
}
else {
BDFDB.showToast("Fill out all fields to add a new song.", {type:"danger"});
}
else BDFDB.NotificationUtils.toast("Fill out all fields to add a new song.", {type:"danger"});
}
loadChoices () {
@ -493,7 +489,7 @@ class NotificationSounds {
}
dontPlayAudio (type) {
let status = BDFDB.getUserStatus();
let status = BDFDB.UserUtils.getStatus();
return this.choices[type].mute && (status == "dnd" || status == "streaming");
}
@ -512,10 +508,10 @@ class NotificationSounds {
audio.play();
};
let stop = () => {audio.pause();}
BDFDB.WebModules.patch(instance, "startRinging", this, {instead: play});
BDFDB.WebModules.patch(instance, "stopRinging", this, {instead: stop});
BDFDB.WebModules.patch(instance._reactInternalFiber.type.prototype, "startRinging", this, {instead: play});
BDFDB.WebModules.patch(instance._reactInternalFiber.type.prototype, "stopRinging", this, {instead: stop});
BDFDB.ModuleUtils.patch(this, instance, "startRinging", {instead: play});
BDFDB.ModuleUtils.patch(this, instance, "stopRinging", {instead: stop});
BDFDB.ModuleUtils.patch(this, instance._reactInternalFiber.type.prototype, "startRinging", {instead: play});
BDFDB.ModuleUtils.patch(this, instance._reactInternalFiber.type.prototype, "stopRinging", {instead: stop});
}
processStandardSidebarView (instance, wrapper, returnvalue) {

View File

@ -108,13 +108,13 @@ class OldTitleBar {
BDFDB.initElements(settingspanel, this);
BDFDB.addEventListener(this, settingspanel, "click", ".nativetitlebar-switch", e => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".nativetitlebar-switch", e => {
if (this.patchMainScreen(e.currentTarget.checked)) {
this.patched = !this.patched;
let notifybar = document.querySelector("#OldTitleBarNotifyBar");
if (notifybar) notifybar.querySelector(BDFDB.dotCN.noticedismiss).click();
if (this.patched) {
notifybar = BDFDB.createNotificationsBar("Changed nativebar settings, relaunch to see changes:", {type:"danger",btn:"Relaunch",id:"OldTitleBarNotifyBar"});
notifybar = BDFDB.NotificationUtils.notice("Changed nativebar settings, relaunch to see changes:", {type:"danger",btn:"Relaunch",id:"OldTitleBarNotifyBar"});
notifybar.querySelector(BDFDB.dotCN.noticebutton).addEventListener("click", () => {
BDFDB.LibraryRequires.electron.remote.app.relaunch();
BDFDB.LibraryRequires.electron.remote.app.quit();
@ -150,9 +150,9 @@ class OldTitleBar {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.addEventListener(this, window, "resize", e => {
BDFDB.ListenerUtils.add(this, window, "resize", e => {
this.changeMaximizeButtons();
});
@ -162,11 +162,9 @@ class OldTitleBar {
BDFDB.addClass([document.body,document.querySelector(BDFDB.dotCN.titlebar)], "hidden-by-OTB");
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
@ -178,7 +176,7 @@ class OldTitleBar {
BDFDB.removeClasses("hidden-by-OTB", "settingsTitlebarOTB-added");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -239,7 +237,7 @@ class OldTitleBar {
var reloadbuttonicon = reloadbutton.querySelector(BDFDB.dotCN.channelheadericon);
reloadbuttonicon.addEventListener("click", () => {this.window.reload();});
reloadbuttonicon.addEventListener("mouseenter", e => {
BDFDB.createTooltip("Reload", reloadbuttonicon, {type:"bottom",selector:"reload-button-tooltip"});
BDFDB.TooltipUtils.create(reloadbuttonicon, "Reload", {type:"bottom",selector:"reload-button-tooltip"});
});
}
bar.appendChild(BDFDB.htmlToElement(this.dividerMarkup));

View File

@ -65,7 +65,7 @@ class OwnerTag {
BDFDB.initElements(settingspanel, this);
BDFDB.addEventListener(this, settingspanel, "keyup", BDFDB.dotCN.input, () => {this.saveInputs(settingspanel);});
BDFDB.ListenerUtils.add(this, settingspanel, "keyup", BDFDB.dotCN.input, () => {this.saveInputs(settingspanel);});
return settingspanel;
}
@ -94,15 +94,13 @@ class OwnerTag {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.WebModules.forceAllUpdates(this);
BDFDB.ModuleUtils.forceAllUpdates(this);
this.addHideCSS();
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
stop () {
@ -113,7 +111,7 @@ class OwnerTag {
BDFDB.removeLocalStyle(this.name + "HideCrown");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -142,7 +140,7 @@ class OwnerTag {
}
processMessageUsername (instance, wrapper, returnvalue, methodnames) {
let message = BDFDB.getReactValue(instance, "props.message");
let message = BDFDB.ReactUtils.getValue(instance, "props.message");
if (message && BDFDB.getData("addInChatWindow", this, "settings")) {
let username = wrapper.querySelector(BDFDB.dotCN.messageusername);
if (username) {
@ -156,7 +154,7 @@ class OwnerTag {
if (this.SettingsUpdated) {
delete this.SettingsUpdated;
BDFDB.removeEles(".owner-tag, .owner-tag-crown");
BDFDB.WebModules.forceAllUpdates(this);
BDFDB.ModuleUtils.forceAllUpdates(this);
this.addHideCSS();
}
}
@ -169,13 +167,13 @@ class OwnerTag {
let guild = BDFDB.LibraryModules.GuildStore.getGuild(channel.guild_id);
let settings = BDFDB.getAllData(this, "settings");
let isowner = channel.ownerId == info.id || guild && guild.ownerId == info.id;
if (!(isowner || (settings.addForAdmins && BDFDB.isUserAllowedTo("ADMINISTRATOR", info.id)))) return;
if (!(isowner || (settings.addForAdmins && BDFDB.UserUtils.can("ADMINISTRATOR", info.id)))) return;
let member = settings.useRoleColor ? (BDFDB.LibraryModules.MemberStore.getMember(channel.guild_id, info.id) || {}) : {};
if (!settings.useCrown) {
let tag = BDFDB.htmlToElement(`<span class="owner-tag ${isowner ? "owner-tag-owner" : "owner-tag-admin"} owner-${type}-tag ${(settings.useRoleColor ? "owner-tag-rolecolor " : "") + BDFDB.disCN.bottag + (selector ? (" " + selector) : "")}" style="order: 10 !important;">${BDFDB.getData(isowner ? "ownTagName" : "ownAdminTagName", this, "inputs")}</span>`);
let invert = container && container.firstElementChild && !(BDFDB.containsClass(container.firstElementChild, BDFDB.disCN.userpopoutheadernormal) || BDFDB.containsClass(container.firstElementChild, BDFDB.disCN.userprofiletopsectionnormal));
BDFDB.addClass(tag, invert ? BDFDB.disCN.bottaginvert : BDFDB.disCN.bottagregular);
let EditUsersData = BDFDB.isPluginEnabled("EditUsers") ? BDFDB.getPlugin("EditUsers").getUserData(info.id, wrapper) : {};
let EditUsersData = BDFDB.BdUtils.isPluginEnabled("EditUsers") ? BDFDB.BdUtils.getPlugin("EditUsers").getUserData(info.id, wrapper) : {};
let tagcolor = BDFDB.colorCONVERT(EditUsersData.color1 || member.colorString, "RGBA");
let isbright = BDFDB.colorISBRIGHT(tagcolor);
tagcolor = isbright ? (settings.useBlackFont ? tagcolor : BDFDB.colorCHANGE(tagcolor, -0.3)) : tagcolor;
@ -186,7 +184,7 @@ class OwnerTag {
else {
let crown = BDFDB.htmlToElement(`<svg name="Crown" class="owner-tag-crown ${isowner ? "owner-tag-owner" : "owner-tag-admin"} ${BDFDB.disCN.memberownericon}" aria-hidden="false" width="24" height="24" viewBox="0 0 16 16"><g fill="none" fill-rule="evenodd"><path fill-rule="evenodd" clip-rule="evenodd" d="M13.6572 5.42868C13.8879 5.29002 14.1806 5.30402 14.3973 5.46468C14.6133 5.62602 14.7119 5.90068 14.6473 6.16202L13.3139 11.4954C13.2393 11.7927 12.9726 12.0007 12.6666 12.0007H3.33325C3.02725 12.0007 2.76058 11.792 2.68592 11.4954L1.35258 6.16202C1.28792 5.90068 1.38658 5.62602 1.60258 5.46468C1.81992 5.30468 2.11192 5.29068 2.34325 5.42868L5.13192 7.10202L7.44592 3.63068C7.46173 3.60697 7.48377 3.5913 7.50588 3.57559C7.5192 3.56612 7.53255 3.55663 7.54458 3.54535L6.90258 2.90268C6.77325 2.77335 6.77325 2.56068 6.90258 2.43135L7.76458 1.56935C7.89392 1.44002 8.10658 1.44002 8.23592 1.56935L9.09792 2.43135C9.22725 2.56068 9.22725 2.77335 9.09792 2.90268L8.45592 3.54535C8.46794 3.55686 8.48154 3.56651 8.49516 3.57618C8.51703 3.5917 8.53897 3.60727 8.55458 3.63068L10.8686 7.10202L13.6572 5.42868ZM2.66667 12.6673H13.3333V14.0007H2.66667V12.6673Z" fill="${isowner ? "currentColor" : "#b3b3b3"}"></path></svg>`);
crown.addEventListener("mouseenter", () => {
BDFDB.createTooltip(isowner ? (channel.type == 3 ? BDFDB.LanguageUtils.LanguageStrings.GROUP_OWNER : BDFDB.LanguageUtils.LanguageStrings.GUILD_OWNER) : BDFDB.LanguageUtils.LanguageStrings.ADMINISTRATOR, crown, {type: "top"});
BDFDB.TooltipUtils.create(crown, isowner ? (channel.type == 3 ? BDFDB.LanguageUtils.LanguageStrings.GROUP_OWNER : BDFDB.LanguageUtils.LanguageStrings.GUILD_OWNER) : BDFDB.LanguageUtils.LanguageStrings.ADMINISTRATOR, {type: "top"});
});
wrapper.insertBefore(crown, wrapper.querySelector(".TRE-tag,svg[name=MobileDevice]"));
}

View File

@ -174,13 +174,11 @@ class PersonalPins {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
@ -189,7 +187,7 @@ class PersonalPins {
this.stopping = true;
BDFDB.removeEles(".popout-personalpins-notes", ".personalpins-sort-popout", ".notes-button");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -217,9 +215,9 @@ class PersonalPins {
if (!messagediv || pos == -1) return;
let note = this.getNoteData(instance.props.message, instance.props.target, instance.props.channel);
let [children, index] = BDFDB.getContextMenuGroupAndIndex(returnvalue, "MessagePinItem");
const pinUnpinItem = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
const pinUnpinItem = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels[note ? "context_unpinoption_text" : "context_pinoption_text"],
hint: BDFDB.isPluginEnabled("MessageUtilities") ? BDFDB.getPlugin("MessageUtilities").getActiveShortcutString("__Note_Message") : null,
hint: BDFDB.BdUtils.isPluginEnabled("MessageUtilities") ? BDFDB.BdUtils.getPlugin("MessageUtilities").getActiveShortcutString("__Note_Message") : null,
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-${note ? "unpin" : "pin"}-contextMenuItem`,
action: e => {
BDFDB.closeContextMenu(menu);
@ -232,7 +230,7 @@ class PersonalPins {
let newmarkup = this.getMarkup(messagediv).innerHTML;
let newaccessory = messagediv.querySelector(BDFDB.dotCN.messageaccessory).innerHTML;
if (note.markup != newmarkup || note.accessory != newaccessory) {
const updateItem = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
const updateItem = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.context_updateoption_text,
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-update-contextMenuItem`,
action: e => {
@ -253,7 +251,7 @@ class PersonalPins {
if (!messagediv || pos == -1) return;
let note = this.getNoteData(instance.props.message, instance.props.target, instance.props.channel);
let [children, index] = BDFDB.getContextMenuGroupAndIndex(returnvalue, [BDFDB.LanguageUtils.LanguageStrings.PIN, BDFDB.LanguageUtils.LanguageStrings.UNPIN]);
const pinUnpinItem = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
const pinUnpinItem = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels[note ? "context_unpinoption_text" : "popout_pinoption_text"],
className: `${BDFDB.disCN.optionpopoutitem} BDFDB-popoutMenuItem ${this.name}-popoutMenuItem ${this.name}-${note ? "unpin" : "pin"}-popoutMenuItem`,
action: e => {
@ -266,7 +264,7 @@ class PersonalPins {
let newmarkup = this.getMarkup(messagediv).innerHTML;
let newaccessory = messagediv.querySelector(BDFDB.dotCN.messageaccessory).innerHTML;
if (note.markup != newmarkup || note.accessory != newaccessory) {
const updateItem = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
const updateItem = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.context_updateoption_text,
className: `${BDFDB.disCN.optionpopoutitem} BDFDB-popoutMenuItem ${this.name}-popoutMenuItem ${this.name}-update-popoutMenuItem`,
action: e => {
@ -295,12 +293,12 @@ class PersonalPins {
this.openNotesPopout(icon.parentElement);
});
icon.addEventListener("mouseenter", () => {
BDFDB.createTooltip(this.labels.popout_note_text, icon, {type:"bottom",selector:"note-button-tooltip"});
BDFDB.TooltipUtils.create(icon, this.labels.popout_note_text, {type:"bottom",selector:"note-button-tooltip"});
});
}
processMessage (instance, wrapper, returnvalue) {
if (instance.props && typeof instance.props.renderButtons == "function" && !wrapper.querySelector(BDFDB.dotCN.optionpopoutbutton) && BDFDB.getReactValue(instance, "props.message.author.id") != 1) {
if (instance.props && typeof instance.props.renderButtons == "function" && !wrapper.querySelector(BDFDB.dotCN.optionpopoutbutton) && BDFDB.ReactUtils.getValue(instance, "props.message.author.id") != 1) {
let buttonwrap = wrapper.querySelector(BDFDB.dotCN.messagebuttoncontainer);
if (buttonwrap) {
let optionPopoutButton = BDFDB.htmlToElement(`<div tabindex="0" class="${BDFDB.disCN.optionpopoutbutton}" aria-label="More Options" role="button"><svg name="OverflowMenu" class="${BDFDB.disCN.optionpopoutbuttonicon}" aria-hidden="false" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path d="M24 0v24H0V0z"></path><path fill="currentColor" d="M12 16c1.1045695 0 2 .8954305 2 2s-.8954305 2-2 2-2-.8954305-2-2 .8954305-2 2-2zm0-6c1.1045695 0 2 .8954305 2 2s-.8954305 2-2 2-2-.8954305-2-2 .8954305-2 2-2zm0-6c1.1045695 0 2 .8954305 2 2s-.8954305 2-2 2-2-.8954305-2-2 .8954305-2 2-2z"></path></g></svg></div>`);
@ -350,15 +348,15 @@ class PersonalPins {
addNotes (notespopout) {
BDFDB.removeEles(notespopout.querySelectorAll(BDFDB.dotCNC.messagegroupwrapper + BDFDB.dotCN.messagespopoutchannelseparator));
let channel = BDFDB.getSelectedChannel();
let channel = BDFDB.ChannelUtils.getSelected();
if (channel) {
let guild_id = channel.guild_id ? channel.guild_id : "@me";
let pins = BDFDB.loadAllData(this, "pins");
if (!BDFDB.isObjectEmpty(pins)) {
if (!BDFDB.ObjectUtils.isEmpty(pins)) {
let container = notespopout.querySelector(BDFDB.dotCN.messagespopout);
let placeholder = notespopout.querySelector(BDFDB.dotCN.messagespopoutemptyplaceholder);
if (!container || !placeholder) return;
placeholder.querySelector(BDFDB.dotCN.messagespopoutimage).style.setProperty("background-image", `url(${BDFDB.getDiscordTheme() == BDFDB.disCN.themelight ? "/assets/03c7541028afafafd1a9f6a81cb7f149.svg" : "/assets/6793e022dc1b065b21f12d6df02f91bd.svg"})`);
placeholder.querySelector(BDFDB.dotCN.messagespopoutimage).style.setProperty("background-image", `url(${BDFDB.DiscordUtils.getTheme() == BDFDB.disCN.themelight ? "/assets/03c7541028afafafd1a9f6a81cb7f149.svg" : "/assets/6793e022dc1b065b21f12d6df02f91bd.svg"})`);
let notes = {};
switch (notespopout.querySelector(BDFDB.dotCN.tabbarheaderitem + BDFDB.dotCN.settingsitemselected).getAttribute("tab")) {
case "channel":
@ -373,7 +371,7 @@ class PersonalPins {
}
let noteArray = [];
for (let id in notes) {noteArray.push(notes[id]);}
BDFDB.sortArrayByKey(noteArray, notespopout.querySelector(BDFDB.dotCN.recentmentionsmentionfiltervalue).getAttribute("option"));
BDFDB.ArrayUtils.keySort(noteArray, notespopout.querySelector(BDFDB.dotCN.recentmentionsmentionfiltervalue).getAttribute("option"));
for (let noteData of noteArray) this.appendNote(notespopout, container, noteData, placeholder);
let searchstring = notespopout.querySelector(BDFDB.dotCN.searchbarinput).value.replace(/[<|>]/g, "");
if (searchstring) for (let note of notespopout.querySelectorAll(BDFDB.dotCN.messagegroupwrapper)) {
@ -401,25 +399,25 @@ class PersonalPins {
container.insertBefore(messagedivider, container.firstChild);
let channelname = messagedivider.querySelector(BDFDB.dotCN.messagespopoutchannelname);
channelname.innerText = (noteData.guild_id == "@me" ? " @" : " #") + (channel.name || noteData.channel_name);
if (noteData.guild_id != "@me" && BDFDB.isPluginEnabled("EditChannels")) {
BDFDB.getPlugin("EditChannels").changeChannel2({id:noteData.channel_id,name:noteData.channel_name}, channelname);
if (noteData.guild_id != "@me" && BDFDB.BdUtils.isPluginEnabled("EditChannels")) {
BDFDB.BdUtils.getPlugin("EditChannels").changeChannel2({id:noteData.channel_id,name:noteData.channel_name}, channelname);
}
else if (noteData.guild_id == "@me" && BDFDB.isPluginEnabled("EditUsers")) {
else if (noteData.guild_id == "@me" && BDFDB.BdUtils.isPluginEnabled("EditUsers")) {
let dmuser_id = channel && channel.type == 1 ? channel.recipients[0] : noteData.dmuser_id;
if (dmuser_id) {
BDFDB.getPlugin("EditUsers").changeName2({id:dmuser_id,username:noteData.channel_name}, channelname);
BDFDB.BdUtils.getPlugin("EditUsers").changeName2({id:dmuser_id,username:noteData.channel_name}, channelname);
if (channelname.innerText.indexOf("@") != 0) channelname.innerText = "@" + channelname.innerText;
}
}
let guildname = messagedivider.querySelector(BDFDB.dotCN.messagespopoutguildname);
guildname.innerText = server.name || noteData.guild_name;
let avatar = message.querySelector(BDFDB.dotCN.avatar);
avatar.setAttribute("src", `${user.id ? BDFDB.getUserAvatar(user.id) : noteData.avatar}`);
avatar.setAttribute("src", `${user.id ? BDFDB.UserUtils.getAvatar(user.id) : noteData.avatar}`);
let username = message.querySelector(BDFDB.dotCN.messageusername);
username.innerText = user.username || noteData.author_name;
username.style.setProperty("color", member.colorString || noteData.color);
if (BDFDB.isPluginEnabled("EditUsers")) {
let EditUsers = BDFDB.getPlugin("EditUsers");
if (BDFDB.BdUtils.isPluginEnabled("EditUsers")) {
let EditUsers = BDFDB.BdUtils.getPlugin("EditUsers");
EditUsers.changeName({id:noteData.author_id,username:noteData.author_name}, username, noteData.guild_id);
if (user.id) EditUsers.changeAvatar({id:noteData.author_id,username:noteData.author_name}, avatar);
EditUsers.addTag({id:noteData.author_id,username:noteData.author_name}, username.parentElement, " " + BDFDB.disCN.bottagnametag);
@ -427,13 +425,13 @@ class PersonalPins {
let timestamp = message.querySelector(BDFDB.dotCN.messagetimestampcozy);
timestamp.innerText = date.toLocaleString(BDFDB.getDiscordLanguage().id);
timestamp.setAttribute("datetime", date);
if (BDFDB.isPluginEnabled("CompleteTimestamps") && BDFDB.loadData("showInChat", "CompleteTimestamps", "settings")) {
BDFDB.getPlugin("CompleteTimestamps").changeTimestamp(timestamp);
if (BDFDB.BdUtils.isPluginEnabled("CompleteTimestamps") && BDFDB.loadData("showInChat", "CompleteTimestamps", "settings")) {
BDFDB.BdUtils.getPlugin("CompleteTimestamps").changeTimestamp(timestamp);
}
message.querySelector(BDFDB.dotCN.messagemarkup).innerHTML = noteData.markup.replace(`<span class="edited">`,`<span class="${BDFDB.disCN.messageedited}">`);
message.querySelector(BDFDB.dotCN.messageaccessory).innerHTML = noteData.accessory;
if (noteData.accessory) {
BDFDB.addChildEventListener(message, "click", BDFDB.dotCN.iconplay, e => {this.startYoutubeVideo(e.currentTarget);});
BDFDB.ListenerUtils.addToChildren(message, "click", BDFDB.dotCN.iconplay, e => {this.startYoutubeVideo(e.currentTarget);});
let ytvideo = message.querySelector(BDFDB.dotCN.embed + " iframe[src*='https://www.youtube.com']");
if (ytvideo) {
let ytlink = ytvideo.parentElement.parentElement.querySelector(BDFDB.dotCN.embedtitle).href;
@ -448,7 +446,7 @@ class PersonalPins {
}
}
messagedivider.querySelector(BDFDB.dotCN.messagespopoutchannelname).addEventListener("click", e => {
if (!BDFDB.isObjectEmpty(channel)) {
if (!BDFDB.ObjectUtils.isEmpty(channel)) {
notespopout.remove();
BDFDB.LibraryModules.SelectChannelUtils.selectChannel(server.id, channel.id);
}
@ -519,7 +517,7 @@ class PersonalPins {
channelname = channelname + BDFDB.LibraryModules.UserStore.getUser(dmuser_id).username;
}
}
pins[guild_id][channel.id][message.id + "_" + pos] = BDFDB.sortObject({
pins[guild_id][channel.id][message.id + "_" + pos] = BDFDB.ObjectUtils.sort({
"guild_id": guild_id,
"guild_name": guild.name ? guild.name : "Direct Messages",
"channel_id": channel.id,
@ -532,13 +530,13 @@ class PersonalPins {
"color": message.colorString,
"author_id": message.author.id,
"author_name": message.author.username,
"avatar": BDFDB.getUserAvatar(message.author.id),
"avatar": BDFDB.UserUtils.getAvatar(message.author.id),
"content": message.content,
"markup": this.getMarkup(messagediv).innerHTML,
"accessory": messagediv.querySelector(BDFDB.dotCN.messageaccessory).innerHTML
});
BDFDB.saveAllData(pins, this, "pins");
BDFDB.showToast(this.labels.toast_noteadd_text, {type:"success"});
BDFDB.NotificationUtils.toast(this.labels.toast_noteadd_text, {type:"success"});
}
else this.removeNoteData(pins[guild_id][channel.id][message.id + "_" + pos]);
}
@ -547,9 +545,9 @@ class PersonalPins {
let pins = BDFDB.loadAllData(this, "pins");
pins[note.guild_id][note.channel_id][note.id + "_" + note.pos].markup = markup;
pins[note.guild_id][note.channel_id][note.id + "_" + note.pos].accessory = accessory;
pins[note.guild_id][note.channel_id][note.id + "_" + note.pos] = BDFDB.sortObject(pins[note.guild_id][note.channel_id][note.id + "_" + note.pos]);
pins[note.guild_id][note.channel_id][note.id + "_" + note.pos] = BDFDB.ObjectUtils.sort(pins[note.guild_id][note.channel_id][note.id + "_" + note.pos]);
BDFDB.saveAllData(pins, this, "pins");
BDFDB.showToast(this.labels.toast_noteupdate_text, {type:"info"});
BDFDB.NotificationUtils.toast(this.labels.toast_noteupdate_text, {type:"info"});
}
getMarkup (messagediv) {
@ -571,12 +569,12 @@ class PersonalPins {
removeNoteData (noteData) {
let pins = BDFDB.loadAllData(this, "pins");
delete pins[noteData.guild_id][noteData.channel_id][noteData.id + "_" + noteData.pos];
if (BDFDB.isObjectEmpty(pins[noteData.guild_id][noteData.channel_id])) {
if (BDFDB.ObjectUtils.isEmpty(pins[noteData.guild_id][noteData.channel_id])) {
delete pins[noteData.guild_id][noteData.channel_id];
if (BDFDB.isObjectEmpty(pins[noteData.guild_id])) delete pins[noteData.guild_id];
if (BDFDB.ObjectUtils.isEmpty(pins[noteData.guild_id])) delete pins[noteData.guild_id];
}
BDFDB.saveAllData(pins, this, "pins");
BDFDB.showToast(this.labels.toast_noteremove_text, {type:"danger"});
BDFDB.NotificationUtils.toast(this.labels.toast_noteremove_text, {type:"danger"});
}
getMessageAndPos (target) {

View File

@ -122,7 +122,7 @@ class PinDMs {
BDFDB.initElements(settingspanel, this);
BDFDB.addEventListener(this, settingspanel, "click", ".reset-button", () => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".reset-button", () => {
BDFDB.openConfirmModal(this, "Are you sure you want to unpin all pinned DMs?", () => {
BDFDB.removeAllData(this, "pinnedDMs");
BDFDB.removeAllData(this, "pinnedRecents");
@ -155,22 +155,20 @@ class PinDMs {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
this.forceAdding = true;
BDFDB.WebModules.forceAllUpdates(this);
BDFDB.ModuleUtils.forceAllUpdates(this);
delete this.forceAdding;
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
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 dmsscrollerinstance = BDFDB.getReactInstance(document.querySelector(BDFDB.dotCNS.dmchannels + BDFDB.dotCN.scroller));
let dmsscrollerinstance = BDFDB.ReactUtils.getInstance(document.querySelector(BDFDB.dotCNS.dmchannels + BDFDB.dotCN.scroller));
if (dmsscrollerinstance) {
let dms = dmsscrollerinstance.return.return.return.memoizedProps.children;
let amount = 0;
@ -180,7 +178,7 @@ class PinDMs {
if (ele && ele.pinned) {
delete ele.pinned;
if (ele.props.ispin) {
if (ele && ele.type == "header" || BDFDB.getReactValue(ele, "type.displayName") == "ListSectionItem") insertpoint = i;
if (ele && ele.type == "header" || BDFDB.ReactUtils.getValue(ele, "type.displayName") == "ListSectionItem") insertpoint = i;
amount++;
}
}
@ -189,13 +187,13 @@ class PinDMs {
this.forceUpdateScroller(dmsscrollerinstance.stateNode);
}
for (let info of BDFDB.readDmList()) {
for (let info of BDFDB.DmUtils.getAll()) {
this.unhideNativeDM(info.id);
if (info.div) info.div.removeEventListener("contextmenu", info.div.PinDMsContextMenuListener);
}
BDFDB.removeEles(".pinned-dm", ".dmplaceholder", ".pindms-dragpreview");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -212,7 +210,7 @@ class PinDMs {
if (index > -1) {
let id = BDFDB.LibraryModules.ChannelStore.getDMFromUserId(instance.props.user.id);
if (id) this.appendItem(menu, id, children, index);
else BDFDB.LibraryModules.DirectMessageUtils.ensurePrivateChannel(BDFDB.myData.id, instance.props.user.id).then(id => {this.appendItem(menu, id, children, index);});
else BDFDB.LibraryModules.DirectMessageUtils.ensurePrivateChannel(BDFDB.UserUtils.me.id, instance.props.user.id).then(id => {this.appendItem(menu, id, children, index);});
}
}
}
@ -228,14 +226,14 @@ class PinDMs {
let pinnedInChannel = BDFDB.loadAllData(this, "pinnedDMs")[id] != undefined;
let pinnedInGuild = BDFDB.loadAllData(this, "pinnedRecents")[id] != undefined;
let items = [];
items.push(BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
items.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels[pinnedInChannel ? "context_unpinchannel_text" : "context_pinchannel_text"],
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-${pinnedInChannel ? "unpin" : "pin"}channel-contextMenuItem`,
danger: pinnedInChannel,
action: e => {
BDFDB.closeContextMenu(menu);
if (!pinnedInChannel) {
let dmsscrollerinstance = BDFDB.getReactInstance(document.querySelector(BDFDB.dotCNS.dmchannels + BDFDB.dotCN.scroller));
let dmsscrollerinstance = BDFDB.ReactUtils.getInstance(document.querySelector(BDFDB.dotCNS.dmchannels + BDFDB.dotCN.scroller));
if (dmsscrollerinstance) {
let dms = dmsscrollerinstance.return.return.return.stateNode.props.children;
let insertpoint = this.getInsertPoint(dms);
@ -249,7 +247,7 @@ class PinDMs {
}
}
}));
items.push(BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
items.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels[pinnedInGuild ? "context_unpinguild_text" : "context_pinguild_text"],
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-${pinnedInGuild ? "unpin" : "pin"}guild-contextMenuItem`,
danger: pinnedInGuild,
@ -267,7 +265,7 @@ class PinDMs {
}
}
}));
const subitem = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuSubItem, {
const subitem = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuSubItem, {
label: this.labels.context_pindm_text,
className: `BDFDB-contextMenuSubItem ${this.name}-contextMenuSubItem ${this.name}-pindm-contextMenuSubItem`,
render: items
@ -281,10 +279,10 @@ class PinDMs {
processPrivateChannel (instance, wrapper, returnvalue) {
if (instance && instance.props && instance.props.ispin) {
let id = BDFDB.getReactValue(instance, "props.channel.id");
let id = BDFDB.ReactUtils.getValue(instance, "props.channel.id");
wrapper.setAttribute("channelid", id);
BDFDB.addClass(wrapper, "pinned");
BDFDB.removeClass(BDFDB.getChannelDiv(id), BDFDB.disCN.namecontainerselected);
BDFDB.removeClass(BDFDB.ChannelUtils.getDiv(id), BDFDB.disCN.namecontainerselected);
(wrapper.querySelector("a") || wrapper).setAttribute("draggable", false);
wrapper.addEventListener("click", e => {
let dmsscroller = document.querySelector(BDFDB.dotCNS.dmchannels + BDFDB.dotCN.scroller);
@ -294,7 +292,7 @@ class PinDMs {
}
});
wrapper.querySelector(BDFDB.dotCN.dmchannelclose).addEventListener("click", e => {
BDFDB.stopEvent(e);
BDFDB.ListenerUtils.stopEvent(e);
this.removePinnedDM(id);
});
wrapper.addEventListener("mousedown", e => {
@ -345,10 +343,10 @@ class PinDMs {
wrapper.removeEventListener("contextmenu", wrapper.PinDMsContextMenuListener);
wrapper.PinDMsContextMenuListener = e => {
if (BDFDB.loadAllData(this, "pinnedRecents")[instance.props.channel.id] == undefined) {
const itemGroup = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
const itemGroup = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
className: `BDFDB-contextMenuItemGroup ${this.name}-contextMenuItemGroup`,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.context_pinguild_text,
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-pinguild-contextMenuItem`,
action: e => {
@ -376,7 +374,7 @@ class PinDMs {
}
processLazyScroller (instance, wrapper, returnvalue) {
let privateChannelIds = BDFDB.getReactValue(instance, "_reactInternalFiber.return.memoizedProps.privateChannelIds");
let privateChannelIds = BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.return.memoizedProps.privateChannelIds");
if (privateChannelIds) {
if (this.forceAdding || !instance.props.PinDMsPatched) {
instance.props.PinDMsPatched = true;
@ -403,7 +401,7 @@ class PinDMs {
let insertpoint = null;
for (let i in dms) {
let ele = dms[i];
if (ele && ele.type == "header" || BDFDB.getReactValue(ele, "type.displayName") == "ListSectionItem") {
if (ele && ele.type == "header" || BDFDB.ReactUtils.getValue(ele, "type.displayName") == "ListSectionItem") {
insertpoint = parseInt(i);
if (!ele.pinned && !ele.props.ispin) {
ele.pinned = true;
@ -438,7 +436,7 @@ class PinDMs {
}
BDFDB.removeData(id, this, "pinnedDMs");
this.updatePinnedPositions("pinnedDMs");
let dmsscrollerinstance = BDFDB.getReactInstance(document.querySelector(BDFDB.dotCNS.dmchannels + BDFDB.dotCN.scroller));
let dmsscrollerinstance = BDFDB.ReactUtils.getInstance(document.querySelector(BDFDB.dotCNS.dmchannels + BDFDB.dotCN.scroller));
if (dmsscrollerinstance) {
let dms = dmsscrollerinstance.return.return.return.memoizedProps.children;
let existingDMs = this.sortAndUpdate("pinnedDMs");
@ -476,11 +474,11 @@ class PinDMs {
forceUpdateScroller (scroller) {
if (this.updatingScroller) return;
var stateNode = BDFDB.getReactValue(scroller, "return.return.return.stateNode");
var stateNode = BDFDB.ReactUtils.getValue(scroller, "return.return.return.stateNode");
if (stateNode) {
this.updatingScroller = true;
BDFDB.React.forceUpdate(stateNode);
setTimeout(() => {BDFDB.React.forceUpdate(stateNode);},500);
BDFDB.ReactUtils.forceUpdate(stateNode);
setTimeout(() => {BDFDB.ReactUtils.forceUpdate(stateNode);},500);
setTimeout(() => {delete this.updatingScroller;},1000);
}
}
@ -508,28 +506,28 @@ class PinDMs {
dmname = dmname + BDFDB.LibraryModules.UserStore.getUser(dmuser_id).username;
}
}
let EditUsersData = user && BDFDB.isPluginEnabled("EditUsers") ? BDFDB.getPlugin("EditUsers").getUserData(user.id, dmdiv) : {};
if (!EditUsersData.removeIcon) avatar.setAttribute("src", `${EditUsersData.url || BDFDB.getChannelIcon(id)}`);
let EditUsersData = user && BDFDB.BdUtils.isPluginEnabled("EditUsers") ? BDFDB.BdUtils.getPlugin("EditUsers").getUserData(user.id, dmdiv) : {};
if (!EditUsersData.removeIcon) avatar.setAttribute("src", `${EditUsersData.url || BDFDB.DmUtils.getIcon(id)}`);
avatar.setAttribute("channel", dmname);
if (user) avatar.setAttribute("user", user.username);
dmdivinner.addEventListener("mouseenter", () => {
let FreshEditUsersData = user && BDFDB.isPluginEnabled("EditUsers") ? BDFDB.getPlugin("EditUsers").getUserData(user.id, dmdiv) : {};
BDFDB.createTooltip(FreshEditUsersData.name || dmname, dmdivinner, {selector:(BDFDB.isObjectEmpty(FreshEditUsersData) ? "" : "EditUsers-tooltip"),type:"right"});
let FreshEditUsersData = user && BDFDB.BdUtils.isPluginEnabled("EditUsers") ? BDFDB.BdUtils.getPlugin("EditUsers").getUserData(user.id, dmdiv) : {};
BDFDB.TooltipUtils.create(dmdivinner, FreshEditUsersData.name || dmname, {selector:(BDFDB.ObjectUtils.isEmpty(FreshEditUsersData) ? "" : "EditUsers-tooltip"),type:"right"});
});
avatar.parentElement.addEventListener("click", e => {
if (user) {
let DMid = BDFDB.LibraryModules.ChannelStore.getDMFromUserId(user.id)
if (DMid) BDFDB.LibraryModules.SelectChannelUtils.selectPrivateChannel(DMid);
else BDFDB.LibraryModules.DirectMessageUtils.openPrivateChannel(BDFDB.myData.id, user.id);
else BDFDB.LibraryModules.DirectMessageUtils.openPrivateChannel(BDFDB.UserUtils.me.id, user.id);
}
else BDFDB.LibraryModules.SelectChannelUtils.selectPrivateChannel(id);
BDFDB.stopEvent(e);
BDFDB.ListenerUtils.stopEvent(e);
});
avatar.parentElement.addEventListener("contextmenu", e => {
const itemGroup = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
const itemGroup = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
className: `BDFDB-contextMenuItemGroup ${this.name}-contextMenuItemGroup`,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.context_unpinguild_text,
danger: true,
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-unpinguild-contextMenuItem`,
@ -626,7 +624,7 @@ class PinDMs {
let count = BDFDB.LibraryModules.UnreadChannelUtils.getUnreadCount(id);
let showpin = BDFDB.getData("showPinIcon", this, "settings");
let dmdiv = BDFDB.getDmDiv(id);
let dmdiv = BDFDB.DmUtils.getDiv(id);
let pinneddmiconwrapper = pinneddmdiv.querySelector(BDFDB.dotCN.guildiconwrapper);
let pinneddmdivpill = pinneddmdiv.querySelector(BDFDB.dotCN.guildpillitem);
let iconbadge = pinneddmdiv.querySelector(BDFDB.dotCN.guildupperbadge);
@ -656,7 +654,7 @@ class PinDMs {
}
hideNativeDM (id) {
let dmdiv = BDFDB.getDmDiv(id);
let dmdiv = BDFDB.DmUtils.getDiv(id);
if (Node.prototype.isPrototypeOf(dmdiv)) {
BDFDB.toggleEles(dmdiv, false);
BDFDB.addClass(dmdiv, "hidden-by-pin");
@ -664,7 +662,7 @@ class PinDMs {
}
unhideNativeDM (id) {
let dmdiv = BDFDB.getDmDiv(id);
let dmdiv = BDFDB.DmUtils.getDiv(id);
if (Node.prototype.isPrototypeOf(dmdiv) && BDFDB.containsClass(dmdiv, "hidden-by-pin")) {
BDFDB.toggleEles(dmdiv, true);
BDFDB.removeClass(dmdiv, "hidden-by-pin");

View File

@ -263,11 +263,11 @@ class PluginRepo {
BDFDB.initElements(settingspanel, this);
BDFDB.addEventListener(this, settingspanel, "click", ".btn-addplugin", () => {this.addPluginToOwnList(settingspanel);});
BDFDB.addEventListener(this, settingspanel, "click", "#input-pluginurl", e => {if (e.which == 13) this.addPluginToOwnList(settingspanel);});
BDFDB.addEventListener(this, settingspanel, "click", ".remove-plugin", e => {this.removePluginFromOwnList(e);});
BDFDB.addEventListener(this, settingspanel, "click", ".remove-all", () => {this.removeAllFromOwnList(settingspanel);})
BDFDB.addEventListener(this, settingspanel, "click", ".refresh-button", () => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".btn-addplugin", () => {this.addPluginToOwnList(settingspanel);});
BDFDB.ListenerUtils.add(this, settingspanel, "click", "#input-pluginurl", e => {if (e.which == 13) this.addPluginToOwnList(settingspanel);});
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".remove-plugin", e => {this.removePluginFromOwnList(e);});
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".remove-all", () => {this.removeAllFromOwnList(settingspanel);})
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".refresh-button", () => {
this.loading = {is:false, timeout:null, amount:0};
this.loadPlugins();
});
@ -299,17 +299,15 @@ class PluginRepo {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
this.loadPlugins();
this.updateInterval = setInterval(() => {this.checkForNewPlugins();},1000*60*30);
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
@ -328,7 +326,7 @@ class PluginRepo {
frame.remove();
}
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -337,7 +335,7 @@ class PluginRepo {
onUserSettingsCogContextMenu (instance, menu, returnvalue) {
setImmediate(() => {for (let child of returnvalue.props.children) if (child && child.props && child.props.label == "BandagedBD" && Array.isArray(child.props.render)) {
const repoItem = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
const repoItem = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: "Plugin Repo",
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-repo-contextMenuItem`,
action: e => {
@ -359,7 +357,7 @@ class PluginRepo {
this.openPluginRepoModal()
});
repoButton.addEventListener("mouseenter", () => {
BDFDB.createTooltip("Open Plugin Repo", repoButton, {type:"top",selector:"pluginrepo-button-tooltip"});
BDFDB.TooltipUtils.create(repoButton, "Open Plugin Repo", {type:"top",selector:"pluginrepo-button-tooltip"});
});
folderbutton.parentElement.insertBefore(repoButton, folderbutton.nextSibling);
}
@ -377,7 +375,7 @@ class PluginRepo {
ownlist.push(url);
BDFDB.saveData("ownlist", ownlist, this, "ownlist");
let entry = BDFDB.htmlToElement(`<div class="${BDFDB.disCNS.flex + BDFDB.disCNS.vertical + BDFDB.disCNS.directionrow + BDFDB.disCNS.justifystart + BDFDB.disCNS.alignstretch + BDFDB.disCNS.nowrap + BDFDB.disCNS.margintop4 + BDFDB.disCNS.marginbottom4 + BDFDB.disCN.hovercard}"><div class="${BDFDB.disCN.hovercardinner}"><div class="${BDFDB.disCNS.description + BDFDB.disCNS.formtext + BDFDB.disCNS.note + BDFDB.disCNS.margintop4 + BDFDB.disCNS.modedefault + BDFDB.disCNS.primary + BDFDB.disCN.ellipsis} entryurl">${url}</div></div><div class="${BDFDB.disCN.hovercardbutton} remove-plugin"></div></div>`);
BDFDB.addChildEventListener(entry, "click", ".remove-plugin", e => {this.removePluginFromOwnList(e);});
BDFDB.ListenerUtils.addToChildren(entry, "click", ".remove-plugin", e => {this.removePluginFromOwnList(e);});
pluginList.appendChild(entry);
}
}
@ -388,7 +386,7 @@ class PluginRepo {
var url = entry.querySelector(".entryurl").textContent;
entry.remove();
var ownlist = BDFDB.loadData("ownlist", this, "ownlist") || [];
BDFDB.removeFromArray(ownlist, url);
BDFDB.ArrayUtils.remove(ownlist, url);
BDFDB.saveData("ownlist", ownlist, this, "ownlist");
}
@ -401,7 +399,7 @@ class PluginRepo {
openPluginRepoModal (options = {}) {
if (this.loading.is) {
BDFDB.showToast(`Plugins are still being fetched. Try again in some seconds.`, {type:"danger"});
BDFDB.NotificationUtils.toast(`Plugins are still being fetched. Try again in some seconds.`, {type:"danger"});
return;
}
@ -412,7 +410,7 @@ class PluginRepo {
pluginRepoModal.querySelector("#input-hideupdated").checked = hiddenSettings.updated || options.showOnlyOutdated;
pluginRepoModal.querySelector("#input-hideoutdated").checked = hiddenSettings.outdated && !options.showOnlyOutdated;
pluginRepoModal.querySelector("#input-hidedownloadable").checked = hiddenSettings.downloadable || options.showOnlyOutdated;
if (!BDFDB.isRestartNoMoreEnabled()) pluginRepoModal.querySelector("#RNMoption").remove();
if (!BDFDB.BdUtils.isAutoLoadEnabled()) pluginRepoModal.querySelector("#RNMoption").remove();
else pluginRepoModal.querySelector("#input-rnmstart").checked = BDFDB.loadData("RNMstart", this, "RNMstart");
if (options.forcedSort && this.sortings.sort[options.forcedSort]) {
@ -426,28 +424,28 @@ class PluginRepo {
orderinput.setAttribute('option', options.forcedOrder);
}
BDFDB.addChildEventListener(pluginRepoModal, "keyup", BDFDB.dotCN.searchbarinput, () => {
BDFDB.ListenerUtils.addToChildren(pluginRepoModal, "keyup", BDFDB.dotCN.searchbarinput, () => {
clearTimeout(pluginRepoModal.searchTimeout);
pluginRepoModal.searchTimeout = setTimeout(() => {this.sortEntries(pluginRepoModal);},1000);
});
BDFDB.addChildEventListener(pluginRepoModal, "click", BDFDB.dotCN.searchbarclear, () => {
BDFDB.ListenerUtils.addToChildren(pluginRepoModal, "click", BDFDB.dotCN.searchbarclear, () => {
clearTimeout(pluginRepoModal.searchTimeout);
pluginRepoModal.searchTimeout = setTimeout(() => {this.sortEntries(pluginRepoModal);},1000);
});
BDFDB.addChildEventListener(pluginRepoModal, "change", ".hide-checkbox", e => {
BDFDB.ListenerUtils.addToChildren(pluginRepoModal, "change", ".hide-checkbox", e => {
pluginRepoModal.updateHidden = true;
BDFDB.saveData(e.currentTarget.value, e.currentTarget.checked, this, "hidden");
});
BDFDB.addChildEventListener(pluginRepoModal, "change", "#input-rnmstart", e => {
BDFDB.ListenerUtils.addToChildren(pluginRepoModal, "change", "#input-rnmstart", e => {
BDFDB.saveData("RNMstart", e.currentTarget.checked, this, "RNMstart");
});
BDFDB.addChildEventListener(pluginRepoModal, "click", ".sort-filter", e => {
BDFDB.ListenerUtils.addToChildren(pluginRepoModal, "click", ".sort-filter", e => {
BDFDB.createSortPopout(e.currentTarget, this.sortPopoutMarkup, () => {this.sortEntries(pluginRepoModal);});
});
BDFDB.addChildEventListener(pluginRepoModal, "click", ".order-filter", e => {
BDFDB.ListenerUtils.addToChildren(pluginRepoModal, "click", ".order-filter", e => {
BDFDB.createSortPopout(e.currentTarget, this.orderPopoutMarkup, () => {this.sortEntries(pluginRepoModal);});
});
BDFDB.addChildEventListener(pluginRepoModal, "click", BDFDB.dotCN.tabbaritem + "[tab=plugins]", e => {
BDFDB.ListenerUtils.addToChildren(pluginRepoModal, "click", BDFDB.dotCN.tabbaritem + "[tab=plugins]", e => {
if (!BDFDB.containsClass(e.currentTarget, BDFDB.disCN.settingsitemselected) && pluginRepoModal.updateHidden) {
delete pluginRepoModal.updateHidden;
this.sortEntries(pluginRepoModal);
@ -459,7 +457,7 @@ class PluginRepo {
pluginRepoModal.entries = {};
for (let url in this.loadedPlugins) {
let plugin = this.loadedPlugins[url];
let instPlugin = BDFDB.getPlugin(plugin.getName);
let instPlugin = BDFDB.BdUtils.getPlugin(plugin.getName);
if (instPlugin && this.getString(instPlugin.getAuthor()).toUpperCase() == plugin.getAuthor.toUpperCase()) plugin.getState = this.getString(instPlugin.getVersion()) != plugin.getVersion ? 1 : 0;
else plugin.getState = 2;
let data = {
@ -518,18 +516,18 @@ class PluginRepo {
if (giturl) window.open(giturl, "_blank");
});
gitbutton.addEventListener("mouseenter", e => {
BDFDB.createTooltip("Go to Git", gitbutton, {type:"top",selector:"pluginrepo-giticon-tooltip"});
BDFDB.TooltipUtils.create(gitbutton, "Go to Git", {type:"top",selector:"pluginrepo-giticon-tooltip"});
});
let trashbutton = entry.querySelector(".trashIcon");
trashbutton.addEventListener("click", e => {
if (BDFDB.containsClass(entry, "outdated", "updated", false)) {
setEntryState(2);
this.deletePluginFile(data);
if (!BDFDB.isRestartNoMoreEnabled()) this.stopPlugin(data);
if (!BDFDB.BdUtils.isAutoLoadEnabled()) this.stopPlugin(data);
}
});
trashbutton.addEventListener("mouseenter", e => {
BDFDB.createTooltip("Delete Pluginfile", trashbutton, {type:"top",selector:"pluginrepo-trashicon-tooltip"});
BDFDB.TooltipUtils.create(trashbutton, "Delete Pluginfile", {type:"top",selector:"pluginrepo-trashicon-tooltip"});
});
entry.querySelector(".btn-download").addEventListener("click", e => {
setEntryState(0);
@ -560,14 +558,14 @@ class PluginRepo {
let searchstring = pluginRepoModal.querySelector(BDFDB.dotCN.searchbarinput).value.replace(/[<|>]/g, "").toUpperCase();
let entries = pluginRepoModal.entries;
if (pluginRepoModal.querySelector("#input-hideupdated").checked) entries = BDFDB.filterObject(entries, entry => {return entry.state < 1 ? null : entry;});
if (pluginRepoModal.querySelector("#input-hideoutdated").checked) entries = BDFDB.filterObject(entries, entry => {return entry.state == 1 ? null : entry;});
if (pluginRepoModal.querySelector("#input-hidedownloadable").checked) entries = BDFDB.filterObject(entries, entry => {return entry.state > 1 ? null : entry;});
entries = BDFDB.filterObject(entries, entry => {return entry.search.indexOf(searchstring) > -1 ? entry : null;});
if (pluginRepoModal.querySelector("#input-hideupdated").checked) entries = BDFDB.ObjectUtils.filter(entries, entry => {return entry.state < 1 ? null : entry;});
if (pluginRepoModal.querySelector("#input-hideoutdated").checked) entries = BDFDB.ObjectUtils.filter(entries, entry => {return entry.state == 1 ? null : entry;});
if (pluginRepoModal.querySelector("#input-hidedownloadable").checked) entries = BDFDB.ObjectUtils.filter(entries, entry => {return entry.state > 1 ? null : entry;});
entries = BDFDB.ObjectUtils.filter(entries, entry => {return entry.search.indexOf(searchstring) > -1 ? entry : null;});
let sortfilter = pluginRepoModal.querySelector(".sort-filter " + BDFDB.dotCN.quickselectvalue).getAttribute("option");
entries = BDFDB.sortObject(entries, sortfilter == "new" && !pluginRepoModal.querySelector(".newentries-tag") ? "name" : sortfilter);
if (pluginRepoModal.querySelector(".order-filter " + BDFDB.dotCN.quickselectvalue).getAttribute("option") == "desc") entries = BDFDB.reverseObject(entries);
entries = BDFDB.ObjectUtils.sort(entries, sortfilter == "new" && !pluginRepoModal.querySelector(".newentries-tag") ? "name" : sortfilter);
if (pluginRepoModal.querySelector(".order-filter " + BDFDB.dotCN.quickselectvalue).getAttribute("option") == "desc") entries = BDFDB.ObjectUtils.reverse(entries);
let entrypositions = Object.keys(entries);
@ -616,7 +614,9 @@ class PluginRepo {
}
var loadingicon = BDFDB.htmlToElement(this.pluginRepoIconMarkup);
BDFDB.addClass(loadingicon, "pluginrepo-loadingicon");
loadingicon.addEventListener("mouseenter", () => {BDFDB.createTooltip(this.getLoadingTooltipText(),loadingicon,{type:"left",delay:500,style:"max-width:unset;",selector:"pluginrepo-loading-tooltip"});})
loadingicon.addEventListener("mouseenter", () => {
BDFDB.TooltipUtils.create(loadingicon, this.getLoadingTooltipText(), {type:"left", delay:500, style:"max-width:unset;", selector:"pluginrepo-loading-tooltip"});
});
loadingiconwrapper.appendChild(loadingicon);
createFrame().then(() => {
@ -636,11 +636,11 @@ class PluginRepo {
clearTimeout(this.loading.timeout);
this.loading = {is:false, timeout:null, amount:this.loading.amount};
console.log(`%c[${this.name}]%c`, "color: #3a71c1; font-weight: 700;", "", "Finished fetching Plugins.");
if (document.querySelector(".bd-pluginrepobutton")) BDFDB.showToast(`Finished fetching Plugins.`, {type:"success"});
if (document.querySelector(".bd-pluginrepobutton")) BDFDB.NotificationUtils.toast(`Finished fetching Plugins.`, {type:"success"});
if ((settings.notifyOutdated || settings.notifyOutdated == undefined) && outdated > 0) {
var oldbarbutton = document.querySelector(".pluginrepo-outdate-notice " + BDFDB.dotCN.noticedismiss);
if (oldbarbutton) oldbarbutton.click();
var bar = BDFDB.createNotificationsBar(`${outdated} of your Plugins ${outdated == 1 ? "is" : "are"} outdated. Check:`,{type:"danger",btn:"PluginRepo",selector:"pluginrepo-notice pluginrepo-outdate-notice", customicon:this.pluginRepoIconMarkup.replace(/#7289da/gi,"#FFF").replace(/#7f8186/gi,"#B9BBBE")});
var bar = BDFDB.NotificationUtils.notice(`${outdated} of your Plugins ${outdated == 1 ? "is" : "are"} outdated. Check:`,{type:"danger",btn:"PluginRepo",selector:"pluginrepo-notice pluginrepo-outdate-notice", customicon:this.pluginRepoIconMarkup.replace(/#7289da/gi,"#FFF").replace(/#7f8186/gi,"#B9BBBE")});
bar.querySelector(BDFDB.dotCN.noticebutton).addEventListener("click", e => {
this.openPluginRepoModal({showOnlyOutdated:true});
bar.querySelector(BDFDB.dotCN.noticedismiss).click();
@ -649,19 +649,19 @@ class PluginRepo {
if ((settings.notifyNewentries || settings.notifyNewentries == undefined) && newentries > 0) {
var oldbarbutton = document.querySelector(".pluginrepo-newentries-notice " + BDFDB.dotCN.noticedismiss);
if (oldbarbutton) oldbarbutton.click();
var bar = BDFDB.createNotificationsBar(`There ${newentries == 1 ? "is" : "are"} ${newentries} new Plugin${newentries == 1 ? "" : "s"} in the Repo. Check:`,{type:"success",btn:"PluginRepo",selector:"pluginrepo-notice pluginrepo-newentries-notice", customicon:this.pluginRepoIconMarkup.replace(/#7289da/gi,"#FFF").replace(/#7f8186/gi,"#B9BBBE")});
var bar = BDFDB.NotificationUtils.notice(`There ${newentries == 1 ? "is" : "are"} ${newentries} new Plugin${newentries == 1 ? "" : "s"} in the Repo. Check:`,{type:"success",btn:"PluginRepo",selector:"pluginrepo-notice pluginrepo-newentries-notice", customicon:this.pluginRepoIconMarkup.replace(/#7289da/gi,"#FFF").replace(/#7f8186/gi,"#B9BBBE")});
bar.querySelector(BDFDB.dotCN.noticebutton).addEventListener("click", e => {
this.openPluginRepoModal({forcedSort:"new",forcedOrder:"asc"});
bar.querySelector(BDFDB.dotCN.noticedismiss).click();
});
}
if (BDFDB.myData.id == "278543574059057154") {
if (BDFDB.UserUtils.me.id == "278543574059057154") {
let wrongUrls = [];
for (let url of this.foundPlugins) if (url && !this.loadedPlugins[url] && !wrongUrls.includes(url)) wrongUrls.push(url);
if (wrongUrls.length > 0) {
var bar = BDFDB.createNotificationsBar(`PluginRepo: ${wrongUrls.length} Plugin${wrongUrls.length > 1 ? "s" : ""} could not be loaded.`, {type:"danger",btn:"List",selector:"pluginrepo-notice pluginrepo-fail-notice", customicon:this.pluginRepoIconMarkup.replace(/#7289da/gi,"#FFF").replace(/#7f8186/gi,"#B9BBBE")});
var bar = BDFDB.NotificationUtils.notice(`PluginRepo: ${wrongUrls.length} Plugin${wrongUrls.length > 1 ? "s" : ""} could not be loaded.`, {type:"danger",btn:"List",selector:"pluginrepo-notice pluginrepo-fail-notice", customicon:this.pluginRepoIconMarkup.replace(/#7289da/gi,"#FFF").replace(/#7f8186/gi,"#B9BBBE")});
bar.querySelector(BDFDB.dotCN.noticebutton).addEventListener("click", e => {
var toast = BDFDB.showToast(wrongUrls.join("\n"),{type:"error"});
var toast = BDFDB.NotificationUtils.toast(wrongUrls.join("\n"),{type:"error"});
toast.style.overflow = "hidden";
console.log(wrongUrls.length == 1 ? wrongUrls[0] : wrongUrls);
});
@ -683,7 +683,7 @@ class PluginRepo {
let url = this.foundPlugins[i];
BDFDB.LibraryRequires.request(url, (error, response, body) => {
if (!response) {
if (url && BDFDB.getAllIndexes(this.foundPlugins, url).length < 2) this.foundPlugins.push(url);
if (url && BDFDB.ArrayUtils.getAllIndexes(this.foundPlugins, url).length < 2) this.foundPlugins.push(url);
}
else if (body && body.indexOf("404: Not Found") != 0 && response.statusCode == 200) {
let plugin = {};
@ -728,7 +728,7 @@ class PluginRepo {
if (valid) {
plugin.url = url;
this.loadedPlugins[url] = plugin;
let instPlugin = BDFDB.getPlugin(plugin.getName);
let instPlugin = BDFDB.BdUtils.getPlugin(plugin.getName);
if (instPlugin && this.getString(instPlugin.getAuthor()).toUpperCase() == plugin.getAuthor.toUpperCase() && this.getString(instPlugin.getVersion()) != plugin.getVersion && PluginUpdates && PluginUpdates.plugins && !PluginUpdates.plugins[url]) outdated++;
if (!this.cachedPlugins.includes(url)) newentries++;
}
@ -741,7 +741,7 @@ class PluginRepo {
var loadingtooltip = document.querySelector(".pluginrepo-loading-tooltip");
if (loadingtooltip) {
BDFDB.setInnerText(loadingtooltip, this.getLoadingTooltipText());
BDFDB.updateTooltipPosition(loadingtooltip);
BDFDB.TooltipUtils.update(loadingtooltip);
}
getPluginInfo(callback);
});
@ -783,10 +783,10 @@ class PluginRepo {
if (name.length > 1) {
name = name[1].split('"')[0];
var processResult = plugin => {
if (BDFDB.isObject(plugin)) {
if (BDFDB.ObjectUtils.is(plugin)) {
plugin.url = url;
this.loadedPlugins[url] = plugin;
let instPlugin = BDFDB.getPlugin(plugin.getName);
let instPlugin = BDFDB.BdUtils.getPlugin(plugin.getName);
if (instPlugin && this.getString(instPlugin.getAuthor()).toUpperCase() == plugin.getAuthor.toUpperCase() && this.getString(instPlugin.getVersion()) != plugin.getVersion) outdated++;
if (!this.cachedPlugins.includes(url)) newentries++;
}
@ -849,20 +849,20 @@ class PluginRepo {
downloadPlugin (data) {
BDFDB.LibraryRequires.request(data.url, (error, response, body) => {
if (error) BDFDB.showToast(`Unable to download Plugin "${plugin.getName}".`, {type:"danger"});
if (error) BDFDB.NotificationUtils.toast(`Unable to download Plugin "${plugin.getName}".`, {type:"danger"});
else this.createPluginFile(data.url.split("/").pop(), body);
});
}
createPluginFile (filename, content) {
BDFDB.LibraryRequires.fs.writeFile(BDFDB.LibraryRequires.path.join(BDFDB.getPluginsFolder(), filename), content, (error) => {
if (error) BDFDB.showToast(`Unable to save Plugin "${filename}".`, {type:"danger"});
else BDFDB.showToast(`Successfully saved Plugin "${filename}".`, {type:"success"});
BDFDB.LibraryRequires.fs.writeFile(BDFDB.LibraryRequires.path.join(BDFDB.BdUtils.getPluginsFolder(), filename), content, (error) => {
if (error) BDFDB.NotificationUtils.toast(`Unable to save Plugin "${filename}".`, {type:"danger"});
else BDFDB.NotificationUtils.toast(`Successfully saved Plugin "${filename}".`, {type:"success"});
});
}
startPlugin (data) {
if (BDFDB.isPluginEnabled(data.name) == false) {
if (BDFDB.BdUtils.isPluginEnabled(data.name) == false) {
window.pluginModule.startPlugin(data.name);
console.log(`%c[${this.name}]%c`, "color: #3a71c1; font-weight: 700;", "", "Started Plugin " + data.name + ".");
}
@ -870,14 +870,14 @@ class PluginRepo {
deletePluginFile (data) {
let filename = data.url.split("/").pop();
BDFDB.LibraryRequires.fs.unlink(BDFDB.LibraryRequires.path.join(BDFDB.getPluginsFolder(), filename), (error) => {
if (error) BDFDB.showToast(`Unable to delete Plugin "${filename}".`, {type:"danger"});
else BDFDB.showToast(`Successfully deleted Plugin "${filename}".`);
BDFDB.LibraryRequires.fs.unlink(BDFDB.LibraryRequires.path.join(BDFDB.BdUtils.getPluginsFolder(), filename), (error) => {
if (error) BDFDB.NotificationUtils.toast(`Unable to delete Plugin "${filename}".`, {type:"danger"});
else BDFDB.NotificationUtils.toast(`Successfully deleted Plugin "${filename}".`);
});
}
stopPlugin (data) {
if (BDFDB.isPluginEnabled(data.name) == true) {
if (BDFDB.BdUtils.isPluginEnabled(data.name) == true) {
window.pluginModule.stopPlugin(data.name);
console.log(`%c[${this.name}]%c`, "color: #3a71c1; font-weight: 700;", "", "Stopped Plugin " + data.name + ".");
}

View File

@ -61,7 +61,7 @@ class ReadAllNotificationsButton {
var settings = BDFDB.getAllData(this, "settings");
var settingsitems = [], inneritems = [];
for (let key in settings) (!this.defaults.settings[key].inner ? settingsitems : inneritems).push(BDFDB.React.createElement(BDFDB.LibraryComponents.SettingsSwitch, {
for (let key in settings) (!this.defaults.settings[key].inner ? settingsitems : inneritems).push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSwitch, {
className: BDFDB.disCN.marginbottom8,
plugin: this,
keys: ["settings", key],
@ -77,12 +77,12 @@ class ReadAllNotificationsButton {
}
}
}));
settingsitems.push(BDFDB.React.createElement(BDFDB.LibraryComponents.SettingsPanelInner, {
settingsitems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsPanelInner, {
title: "When left clicking the 'read all' button mark following Elements as read:",
children: inneritems
}));
return BDFDB.createSettingsPanel(this, settingsitems);
return BDFDB.PluginUtils.createSettingsPanel(this, settingsitems);
}
//legacy
@ -109,13 +109,11 @@ class ReadAllNotificationsButton {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
stop () {
@ -124,7 +122,7 @@ class ReadAllNotificationsButton {
BDFDB.removeEles(".RANbutton-frame", ".RAMbutton");
BDFDB.removeClasses("RAN-added", "RAM-added");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -140,52 +138,52 @@ class ReadAllNotificationsButton {
insertnode.parentElement.insertBefore(ranbutton, insertnode);
ranbutton.addEventListener("click", () => {
let settings = BDFDB.getAllData(this, "settings");
if (settings.includeGuilds) BDFDB.markGuildAsRead(settings.includeMuted ? BDFDB.readServerList() : BDFDB.readUnreadServerList());
if (settings.includeDMs) BDFDB.markChannelAsRead(BDFDB.readDmList());
if (settings.includeGuilds) BDFDB.GuildUtils.markAsRead(settings.includeMuted ? BDFDB.GuildUtils.getAll() : BDFDB.GuildUtils.getUnread());
if (settings.includeDMs) BDFDB.DmUtils.markAsRead(BDFDB.DmUtils.getAll());
});
ranbutton.addEventListener("contextmenu", e => {
const itemGroup = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
const itemGroup = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
className: `BDFDB-contextMenuItemGroup ${this.name}-contextMenuItemGroup`,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.context_unreadguilds_text,
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-unreadguilds-contextMenuItem`,
action: e => {
BDFDB.closeContextMenu(BDFDB.getParentEle(BDFDB.dotCN.contextmenu, e.target));
BDFDB.markGuildAsRead(BDFDB.readUnreadServerList());
BDFDB.GuildUtils.markAsRead(BDFDB.GuildUtils.getUnread());
}
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.context_pingedguilds_text,
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-pingedguilds-contextMenuItem`,
action: e => {
BDFDB.closeContextMenu(BDFDB.getParentEle(BDFDB.dotCN.contextmenu, e.target));
BDFDB.markGuildAsRead(BDFDB.readPingedServerList());
BDFDB.GuildUtils.markAsRead(BDFDB.GuildUtils.getPinged());
}
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.context_mutedguilds_text,
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-mutedguilds-contextMenuItem`,
action: e => {
BDFDB.closeContextMenu(BDFDB.getParentEle(BDFDB.dotCN.contextmenu, e.target));
BDFDB.markGuildAsRead(BDFDB.readMutedServerList());
BDFDB.GuildUtils.markAsRead(BDFDB.GuildUtils.getMuted());
}
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.context_guilds_text,
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-guilds-contextMenuItem`,
action: e => {
BDFDB.closeContextMenu(BDFDB.getParentEle(BDFDB.dotCN.contextmenu, e.target));
this.addPinnedRecent(instance.props.channel.id);
BDFDB.markGuildAsRead(BDFDB.readServerList());
BDFDB.GuildUtils.markAsRead(BDFDB.GuildUtils.getAll());
}
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.context_dms_text,
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-dms-contextMenuItem`,
action: e => {
BDFDB.closeContextMenu(BDFDB.getParentEle(BDFDB.dotCN.contextmenu, e.target));
BDFDB.markChannelAsRead(BDFDB.readDmList());
BDFDB.DmUtils.markAsRead(BDFDB.DmUtils.getAll());
}
})
]

View File

@ -85,14 +85,12 @@ class RemoveNicknames {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
this.reseting = false;
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
@ -102,9 +100,9 @@ class RemoveNicknames {
this.reseting = true;
BDFDB.WebModules.forceAllUpdates(this);
BDFDB.ModuleUtils.forceAllUpdates(this);
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -112,7 +110,7 @@ class RemoveNicknames {
// begin of own functions
processMemberListItem (instance, wrapper, returnvalue) {
let user = BDFDB.getReactValue(instance, "props.user");
let user = BDFDB.ReactUtils.getValue(instance, "props.user");
if (user) {
let username = wrapper.querySelector(BDFDB.dotCN.memberusername);
if (username) BDFDB.setInnerText(username, this.getNewName(user, wrapper));
@ -120,7 +118,7 @@ class RemoveNicknames {
}
processMessageUsername (instance, wrapper, returnvalue) {
let message = BDFDB.getReactValue(instance, "props.message");
let message = BDFDB.ReactUtils.getValue(instance, "props.message");
if (message) {
let username = wrapper.querySelector(BDFDB.dotCN.messageusername);
if (username) BDFDB.setInnerText(username, this.getNewName(message.author, wrapper));
@ -128,7 +126,7 @@ class RemoveNicknames {
}
processTypingUsers (instance, wrapper, returnvalue) {
let users = !instance.props.typingUsers ? [] : Object.keys(instance.props.typingUsers).filter(id => id != BDFDB.myData.id).filter(id => !BDFDB.LibraryModules.FriendUtils.isBlocked(id)).map(id => BDFDB.LibraryModules.UserStore.getUser(id)).filter(id => id != null);
let users = !instance.props.typingUsers ? [] : Object.keys(instance.props.typingUsers).filter(id => id != BDFDB.UserUtils.me.id).filter(id => !BDFDB.LibraryModules.FriendUtils.isBlocked(id)).map(id => BDFDB.LibraryModules.UserStore.getUser(id)).filter(id => id != null);
wrapper.querySelectorAll("strong").forEach((username, i) => {
if (users[i] && username) BDFDB.setInnerText(username, this.getNewName(users[i]));
});
@ -150,7 +148,7 @@ class RemoveNicknames {
}
}
else if (instance.props.tag == "span" && instance.props.className.indexOf(BDFDB.disCN.mention) > -1) {
let render = BDFDB.getReactValue(instance, "_reactInternalFiber.return.return.stateNode.props.render");
let render = BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.return.return.stateNode.props.render");
if (typeof render == "function") {
var props = render().props;
if (props && props.user) BDFDB.setInnerText(wrapper, "@" + this.getNewName(props.user, wrapper));
@ -158,14 +156,14 @@ class RemoveNicknames {
}
}
else if (instance.props.tag == "div" && instance.props.className.indexOf(BDFDB.disCN.voiceuser) > -1) {
let user = BDFDB.getReactValue(instance, "_reactInternalFiber.return.memoizedProps.user");
let user = BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.return.memoizedProps.user");
if (user) {
let username = wrapper.querySelector(BDFDB.dotCN.voicename);
if (username) BDFDB.setInnerText(username, this.getNewName(user, username));
}
}
else if (instance.props.tag == "div" && instance.props.className.indexOf(BDFDB.disCN.autocompleterow) > -1) {
let user = BDFDB.getReactValue(instance, "_reactInternalFiber.return.memoizedProps.user");
let user = BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.return.memoizedProps.user");
if (user) {
let username = wrapper.querySelector(BDFDB.dotCN.marginleft8);
if (username) BDFDB.setInnerText(username, this.getNewName(user, username));
@ -176,7 +174,7 @@ class RemoveNicknames {
processStandardSidebarView (instance, wrapper, returnvalue) {
if (this.SettingsUpdated) {
delete this.SettingsUpdated;
BDFDB.WebModules.forceAllUpdates(this);
BDFDB.ModuleUtils.forceAllUpdates(this);
}
}
@ -184,14 +182,14 @@ class RemoveNicknames {
if (!info) return null;
let settings = BDFDB.getAllData(this, "settings");
let member = BDFDB.LibraryModules.MemberStore.getMember(BDFDB.LibraryModules.LastGuildStore.getGuildId(), info.id) || {};
let EditUsersData = (BDFDB.isPluginEnabled("EditUsers") ? BDFDB.loadData(info.id, "EditUsers", "users") : null) || {};
if (this.reseting || !member.nick || info.id == BDFDB.myData.id && !settings.replaceOwn || info.bot && !settings.replaceBots || this.ignoreElement(wrapper)) return EditUsersData.name || member.nick || info.username;
let EditUsersData = (BDFDB.BdUtils.isPluginEnabled("EditUsers") ? BDFDB.loadData(info.id, "EditUsers", "users") : null) || {};
if (this.reseting || !member.nick || info.id == BDFDB.UserUtils.me.id && !settings.replaceOwn || info.bot && !settings.replaceBots || this.ignoreElement(wrapper)) return EditUsersData.name || member.nick || info.username;
var username = EditUsersData.name || info.username;
return settings.addNickname ? (settings.swapPositions ? (member.nick + " (" + username + ")") : (username + " (" + member.nick + ")")) : username;
}
ignoreElement (id, wrapper) {
let allenabled = true, settings = BDFDB.filterObject(BDFDB.getAllData(this, "settings"), key => {return this.defaults.settings[key].inner;}, true);
let allenabled = true, settings = BDFDB.ObjectUtils.filter(BDFDB.getAllData(this, "settings"), key => {return this.defaults.settings[key].inner;}, true);
for (let i in settings) if (!settings[i]) {
allenabled = false;
break;

View File

@ -171,15 +171,13 @@ class RepoControls {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
this.dirs = {theme: BDFDB.getThemesFolder(), plugin: BDFDB.getPluginsFolder()};
this.dirs = {theme: BDFDB.BdUtils.getThemesFolder(), plugin: BDFDB.BdUtils.getPluginsFolder()};
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
@ -201,7 +199,7 @@ class RepoControls {
}
}
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -239,10 +237,10 @@ class RepoControls {
if (!path) return;
let button = BDFDB.htmlToElement(this.editButtonMarkup);
button.addEventListener("click", () => {
if (!BDFDB.LibraryRequires.electron.shell.openItem(path)) BDFDB.showToast(`Unable to open ${type} "${name}".`, {type:"danger"});;
if (!BDFDB.LibraryRequires.electron.shell.openItem(path)) BDFDB.NotificationUtils.toast(`Unable to open ${type} "${name}".`, {type:"danger"});;
});
button.addEventListener("mouseenter", e => {
BDFDB.createTooltip(`Edit ${type[0].toUpperCase() + type.slice(1)}`, e.currentTarget, {type:"top",selector:"repocontrols-editicon-tooltip"});
BDFDB.TooltipUtils.create(e.currentTarget, `Edit ${type[0].toUpperCase() + type.slice(1)}`, {type:"top",selector:"repocontrols-editicon-tooltip"});
});
controls.insertBefore(button, controls.firstElementChild);
}
@ -258,8 +256,8 @@ class RepoControls {
button.addEventListener("click", () => {
let deleteFile = () => {
BDFDB.LibraryRequires.fs.unlink(path, (error) => {
if (error) BDFDB.showToast(`Unable to delete ${type} "${name}".`, {type:"danger"});
else BDFDB.showToast(`Successfully deleted ${type} "${name}".`, {type:"success"});
if (error) BDFDB.NotificationUtils.toast(`Unable to delete ${type} "${name}".`, {type:"danger"});
else BDFDB.NotificationUtils.toast(`Successfully deleted ${type} "${name}".`, {type:"success"});
});
};
if (!BDFDB.getData("confirmDelete", this, "settings")) deleteFile();
@ -268,7 +266,7 @@ class RepoControls {
});
});
button.addEventListener("mouseenter", e => {
BDFDB.createTooltip(`Delete ${type[0].toUpperCase() + type.slice(1)}`, e.currentTarget, {type:"top",selector:"repocontrols-trashicon-tooltip"});
BDFDB.TooltipUtils.create(e.currentTarget, `Delete ${type[0].toUpperCase() + type.slice(1)}`, {type:"top",selector:"repocontrols-trashicon-tooltip"});
});
controls.insertBefore(button, controls.firstElementChild);
}
@ -294,26 +292,26 @@ class RepoControls {
orderfilter.setAttribute("option", sortings.order);
orderfilter.innerText = this.sortings.order[sortings.order];
BDFDB.addChildEventListener(repocontrols, "keyup", BDFDB.dotCN.searchbarinput, () => {
BDFDB.ListenerUtils.addToChildren(repocontrols, "keyup", BDFDB.dotCN.searchbarinput, () => {
clearTimeout(repocontrols.searchTimeout);
repocontrols.searchTimeout = setTimeout(() => {this.sortEntries(container, repocontrols);},1000);
});
BDFDB.addChildEventListener(repocontrols, "click", BDFDB.dotCN.searchbarclear + BDFDB.dotCN.searchbarvisible, () => {
BDFDB.ListenerUtils.addToChildren(repocontrols, "click", BDFDB.dotCN.searchbarclear + BDFDB.dotCN.searchbarvisible, () => {
this.sortEntries(container, repocontrols);
});
BDFDB.addChildEventListener(repocontrols, "click", ".btn-enableall", e => {
BDFDB.ListenerUtils.addToChildren(repocontrols, "click", ".btn-enableall", e => {
this.toggleAll(type, container, true);
});
BDFDB.addChildEventListener(repocontrols, "click", ".btn-disableall", e => {
BDFDB.ListenerUtils.addToChildren(repocontrols, "click", ".btn-disableall", e => {
this.toggleAll(type, container, false);
});
BDFDB.addChildEventListener(repocontrols, "click", ".sort-filter", e => {
BDFDB.ListenerUtils.addToChildren(repocontrols, "click", ".sort-filter", e => {
BDFDB.createSortPopout(e.currentTarget, this.sortPopoutMarkup, () => {
BDFDB.saveData("sort", sortfilter.getAttribute("option"), this, "sortings");
this.sortEntries(container, repocontrols);
});
});
BDFDB.addChildEventListener(repocontrols, "click", ".order-filter", e => {
BDFDB.ListenerUtils.addToChildren(repocontrols, "click", ".order-filter", e => {
BDFDB.createSortPopout(e.currentTarget, this.orderPopoutMarkup, () => {
BDFDB.saveData("order", orderfilter.getAttribute("option"), this, "sortings");
this.sortEntries(container, repocontrols);
@ -355,9 +353,9 @@ class RepoControls {
let searchstring = repocontrols.querySelector(BDFDB.dotCN.searchbarinput).value.replace(/[<|>]/g, "").toUpperCase();
let sortings = BDFDB.getAllData(this, "sortings");
let entries = BDFDB.filterObject(container.entries, entry => {return entry.search.indexOf(searchstring) > -1 ? entry : null;});
entries = BDFDB.sortObject(entries, sortings.sort);
if (sortings.order == "desc") entries = BDFDB.reverseObject(entries);
let entries = BDFDB.ObjectUtils.filter(container.entries, entry => {return entry.search.indexOf(searchstring) > -1 ? entry : null;});
entries = BDFDB.ObjectUtils.sort(entries, sortings.sort);
if (sortings.order == "desc") entries = BDFDB.ObjectUtils.reverse(entries);
let entrypositions = Object.keys(entries);
for (let li of container.children) {
let name = li.getAttribute("data-name");

View File

@ -44,18 +44,16 @@ class RevealAllSpoilersOption {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.PluginUtils.init(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;
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -67,12 +65,12 @@ class RevealAllSpoilersOption {
let messagediv = BDFDB.getParentEle(BDFDB.dotCN.messagegroup + "> [aria-disabled]", instance.props.target);
if (!messagediv || !messagediv.querySelector(BDFDB.dotCN.spoilerhidden)) return;
let [children, index] = BDFDB.getContextMenuGroupAndIndex(returnvalue, ["FluxContainer(MessageDeveloperModeGroup)", "DeveloperModeGroup"]);
const itemgroup = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
const itemgroup = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
className: `BDFDB-contextMenuItemGroup ${this.name}-contextMenuItemGroup`,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: "Reveal all Spoilers",
hint: BDFDB.isPluginEnabled("MessageUtilities") ? BDFDB.getPlugin("MessageUtilities").getActiveShortcutString("__Reveal_Spoilers") : null,
hint: BDFDB.BdUtils.isPluginEnabled("MessageUtilities") ? BDFDB.BdUtils.getPlugin("MessageUtilities").getActiveShortcutString("__Reveal_Spoilers") : null,
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-reveal-contextMenuItem`,
action: e => {
BDFDB.closeContextMenu(menu);

View File

@ -88,18 +88,16 @@ class ReverseImageSearch {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.PluginUtils.init(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;
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -149,7 +147,7 @@ class ReverseImageSearch {
}
let engines = BDFDB.getAllData(this, "engines");
let items = [];
for (let key in engines) if (engines[key]) items.push(BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
for (let key in engines) if (engines[key]) items.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.defaults.engines[key].name,
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-engine-contextMenuItem`,
danger: key == "_all",
@ -161,16 +159,16 @@ class ReverseImageSearch {
else window.open(this.defaults.engines[key].url.replace(this.imgUrlReplaceString, encodeURIComponent(url)), "_blank");
}
}));
if (!items.length) items.push(BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
if (!items.length) items.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.submenu_disabled_text,
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-disabled-contextMenuItem`,
disabled: true
}));
let [children, index] = BDFDB.getContextMenuGroupAndIndex(returnvalue, ["FluxContainer(MessageDeveloperModeGroup)", "DeveloperModeGroup"]);
const itemgroup = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
const itemgroup = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
className: `BDFDB-contextMenuItemGroup ${this.name}-contextMenuItemGroup`,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuSubItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuSubItem, {
label: "Reverse Image Search",
className: `BDFDB-contextMenuSubItem ${this.name}-contextMenuSubItem ${this.name}-search-contextMenuSubItem`,
render: items

View File

@ -105,13 +105,11 @@ class SendLargeMessages {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
@ -119,7 +117,7 @@ class SendLargeMessages {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
this.stopping = true;
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -142,14 +140,14 @@ class SendLargeMessages {
this.showSendModal(modaltext);
}
};
BDFDB.addEventListener(this, textarea, "keyup", e => {
BDFDB.ListenerUtils.add(this, textarea, "keyup", e => {
clearTimeout(textarea.sendlargemessagestimeout);
textarea.sendlargemessagestimeout = setTimeout(() => {
modaltext = textarea.value;
checkTextarea();
},100);
});
BDFDB.addEventListener(this, textarea, "paste", e => {
BDFDB.ListenerUtils.add(this, textarea, "paste", e => {
modaltext = textarea.value.slice(0, textarea.selectionStart) + BDFDB.LibraryRequires.electron.clipboard.readText() + textarea.value.slice(textarea.selectionEnd);
setImmediate(() => {checkTextarea(textarea);});
});
@ -171,12 +169,12 @@ class SendLargeMessages {
BDFDB.appendModal(sendMessageModal);
BDFDB.addChildEventListener(sendMessageModal, "click", ".btn-send", e => {
BDFDB.ListenerUtils.addToChildren(sendMessageModal, "click", ".btn-send", e => {
let messages = this.formatText(textinput.value || "");
messages.forEach((message,i) => {
setTimeout(() => {
this.sendMessage(message);
if (i >= messages.length-1) BDFDB.showToast(this.labels.toast_allsent_text, {type:"success"});
if (i >= messages.length-1) BDFDB.NotificationUtils.toast(this.labels.toast_allsent_text, {type:"success"});
},this.messageDelay * i);
});
});

View File

@ -184,7 +184,7 @@ class ServerFolders {
BDFDB.initElements(settingspanel, this);
BDFDB.addEventListener(this, settingspanel, "click", ".removecustom-button", () => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".removecustom-button", () => {
BDFDB.openConfirmModal(this, "Are you sure you want to remove all custom icons?", () => {
BDFDB.removeAllData(this, "customicons");
});
@ -216,10 +216,10 @@ class ServerFolders {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
// REMOVE 08.10.2019
let foldersdata = BDFDB.sortObject(BDFDB.loadAllData(this, "folders"), "position");
let foldersdata = BDFDB.ObjectUtils.sort(BDFDB.loadAllData(this, "folders"), "position");
let folders = Object.keys(foldersdata).filter(n => n.indexOf("folder") == 0);
if (folders.length) BDFDB.openConfirmModal(this, `Old ServerFolders data detected!\nFound ${folders.length} old custom folders in the ServerFolders.config.json.\nPress the '${BDFDB.LanguageUtils.LanguageStrings.OKAY}' button to automatically create a native folder for each old folder and to automatically put the servers in them.`, "Convert?", () => {
let oldGuildFolders = Object.assign({}, BDFDB.LibraryModules.FolderStore.guildFolders);
@ -256,11 +256,9 @@ class ServerFolders {
BDFDB.saveAllData(newfoldersdata, this, "folders");
});
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
stop () {
@ -287,7 +285,7 @@ class ServerFolders {
foldericon.parentElement.parentElement.style.removeProperty("-webkit-mask");
}
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -313,7 +311,7 @@ class ServerFolders {
BDFDB.saveData(folderid, data, this, "folders");
}
let [children, index] = BDFDB.getContextMenuGroupAndIndex(returnvalue, "GuildFolderMarkReadItem");
const autoreaditem = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuToggleItem, {
const autoreaditem = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuToggleItem, {
label: this.labels.foldercontext_autoreadfolder_text,
className: `BDFDB-contextMenuToggleItem ${this.name}-contextMenuToggleItem ${this.name}-autoread-contextMenuToggleItem`,
active: data.autoRead,
@ -324,9 +322,9 @@ class ServerFolders {
});
if (index > -1) children.splice(index + 1, 0, autoreaditem);
else children.push(autoreaditem);
const muteGroup = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
const muteGroup = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
className: `BDFDB-contextMenuItemGroup ${this.name}-contextMenuItemGroup`,
children: BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuToggleItem, {
children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuToggleItem, {
label: this.labels.foldercontext_mutefolder_text,
className: `BDFDB-contextMenuToggleItem ${this.name}-contextMenuToggleItem ${this.name}-mutefolder-contextMenuToggleItem`,
active: muted,
@ -338,9 +336,9 @@ class ServerFolders {
})
});
returnvalue.props.children.splice(returnvalue.props.children.length - 1, 0, muteGroup);
const deleteGroup = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
const deleteGroup = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
className: `BDFDB-contextMenuItemGroup ${this.name}-contextMenuItemGroup`,
children: BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.foldercontext_removefolder_text,
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-removefolder-contextMenuItem`,
danger: true,
@ -357,7 +355,7 @@ class ServerFolders {
let folders = this.getFolders();
let folder = this.getFolderOfGuildId(guildid);
let addtofolderitems = [], openguilds = BDFDB.LibraryModules.FolderStore.getSortedGuilds().filter(n => !n.folderId).map(n => n.guilds[0]);
for (let i = 0; i < folders.length; i++) addtofolderitems.push(BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
for (let i = 0; i < folders.length; i++) addtofolderitems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: folders[i].folderName || (this.labels.modal_tabheader1_text + " #" + parseInt(i+1)),
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-addtofolder-contextMenuItem`,
action: e => {
@ -367,14 +365,14 @@ class ServerFolders {
}));
let [children, index] = BDFDB.getContextMenuGroupAndIndex(returnvalue, ["FluxContainer(MessageDeveloperModeGroup)", "DeveloperModeGroup"]);
const addType = !addtofolderitems.length ? "contextMenuItem" : "contextMenuSubItem";
const itemgroup = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
const itemgroup = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
className: `BDFDB-contextMenuItemGroup ${this.name}-contextMenuItemGroup`,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuSubItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuSubItem, {
label: this.labels.servercontext_serverfolders_text,
className: `BDFDB-contextMenuSubItem ${this.name}-contextMenuSubItem ${this.name}-guild-contextMenuSubItem`,
render: folder ? [
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.serversubmenu_removefromfolder_text,
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-removefromfolder-contextMenuItem`,
danger: true,
@ -384,7 +382,7 @@ class ServerFolders {
}
})
] : [
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.serversubmenu_createfolder_text,
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-createfolder-contextMenuItem`,
disabled: !openguilds.length,
@ -393,7 +391,7 @@ class ServerFolders {
this.openFolderCreationMenu(openguilds, guildid);
}
}),
BDFDB.React.createElement(BDFDB.LibraryComponents[addType.charAt(0).toUpperCase() + addType.slice(1)], {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents[addType.charAt(0).toUpperCase() + addType.slice(1)], {
label: this.labels.serversubmenu_addtofolder_text,
className: `BDFDB-${addType} ${this.name}-${addType} ${this.name}-addtofolder-${addType}`,
disabled: !addtofolderitems.length,
@ -439,7 +437,7 @@ class ServerFolders {
if (data.autoRead && (state.unread || state.badge > 0)) {
clearTimeout(this.folderReads[state.folderId]);
this.folderReads[state.folderId] = setTimeout(() => {
BDFDB.markGuildAsRead(instance.props.guildIds);
BDFDB.GuildUtils.markAsRead(instance.props.guildIds);
}, 10000);
}
if (state.expanded) setImmediate(() => {
@ -465,7 +463,7 @@ class ServerFolders {
if (!this.foldercontentguilds) return;
if (instance.props && instance.props.guild) {
if (methodnames.includes("componentDidMount")) {
BDFDB.addEventListener(this, wrapper, "click", () => {setImmediate(() => {
BDFDB.ListenerUtils.add(this, wrapper, "click", () => {setImmediate(() => {
let folder = this.getFolderOfGuildId(instance.props.guild.id);
let folderid = folder ? folder.folderId : null;
let settings = BDFDB.getAllData(this, "settings");
@ -524,17 +522,17 @@ class ServerFolders {
BDFDB.setColorSwatches(root, data.color3);
BDFDB.setColorSwatches(root, data.color4);
BDFDB.addChildEventListener(root, "change", "input[type='file'][option]", e => {
BDFDB.ListenerUtils.addToChildren(root, "change", "input[type='file'][option]", e => {
let input = e.currentTarget, file = input.files[0];
if (file) setImmediate(() => {this.fetchCustomIcon(root, input.getAttribute("option"))});
});
BDFDB.addChildEventListener(root, "keyup", "input[type='text'][option]", e => {
BDFDB.ListenerUtils.addToChildren(root, "keyup", "input[type='text'][option]", e => {
if (e.which == 13) this.fetchCustomIcon(root, e.currentTarget.getAttribute("option"));
});
BDFDB.addChildEventListener(root, "click", ".btn-addcustom", () => {
BDFDB.ListenerUtils.addToChildren(root, "click", ".btn-addcustom", () => {
this.saveCustomIcon(root);
});
BDFDB.addChildEventListener(root, "click", BDFDB.dotCNS.modalfooter + BDFDB.dotCN.button, e => {
BDFDB.ListenerUtils.addToChildren(root, "click", BDFDB.dotCNS.modalfooter + BDFDB.dotCN.button, e => {
var olddata = Object.assign({}, data);
var selectedIcon = root.querySelector(".ui-icon-picker-icon.selected");
data.iconID = selectedIcon.getAttribute("value");
@ -553,7 +551,7 @@ class ServerFolders {
data.icons.openicon = folderIcons[data.iconID] ? (!isCustom ? this.createBase64SVG(folderIcons[data.iconID].openicon, data.color1, data.color2) : folderIcons[data.iconID].openicon) : null;
data.icons.closedicon = folderIcons[data.iconID] ? (!isCustom ? this.createBase64SVG(folderIcons[data.iconID].closedicon, data.color1, data.color2) : folderIcons[data.iconID].closedicon) : null;
BDFDB.saveData(folderid, data, this, "folders");
instance.handleColorChange(data.color1 ? parseInt(BDFDB.colorCONVERT(data.color1 && BDFDB.isObject(data.color1) ? data.color1[Object.keys(data.color1)[0]] : data.color1, "HEX").slice(1), 16) : null);
instance.handleColorChange(data.color1 ? parseInt(BDFDB.colorCONVERT(data.color1 && BDFDB.ObjectUtils.is(data.color1) ? data.color1[Object.keys(data.color1)[0]] : data.color1, "HEX").slice(1), 16) : null);
this.changeFolder(folderid);
}
});
@ -566,7 +564,7 @@ class ServerFolders {
if (this.SettingsUpdated && this.foldercontent) {
delete this.SettingsUpdated;
this.folderStates = {};
BDFDB.WebModules.forceAllUpdates(this, "GuildFolder");
BDFDB.ModuleUtils.forceAllUpdates(this, "GuildFolder");
}
}
@ -589,7 +587,7 @@ class ServerFolders {
return;
}
}
BDFDB.showToast("Use a valid direct link to an image source. They usually end on something like .png, .jpg or .gif.", {type:"danger"});
BDFDB.NotificationUtils.toast("Use a valid direct link to an image source. They usually end on something like .png, .jpg or .gif.", {type:"danger"});
});
}
else {
@ -602,7 +600,7 @@ class ServerFolders {
});
}
else {
BDFDB.showToast("Could not fetch file. Please make sure the file exists.", {type:"danger"});
BDFDB.NotificationUtils.toast("Could not fetch file. Please make sure the file exists.", {type:"danger"});
}
}
@ -653,12 +651,10 @@ class ServerFolders {
BDFDB.addClass(iconpreviewswitching, "nopic");
iconpreviewswitchinginner.style.removeProperty("background-image");
clearInterval(iconpreviewswitching.switchInterval);
BDFDB.showToast(`Custom Icon was added to selection.`, {type:"success"});
BDFDB.NotificationUtils.toast(`Custom Icon was added to selection.`, {type:"success"});
this.setIcons(modal, modal.querySelector(".ui-icon-picker-icon.selected").getAttribute("value"));
}
else {
BDFDB.showToast(`Add an image for the open and the closed icon.`, {type:"danger"});
}
else BDFDB.NotificationUtils.toast(`Add an image for the open and the closed icon.`, {type:"danger"});
}
generateID (prefix) {
@ -688,22 +684,22 @@ class ServerFolders {
setIcon(wrapper.querySelector(`.ui-icon-picker-icon[value="${folderIcons[selection] ? selection : -1}"]`), false, true);
BDFDB.addChildEventListener(wrapper, "click", ".ui-icon-picker-icon", e => {
BDFDB.ListenerUtils.addToChildren(wrapper, "click", ".ui-icon-picker-icon", e => {
if (BDFDB.containsClass(e.target, BDFDB.disCN.hovercardbutton)) return;
setIcon(wrapper.querySelector(".ui-icon-picker-icon.selected"), false, false);
setIcon(e.currentTarget, true, true);
});
BDFDB.addChildEventListener(wrapper, "click", BDFDB.dotCN.hovercardbutton, e => {
BDFDB.ListenerUtils.addToChildren(wrapper, "click", BDFDB.dotCN.hovercardbutton, e => {
if (BDFDB.containsClass(e.currentTarget.parentElement, "selected")) return;
BDFDB.removeData(e.currentTarget.getAttribute("value"), this, "customicons");
e.currentTarget.parentElement.remove();
BDFDB.showToast(`Custom Icon was deleted.`, {type:"success"});
BDFDB.NotificationUtils.toast(`Custom Icon was deleted.`, {type:"success"});
});
BDFDB.addChildEventListener(wrapper, "mouseenter", ".ui-icon-picker-icon", e => {
BDFDB.ListenerUtils.addToChildren(wrapper, "mouseenter", ".ui-icon-picker-icon", e => {
setIcon(e.currentTarget, true);
if (e.currentTarget.getAttribute("value") == -1) BDFDB.createTooltip(BDFDB.LanguageUtils.LanguageStrings.DEFAULT, e.currentTarget, {type:"top"});
if (e.currentTarget.getAttribute("value") == -1) BDFDB.TooltipUtils.create(e.currentTarget, BDFDB.LanguageUtils.LanguageStrings.DEFAULT, {type:"top"});
});
BDFDB.addChildEventListener(wrapper, "mouseleave", ".ui-icon-picker-icon", e => {
BDFDB.ListenerUtils.addToChildren(wrapper, "mouseleave", ".ui-icon-picker-icon", e => {
setIcon(e.currentTarget, false);
});
@ -771,7 +767,7 @@ class ServerFolders {
}
changeFolder (folderid, wrapper) {
wrapper = wrapper || BDFDB.getFolderDiv(folderid);
wrapper = wrapper || BDFDB.FolderUtils.getDiv(folderid);
if (wrapper) {
let folderinner = wrapper.querySelector(`${BDFDB.dotCN.guildfolderexpandendbackground} ~ ${BDFDB.dotCNS.guildouter + BDFDB.dotCN.guildinner}`);
let foldericon = wrapper.querySelector(BDFDB.dotCN.guildfolder);
@ -785,7 +781,7 @@ class ServerFolders {
if (BDFDB.getData("showCountBadge", this, "settings")) {
folderinner.appendChild(BDFDB.htmlToElement(`<div class="${BDFDB.disCN.guildupperbadge} count" style="opacity: 1; transform: translate(0px, 0px);"><div class="${BDFDB.disCN.guildbadgenumberbadge}" style="background-color: rgb(114, 137, 218); width: ${folder.guildIds.length > 99 ? 28 : (folder.guildIds.length > 9 ? 22 : 16)}px; padding-right: ${folder.guildIds.length > 99 ? 0 : (folder.guildIds.length > 9 ? 0 : 1)}px;">${folder.guildIds.length}</div></div>`));
let width = folder.guildIds.length > 99 ? 36 : (folder.guildIds.length > 9 ? 30 : 24);
foldericon.parentElement.parentElement.style.setProperty("-webkit-mask", `url(data:image/svg+xml;base64,${btoa(`<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" fill="black" x="0" y="0" width="48" height="48"><path d="M ${width-7} 0 C ${width-5} 2 ${width-4} 5 ${width-4} 8 C ${width-4} ${width/1.8+3} 15 20 8 20 C 5 20 2 19 0 17 L 0 50 L 50 50 L 50 0 L 17 0 z"></path></svg>`)})`);
foldericon.parentElement.parentElement.style.setProperty("-webkit-mask", `url(data:image/svg+xml;base64,${btoa(`<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" fill="black" x="0" y="0" width="48" height="48"><path d="M ${width-7} 0 C ${width-5} 2 ${width-4} 5 ${width-4} 8 C ${width-4} ${width/1.8+3} 15 20 8 20 C 5 20 2 19 0 17 L 0 50 L 50 50 L 50 0 L 17 0 z"></path></svg>`)}) center/cover no-repeat`);
}
let icontype = BDFDB.LibraryModules.FolderUtils.isFolderExpanded(folderid) ? "openicon" : "closedicon";
let icon = icontype != "closedicon" || data.useCloseIcon ? data.icons[icontype] : null;
@ -795,13 +791,13 @@ class ServerFolders {
folderinner.removeEventListener("mouseenter", folderinner.ServerFoldersTooltipListener);
folderinner.removeEventListener("mousedown", folderinner.ServerFoldersClickListener);
if (data.color3 || data.color4) {
var isgradient3 = data.color3 && BDFDB.isObject(data.color3);
var isgradient4 = data.color4 && BDFDB.isObject(data.color4);
var isgradient3 = data.color3 && BDFDB.ObjectUtils.is(data.color3);
var isgradient4 = data.color4 && BDFDB.ObjectUtils.is(data.color4);
var bgColor = data.color3 ? (!isgradient3 ? BDFDB.colorCONVERT(data.color3, "RGBA") : BDFDB.colorGRADIENT(data.color3)) : "";
var fontColor = data.color4 ? (!isgradient4 ? BDFDB.colorCONVERT(data.color4, "RGBA") : BDFDB.colorGRADIENT(data.color4)) : "";
var folderName = folder.folderName || BDFDB.getReactValue(wrapper, "return.stateNode.props.defaultFolderName");
var folderName = folder.folderName || BDFDB.ReactUtils.getValue(wrapper, "return.stateNode.props.defaultFolderName");
folderinner.ServerFoldersTooltipListener = () => {
BDFDB.createTooltip(isgradient4 ? `<span style="pointer-events: none; -webkit-background-clip: text !important; color: transparent !important; background-image: ${fontColor} !important;">${BDFDB.encodeToHTML(folderName)}</span>` : folderName, folderinner, {type:"right", selector:"ServerFolders-tooltip", style:`${isgradient4 ? '' : `color: ${fontColor} !important; `}background: ${bgColor} !important; border-color: ${isgradient3 ? BDFDB.colorCONVERT(data.color3[0], "RGBA") : bgColor} !important;`, html:isgradient3, hide:true});
BDFDB.TooltipUtils.create(folderinner, isgradient4 ? `<span style="pointer-events: none; -webkit-background-clip: text !important; color: transparent !important; background-image: ${fontColor} !important;">${BDFDB.encodeToHTML(folderName)}</span>` : folderName, {type:"right", selector:"ServerFolders-tooltip", style:`${isgradient4 ? '' : `color: ${fontColor} !important; `}background: ${bgColor} !important; border-color: ${isgradient3 ? BDFDB.colorCONVERT(data.color3[0], "RGBA") : bgColor} !important;`, html:isgradient3, hide:true});
};
folderinner.addEventListener("mouseenter", folderinner.ServerFoldersTooltipListener);
}
@ -851,8 +847,8 @@ class ServerFolders {
createBase64SVG (paths, color1 = "#000000", color2 = "#FFFFFF") {
if (paths.indexOf("<path ") != 0) return paths;
let isgradient1 = color1 && BDFDB.isObject(color1);
let isgradient2 = color1 && BDFDB.isObject(color2);
let isgradient1 = color1 && BDFDB.ObjectUtils.is(color1);
let isgradient2 = color1 && BDFDB.ObjectUtils.is(color2);
let svg = `<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000" viewBox="-60 -50 1100 1100">`;
if (isgradient1) {
svg += `<linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="0%">`;
@ -872,8 +868,8 @@ class ServerFolders {
createCopyOfServer (folderid, guildid) {
if (!folderid || !guildid) return;
let guild = BDFDB.LibraryModules.GuildStore.getGuild(guildid);
let guilddiv = BDFDB.getServerDiv(guildid);
let props = BDFDB.getReactValue(guilddiv, "return.stateNode.props");
let guilddiv = BDFDB.GuildUtils.getDiv(guildid);
let props = BDFDB.ReactUtils.getValue(guilddiv, "return.stateNode.props");
if (!guild || !guilddiv || !props) return;
let guildcopy = guilddiv.cloneNode(true);
@ -950,18 +946,18 @@ class ServerFolders {
};
guildcopyinner.addEventListener("mouseenter", () => {
let EditServers = BDFDB.getPlugin("EditServers");
let EditServers = BDFDB.BdUtils.getPlugin("EditServers");
let ESdata = EditServers ? EditServers.getGuildData(guildid, guildcopyinner) : null;
if (ESdata && (ESdata.name || ESdata.color3 || ESdata.color4)) EditServers.changeTooltip(guild, guildcopyinner, "right");
else {
let folderData = BDFDB.loadData(folderid, this, "folders") || {};
let color3 = folderData.copyTooltipColor ? folderData.color3 : null;
let color4 = folderData.copyTooltipColor ? folderData.color4 : null;
let isgradient3 = color3 && BDFDB.isObject(color3);
let isgradient4 = color4 && BDFDB.isObject(color4);
let isgradient3 = color3 && BDFDB.ObjectUtils.is(color3);
let isgradient4 = color4 && BDFDB.ObjectUtils.is(color4);
let bgColor = color3 ? (!isgradient3 ? BDFDB.colorCONVERT(color3, "RGBA") : BDFDB.colorGRADIENT(color3)) : "";
let fontColor = color4 ? (!isgradient4 ? BDFDB.colorCONVERT(color4, "RGBA") : BDFDB.colorGRADIENT(color4)) : "";
BDFDB.createTooltip(isgradient4 ? `<span style="pointer-events: none; -webkit-background-clip: text !important; color: transparent !important; background-image: ${fontColor} !important;">${BDFDB.encodeToHTML(guild.name)}</span>` : guild.name, guildcopyinner, {type:"right", selector:"guild-folder-tooltip", style:`${isgradient4 ? '' : 'color: ' + fontColor + ' !important; '}background: ${bgColor} !important; border-color: ${isgradient3 ? BDFDB.colorCONVERT(color3[0], "RGBA") : bgColor} !important;`, html:isgradient3, hide:true});
BDFDB.TooltipUtils.create(guildcopyinner, isgradient4 ? `<span style="pointer-events: none; -webkit-background-clip: text !important; color: transparent !important; background-image: ${fontColor} !important;">${BDFDB.encodeToHTML(guild.name)}</span>` : guild.name, {type:"right", selector:"guild-folder-tooltip", style:`${isgradient4 ? '' : 'color: ' + fontColor + ' !important; '}background: ${bgColor} !important; border-color: ${isgradient3 ? BDFDB.colorCONVERT(color3[0], "RGBA") : bgColor} !important;`, html:isgradient3, hide:true});
}
if (guildicon && guildicon.src && guild.icon && guild.icon.startsWith("a_") && guild.features.has("ANIMATED_ICON") && guildicon.src.includes("discordapp.com/icons/")) {
guildicon.src = guildicon.src.replace(".webp", ".gif");
@ -973,7 +969,7 @@ class ServerFolders {
}
});
guildcopyinner.addEventListener("mouseleave", () => {
if (guildicon && guildicon.src && guild.icon && guild.icon.startsWith("a_") && guild.features.has("ANIMATED_ICON") && guildicon.src.includes("discordapp.com/icons/") && !BDFDB.getReactValue(BDFDB.getPlugin("AutoPlayGifs", true), "settings.guildList")) {
if (guildicon && guildicon.src && guild.icon && guild.icon.startsWith("a_") && guild.features.has("ANIMATED_ICON") && guildicon.src.includes("discordapp.com/icons/") && !BDFDB.ReactUtils.getValue(BDFDB.BdUtils.getPlugin("AutoPlayGifs", true), "settings.guildList")) {
guildicon.src = guildicon.src.replace(".gif", ".webp");
}
if (BDFDB.LibraryModules.LastGuildStore.getGuildId() != guildid) {
@ -982,7 +978,7 @@ class ServerFolders {
}
});
guildcopy.addEventListener("click", e => {
BDFDB.stopEvent(e);
BDFDB.ListenerUtils.stopEvent(e);
if (BDFDB.pressedKeys.includes(46)) this.removeGuildFromFolder(folderid, guildid);
else {
BDFDB.LibraryModules.GuildUtils.transitionToGuildSync(guild.id);
@ -992,7 +988,7 @@ class ServerFolders {
}
});
guildcopy.addEventListener("contextmenu", e => {
BDFDB.openGuildContextMenu(guilddiv, e);
BDFDB.GuildUtils.openMenu(guilddiv, e);
});
guildcopy.addEventListener("mousedown", e => {
let x = e.pageX, y = e.pageY;
@ -1020,7 +1016,7 @@ class ServerFolders {
BDFDB.removeEles(placeholder, dragpreview);
BDFDB.toggleEles(guildcopy, true);
let dropfolderdiv = BDFDB.getParentEle(BDFDB.dotCN.guildfolderwrapper, e3.target);
let newfolderid = dropfolderdiv ? BDFDB.getFolderID(dropfolderdiv) : null;
let newfolderid = dropfolderdiv ? BDFDB.FolderUtils.getId(dropfolderdiv) : null;
if (newfolderid) {
if (newfolderid != folderid) {
BDFDB.removeEles(guildcopy);
@ -1076,7 +1072,7 @@ class ServerFolders {
let targetedguildsids = {};
let container = modal.querySelector(".entries");
BDFDB.addChildEventListener(modal, "click", ".btn-done", () => {
BDFDB.ListenerUtils.addToChildren(modal, "click", ".btn-done", () => {
let ids = [];
for (let id in targetedguildsids) if (targetedguildsids[id]) ids.push(id);
this.createFolder(ids);
@ -1084,7 +1080,7 @@ class ServerFolders {
for (let guild of guilds) {
if (container.firstElementChild) container.appendChild(BDFDB.htmlToElement(`<div class="${BDFDB.disCN.divider}"></div>`));
let entry = BDFDB.htmlToElement(`<div class="${BDFDB.disCNS.flex + BDFDB.disCNS.horizontal + BDFDB.disCNS.justifystart + BDFDB.disCNS.aligncenter + BDFDB.disCNS.nowrap + BDFDB.disCNS.margintop4 + BDFDB.disCN.marginbottom4} entry" style="flex: 1 1 auto;">${BDFDB.createServerDivCopy(guild.id, {size: 48}).outerHTML}<h3 class="${BDFDB.disCNS.titledefault + BDFDB.disCNS.marginreset + BDFDB.disCNS.weightmedium + BDFDB.disCNS.titlesize16 + BDFDB.disCNS.height24 + BDFDB.disCNS.flexchild + BDFDB.disCN.overflowellipsis}" style="flex: 1 1 auto; white-space: nowrap;">${BDFDB.encodeToHTML(guild.name)}</h3><div class="${BDFDB.disCNS.flexchild + BDFDB.disCNS.switchenabled + BDFDB.disCNS.switch + BDFDB.disCNS.switchvalue + BDFDB.disCNS.switchsizedefault + BDFDB.disCNS.switchsize + BDFDB.disCN.switchthemedefault}" style="flex: 0 0 auto;"><input type="checkbox" class="${BDFDB.disCNS.switchinnerenabled + BDFDB.disCN.switchinner}"></div></div>`);
let entry = BDFDB.htmlToElement(`<div class="${BDFDB.disCNS.flex + BDFDB.disCNS.horizontal + BDFDB.disCNS.justifystart + BDFDB.disCNS.aligncenter + BDFDB.disCNS.nowrap + BDFDB.disCNS.margintop4 + BDFDB.disCN.marginbottom4} entry" style="flex: 1 1 auto;">${BDFDB.GuildUtils.createCopy(guild.id, {size: 48}).outerHTML}<h3 class="${BDFDB.disCNS.titledefault + BDFDB.disCNS.marginreset + BDFDB.disCNS.weightmedium + BDFDB.disCNS.titlesize16 + BDFDB.disCNS.height24 + BDFDB.disCNS.flexchild + BDFDB.disCN.overflowellipsis}" style="flex: 1 1 auto; white-space: nowrap;">${BDFDB.encodeToHTML(guild.name)}</h3><div class="${BDFDB.disCNS.flexchild + BDFDB.disCNS.switchenabled + BDFDB.disCNS.switch + BDFDB.disCNS.switchvalue + BDFDB.disCNS.switchsizedefault + BDFDB.disCNS.switchsize + BDFDB.disCN.switchthemedefault}" style="flex: 0 0 auto;"><input type="checkbox" class="${BDFDB.disCNS.switchinnerenabled + BDFDB.disCN.switchinner}"></div></div>`);
container.appendChild(entry);
let switchinput = entry.querySelector(BDFDB.dotCN.switchinner);
switchinput.checked = guild.id == initguildid;
@ -1141,7 +1137,7 @@ class ServerFolders {
if (oldGuildFolders[i].folderId) {
let newFolder = Object.assign({}, oldGuildFolders[i]);
if (oldGuildFolders[i].folderId == folderid) newFolder.guildIds.push(guildid);
else BDFDB.removeFromArray(newFolder.guildIds, guildid);
else BDFDB.ArrayUtils.remove(newFolder.guildIds, guildid);
guildFolders.push(newFolder);
}
else if (oldGuildFolders[i].guildIds[0] != guildid) guildFolders.push(oldGuildFolders[i]);
@ -1159,7 +1155,7 @@ class ServerFolders {
for (let i in oldGuildFolders) {
if (oldGuildFolders[i].folderId == folderid) {
let newFolder = Object.assign({}, oldGuildFolders[i]);
BDFDB.removeFromArray(newFolder.guildIds, guildid);
BDFDB.ArrayUtils.remove(newFolder.guildIds, guildid);
guildFolders.push(newFolder);
guildFolders.push({guildIds:[guildid]});
}
@ -1190,7 +1186,7 @@ class ServerFolders {
}
setLabelsByLanguage () {
switch (BDFDB.getDiscordLanguage().id) {
switch (BDFDB.LanguageUtils.getLanguage().id) {
case "hr": //croatian
return {
servercontext_serverfolders_text: "Poslužitelj mapu",

View File

@ -89,10 +89,10 @@ class ServerHider {
BDFDB.initElements(settingspanel, this);
BDFDB.addEventListener(this, settingspanel, "click", ".reset-button", () => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".reset-button", () => {
BDFDB.openConfirmModal(this, "Are you sure you want to reset all servers?", () => {
BDFDB.removeAllData(this, "servers");
BDFDB.readServerList().forEach(info => {if (!info.div.getAttribute("folder")) BDFDB.toggleEles(info.div, false);});
BDFDB.GuildUtils.getAll().forEach(info => {if (!info.div.getAttribute("folder")) BDFDB.toggleEles(info.div, false);});
});
});
return settingspanel;
@ -122,26 +122,24 @@ class ServerHider {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
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;
BDFDB.readServerList().forEach(info => {
BDFDB.GuildUtils.getAll().forEach(info => {
if (info.div.ServerHiderChangeObserver && typeof info.div.ServerHiderChangeObserver.disconnect == "function") info.div.ServerHiderChangeObserver.disconnect();
if (!info.div.getAttribute("folder")) BDFDB.toggleEles(info.div, true);
delete info.div.ServerHiderChanged;
});
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -158,16 +156,16 @@ class ServerHider {
if (document.querySelector(".BDFDB-modal")) return;
if (instance.props && instance.props.target && instance.props.type.indexOf("GUILD_ICON_") == 0 && !menu.querySelector(`${this.name}-contextMenuSubItem`)) {
let [children, index] = BDFDB.getContextMenuGroupAndIndex(returnvalue, ["FluxContainer(MessageDeveloperModeGroup)", "DeveloperModeGroup"]);
const itemgroup = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
const itemgroup = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
className: `BDFDB-contextMenuItemGroup ${this.name}-contextMenuItemGroup`,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuSubItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuSubItem, {
label: this.labels.context_serverhider_text,
className: `BDFDB-contextMenuSubItem ${this.name}-contextMenuSubItem`,
render: [BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
render: [BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
className: `BDFDB-contextMenuItemGroup ${this.name}-contextMenuItemGroup`,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.submenu_openhidemenu_text,
className: `BDFDB-ContextMenuItem ${this.name}-ContextMenuItem ${this.name}-hidemenu-ContextMenuItem`,
action: e => {
@ -175,7 +173,7 @@ class ServerHider {
this.showServerModal();
}
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.submenu_hideserver_text,
className: `BDFDB-ContextMenuItem ${this.name}-ContextMenuItem ${this.name}-hideserver-ContextMenuItem`,
disabled: !(instance.props.guild && !instance.props.target.getAttribute("folder")),
@ -207,7 +205,7 @@ class ServerHider {
let container = serverHiderModal.querySelector(".entries");
if (!container) return;
BDFDB.addChildEventListener(serverHiderModal, "click", ".btn-all", () => {
BDFDB.ListenerUtils.addToChildren(serverHiderModal, "click", ".btn-all", () => {
let firstcheckbox = serverHiderModal.querySelector(".serverhiderCheckbox");
firstcheckbox.click();
serverHiderModal.querySelectorAll(".serverhiderCheckbox").forEach(checkbox => {
@ -215,14 +213,14 @@ class ServerHider {
});
});
for (let info of BDFDB.readServerList()) {
for (let info of BDFDB.GuildUtils.getAll()) {
if (!info.div.getAttribute("folder")) {
if (container.firstElementChild) container.appendChild(BDFDB.htmlToElement(`<div class="${BDFDB.disCN.divider}"></div>`));
let entry = BDFDB.htmlToElement(this.serverEntryMarkup);
container.appendChild(entry);
let name = entry.querySelector(".serverhiderName");
name.innerText = info.name || "";
name.parentElement.insertBefore(BDFDB.createServerDivCopy(info, {click: () => {BDFDB.removeEles(serverHiderModal);}, menu: true, size: 48}), name);
name.parentElement.insertBefore(BDFDB.GuildUtils.createCopy(info, {click: () => {BDFDB.removeEles(serverHiderModal);}, menu: true, size: 48}), name);
let hidecheckbox = entry.querySelector(".serverhiderCheckbox");
hidecheckbox.checked = !BDFDB.isEleHidden(info.div);
hidecheckbox.addEventListener("click", e => {
@ -239,20 +237,20 @@ class ServerHider {
if (!guilddiv || guilddiv.getAttribute("folder")) return;
BDFDB.toggleEles(guilddiv, visible);
let hiddenservers = BDFDB.loadData("hiddenservers", this, "hiddenservers") || [];
BDFDB.removeFromArray(hiddenservers, info.id);
BDFDB.ArrayUtils.remove(hiddenservers, info.id);
if (!visible) {
if (BDFDB.getReactValue(guilddiv, "return.stateNode.props").unread) this.unreadServer(info.id);
if (BDFDB.ReactUtils.getValue(guilddiv, "return.stateNode.props").unread) this.unreadServer(info.id);
hiddenservers.push(info.id);
}
BDFDB.saveData("hiddenservers", hiddenservers, this, "hiddenservers");
}
unreadServer (id) {
if (BDFDB.getData("clearNotifications", this, "settings") && !this.isInFolder(id)) BDFDB.markGuildAsRead(id);
if (BDFDB.getData("clearNotifications", this, "settings") && !this.isInFolder(id)) BDFDB.GuildUtils.markAsRead(id);
}
isInFolder (id) {
if (!BDFDB.isPluginEnabled("ServerFolders")) return false;
if (!BDFDB.BdUtils.isPluginEnabled("ServerFolders")) return false;
let folders = BDFDB.loadAllData("ServerFolders", "folders");
for (let folderid in folders) if ((folders[folderid].servers || []).includes(id)) return true;
return false;

View File

@ -152,13 +152,11 @@ class ShowHiddenChannels {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.WebModules.forceAllUpdates(this, "Channels");
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this, "Channels");
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
stop () {
@ -166,7 +164,7 @@ class ShowHiddenChannels {
this.stopping = true;
BDFDB.removeEles(".container-hidden");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -191,7 +189,7 @@ class ShowHiddenChannels {
processStandardSidebarView (instance, wrapper, returnvalue) {
if (this.SettingsUpdated) {
delete this.SettingsUpdated;
BDFDB.WebModules.forceAllUpdates(this, "Channels");
BDFDB.ModuleUtils.forceAllUpdates(this, "Channels");
}
}
@ -220,7 +218,7 @@ class ShowHiddenChannels {
}
}
}
if (BDFDB.isUserAllowedTo("VIEW_CHANNEL", BDFDB.myData.id, channel.id)) isHidden = false;
if (BDFDB.UserUtils.can("VIEW_CHANNEL", BDFDB.UserUtils.me.id, channel.id)) isHidden = false;
if (isHidden) hiddenChannels[channel.type].push(channel);
}
}
@ -229,7 +227,7 @@ class ShowHiddenChannels {
var count = 0;
for (let type in BDFDB.DiscordConstants.ChannelTypes) {
if (this.settingsMap[type] && !settings[this.settingsMap[type]]) hiddenChannels[BDFDB.DiscordConstants.ChannelTypes[type]] = [];
BDFDB.sortArrayByKey(hiddenChannels[BDFDB.DiscordConstants.ChannelTypes[type]], "name");
BDFDB.ArrayUtils.keySort(hiddenChannels[BDFDB.DiscordConstants.ChannelTypes[type]], "name");
count += hiddenChannels[BDFDB.DiscordConstants.ChannelTypes[type]].length;
}
hiddenChannels.count = count;
@ -256,8 +254,8 @@ class ShowHiddenChannels {
}
let channellist = document.querySelector(BDFDB.dotCNS.channels + BDFDB.dotCN.scroller);
if (channellist) {
BDFDB.removeEventListener(this, channellist, "mouseenter", BDFDB.dotCNC.channelcontainerdefault + BDFDB.dotCN.categorycontainerdefault);
if (settings.showForNormal) BDFDB.addEventListener(this, channellist, "mouseenter", BDFDB.dotCNC.channelcontainerdefault + BDFDB.dotCN.categorycontainerdefault, e => {
BDFDB.ListenerUtils.remove(this, channellist, "mouseenter", BDFDB.dotCNC.channelcontainerdefault + BDFDB.dotCN.categorycontainerdefault);
if (settings.showForNormal) BDFDB.ListenerUtils.add(this, channellist, "mouseenter", BDFDB.dotCNC.channelcontainerdefault + BDFDB.dotCN.categorycontainerdefault, e => {
if (!BDFDB.containsClass(e.currentTarget, "hidden-channel")) {
var channel = BDFDB.getKeyInformation({"node":e.currentTarget,"key":"channel"});
if (channel) this.showAccessRoles(guild, channel, e, true);
@ -274,11 +272,11 @@ class ShowHiddenChannels {
iconinner.setAttribute("d", this.channelIcons[type] ? this.channelIcons[type] : this.channelIcons.DEFAULT);
iconinner.setAttribute("mask", `url(#showHiddenChannelsMask${info.id})`);
this.setReactInstanceOfChannel(info, channel);
BDFDB.addChildEventListener(channel, "mouseenter mouseleave", BDFDB.dotCN.channelwrapper, e => {
BDFDB.ListenerUtils.addToChildren(channel, "mouseenter mouseleave", BDFDB.dotCN.channelwrapper, e => {
this.showAccessRoles(guild, info, e, false);
});
channel.addEventListener("click", () => {
BDFDB.showToast(`You can not ${this.channelMessage[type] ? this.channelMessage[type] : this.channelMessage.DEFAULT}&nbsp;&nbsp;<strong>${BDFDB.encodeToHTML(info.name)}</strong>.`, {type:"error", html:true});
BDFDB.NotificationUtils.toast(`You can not ${this.channelMessage[type] ? this.channelMessage[type] : this.channelMessage.DEFAULT}&nbsp;&nbsp;<strong>${BDFDB.encodeToHTML(info.name)}</strong>.`, {type:"error", html:true});
});
channel.addEventListener("contextmenu", e => {
this.createHiddenObjContextMenu(guild, info, type, e);
@ -299,20 +297,20 @@ class ShowHiddenChannels {
}
setReactInstanceOfChannel (guild, div) {
var reactInstance = BDFDB.React.createElement(div);
var reactInstance = BDFDB.ReactUtils.createElement(div);
reactInstance.memoizedProps = {channel:guild};
div.__reactInternalInstance = reactInstance;
}
createHiddenObjContextMenu (guild, channel, type, e) {
BDFDB.stopEvent(e);
BDFDB.openChannelContextMenu(channel, e);
BDFDB.ListenerUtils.stopEvent(e);
BDFDB.ChannelUtils.openMenu(channel, e);
}
showAccessRoles (guild, channel, e, allowed) {
if ((e.type != "mouseenter" && e.type != "mouseover") || !guild || !channel) return;
var settings = BDFDB.getAllData(this, "settings");
var myMember = BDFDB.LibraryModules.MemberStore.getMember(guild.id, BDFDB.myData.id);
var myMember = BDFDB.LibraryModules.MemberStore.getMember(guild.id, BDFDB.UserUtils.me.id);
var allowedRoles = [], allowedUsers = [], overwrittenRoles = [], deniedRoles = [], deniedUsers = [];
var everyoneDenied = false;
for (let id in channel.permissionOverwrites) {
@ -358,7 +356,7 @@ class ShowHiddenChannels {
let member = BDFDB.LibraryModules.MemberStore.getMember(guild.id, voicestate.userId);
if (user && member) {
let color = member.colorString ? BDFDB.colorCONVERT(member.colorString, "RGBCOMP") : [255,255,255];
htmlString += `<div class="${BDFDB.disCNS.userpopoutrole + BDFDB.disCNS.flex2 + BDFDB.disCNS.aligncenter} SHC-voiceuser" style="padding-left: 0; border-color: rgba(${color[0]}, ${color[1]}, ${color[2]}, 0.6);"><div class="${BDFDB.disCN.avatarwrapper}" role="img" aria-label="${user.username}" aria-hidden="false" style="width: 22px; height: 18px; z-index: 1003;"><svg width="18" height="18" viewBox="0 0 18 18" class="${BDFDB.disCN.avatarmask}" aria-hidden="true"><foreignObject x="0" y="0" width="18" height="18" mask="url(#svg-mask-avatar-default)"><img src="${BDFDB.getUserAvatar(user.id)}" alt=" " class="${BDFDB.disCN.avatar}" aria-hidden="true"></foreignObject></svg></div><div class="${BDFDB.disCN.userpopoutrolecircle}" style="background-color: rgb(${color[0]}, ${color[1]}, ${color[2]});"></div><div class="${BDFDB.disCNS.userpopoutrolename}">${BDFDB.encodeToHTML(member.nick || user.username)}</div></div>`;
htmlString += `<div class="${BDFDB.disCNS.userpopoutrole + BDFDB.disCNS.flex2 + BDFDB.disCNS.aligncenter} SHC-voiceuser" style="padding-left: 0; border-color: rgba(${color[0]}, ${color[1]}, ${color[2]}, 0.6);"><div class="${BDFDB.disCN.avatarwrapper}" role="img" aria-label="${user.username}" aria-hidden="false" style="width: 22px; height: 18px; z-index: 1003;"><svg width="18" height="18" viewBox="0 0 18 18" class="${BDFDB.disCN.avatarmask}" aria-hidden="true"><foreignObject x="0" y="0" width="18" height="18" mask="url(#svg-mask-avatar-default)"><img src="${BDFDB.UserUtils.getAvatar(user.id)}" alt=" " class="${BDFDB.disCN.avatar}" aria-hidden="true"></foreignObject></svg></div><div class="${BDFDB.disCN.userpopoutrolecircle}" style="background-color: rgb(${color[0]}, ${color[1]}, ${color[2]});"></div><div class="${BDFDB.disCNS.userpopoutrolename}">${BDFDB.encodeToHTML(member.nick || user.username)}</div></div>`;
}
}
htmlString += `</div>`;
@ -380,7 +378,7 @@ class ShowHiddenChannels {
htmlString += `<div class="${BDFDB.disCN.marginbottom4}">Allowed Users:</div><div class="${BDFDB.disCNS.flex2 + BDFDB.disCN.wrap}">`;
for (let user of allowedUsers) {
let color = user.colorString ? BDFDB.colorCONVERT(user.colorString, "RGBCOMP") : [255,255,255];
htmlString += `<div class="${BDFDB.disCNS.userpopoutrole + BDFDB.disCNS.flex2 + BDFDB.disCNS.aligncenter} SHC-alloweduser" style="padding-left: 0; border-color: rgba(${color[0]}, ${color[1]}, ${color[2]}, 0.6);"><div class="${BDFDB.disCN.avatarwrapper}" role="img" aria-label="${user.username}" aria-hidden="false" style="width: 22px; height: 18px; z-index: 1003;"><svg width="18" height="18" viewBox="0 0 18 18" class="${BDFDB.disCN.avatarmask}" aria-hidden="true"><foreignObject x="0" y="0" width="18" height="18" mask="url(#svg-mask-avatar-default)"><img src="${BDFDB.getUserAvatar(user.id)}" alt=" " class="${BDFDB.disCN.avatar}" aria-hidden="true"></foreignObject></svg></div><div class="${BDFDB.disCN.userpopoutrolecircle}" style="background-color: rgb(${color[0]}, ${color[1]}, ${color[2]});"></div><div class="${BDFDB.disCNS.userpopoutrolename}">${BDFDB.encodeToHTML(user.nick || user.name)}</div></div>`;
htmlString += `<div class="${BDFDB.disCNS.userpopoutrole + BDFDB.disCNS.flex2 + BDFDB.disCNS.aligncenter} SHC-alloweduser" style="padding-left: 0; border-color: rgba(${color[0]}, ${color[1]}, ${color[2]}, 0.6);"><div class="${BDFDB.disCN.avatarwrapper}" role="img" aria-label="${user.username}" aria-hidden="false" style="width: 22px; height: 18px; z-index: 1003;"><svg width="18" height="18" viewBox="0 0 18 18" class="${BDFDB.disCN.avatarmask}" aria-hidden="true"><foreignObject x="0" y="0" width="18" height="18" mask="url(#svg-mask-avatar-default)"><img src="${BDFDB.UserUtils.getAvatar(user.id)}" alt=" " class="${BDFDB.disCN.avatar}" aria-hidden="true"></foreignObject></svg></div><div class="${BDFDB.disCN.userpopoutrolecircle}" style="background-color: rgb(${color[0]}, ${color[1]}, ${color[2]});"></div><div class="${BDFDB.disCNS.userpopoutrolename}">${BDFDB.encodeToHTML(user.nick || user.name)}</div></div>`;
}
htmlString += `</div>`;
}
@ -396,13 +394,13 @@ class ShowHiddenChannels {
htmlString += `<div class="${BDFDB.disCN.marginbottom4}">Denied Users:</div><div class="${BDFDB.disCNS.flex2 + BDFDB.disCN.wrap}">`;
for (let user of deniedUsers) {
let color = user.colorString ? BDFDB.colorCONVERT(user.colorString, "RGBCOMP") : [255,255,255];
htmlString += `<div class="${BDFDB.disCNS.userpopoutrole + BDFDB.disCNS.flex2 + BDFDB.disCNS.aligncenter} SHC-denieduser" style="padding-left: 0; border-color: rgba(${color[0]}, ${color[1]}, ${color[2]}, 0.6);"><div class="${BDFDB.disCN.avatarwrapper}" role="img" aria-label="${user.username}" aria-hidden="false" style="width: 22px; height: 18px; z-index: 1003;"><svg width="18" height="18" viewBox="0 0 18 18" class="${BDFDB.disCN.avatarmask}" aria-hidden="true"><foreignObject x="0" y="0" width="18" height="18" mask="url(#svg-mask-avatar-default)"><img src="${BDFDB.getUserAvatar(user.id)}" alt=" " class="${BDFDB.disCN.avatar}" aria-hidden="true"></foreignObject></svg></div><div class="${BDFDB.disCN.userpopoutrolecircle}" style="background-color: rgb(${color[0]}, ${color[1]}, ${color[2]});"></div><div class="${BDFDB.disCNS.userpopoutrolename}">${BDFDB.encodeToHTML(user.nick || user.name)}</div></div>`;
htmlString += `<div class="${BDFDB.disCNS.userpopoutrole + BDFDB.disCNS.flex2 + BDFDB.disCNS.aligncenter} SHC-denieduser" style="padding-left: 0; border-color: rgba(${color[0]}, ${color[1]}, ${color[2]}, 0.6);"><div class="${BDFDB.disCN.avatarwrapper}" role="img" aria-label="${user.username}" aria-hidden="false" style="width: 22px; height: 18px; z-index: 1003;"><svg width="18" height="18" viewBox="0 0 18 18" class="${BDFDB.disCN.avatarmask}" aria-hidden="true"><foreignObject x="0" y="0" width="18" height="18" mask="url(#svg-mask-avatar-default)"><img src="${BDFDB.UserUtils.getAvatar(user.id)}" alt=" " class="${BDFDB.disCN.avatar}" aria-hidden="true"></foreignObject></svg></div><div class="${BDFDB.disCN.userpopoutrolecircle}" style="background-color: rgb(${color[0]}, ${color[1]}, ${color[2]});"></div><div class="${BDFDB.disCNS.userpopoutrolename}">${BDFDB.encodeToHTML(user.nick || user.name)}</div></div>`;
}
htmlString += `</div>`;
}
if (htmlString) {
var width = window.outerWidth/2;
var tooltip = BDFDB.createTooltip(htmlString, e.currentTarget, {type:"right", selector:"showhiddenchannels-tooltip", html:true, style:`max-width: ${width < 200 ? 400 : width}px !important;`, delay:BDFDB.getData("hoverDelay", this, "amounts")});
var tooltip = BDFDB.TooltipUtils.create(e.currentTarget, htmlString, {type:"right", selector:"showhiddenchannels-tooltip", html:true, style:`max-width: ${width < 200 ? 400 : width}px !important;`, delay:BDFDB.getData("hoverDelay", this, "amounts")});
var style = getComputedStyle(e.currentTarget);
tooltip.style.setProperty("top", BDFDB.getRects(tooltip).top - style.paddingBottom.replace("px","")/2 + style.paddingTop.replace("px","")/2 + "px");
}

View File

@ -87,13 +87,11 @@ class ShowImageDetails {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
stop () {
@ -102,7 +100,7 @@ class ShowImageDetails {
document.querySelectorAll(".image-details-added").forEach(image => {this.resetImage(image);});
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -120,14 +118,14 @@ class ShowImageDetails {
}
processLazyImageZoomable (instance, image, returnvalue) {
let attachment = BDFDB.getReactValue(instance, "_reactInternalFiber.return.return.memoizedProps.attachment");
let attachment = BDFDB.ReactUtils.getValue(instance, "_reactInternalFiber.return.return.memoizedProps.attachment");
if (attachment && !attachment.filename.endsWith(".bdemote.png") && !attachment.filename.endsWith(".bdemote.gif")) {
if (BDFDB.containsClass(image.parentElement.parentElement, BDFDB.disCN.spoilercontainer, BDFDB.disCN.spoilertext, false)) image = image.parentElement.parentElement;
BDFDB.addClass(image, "image-details-added");
image.removeEventListener("mouseenter", image.mouseenterShowImageDetails);
if (BDFDB.getData("showOnHover", this, "settings")) {
image.mouseenterShowImageDetails = () => {
BDFDB.createTooltip(`<div class="image-details-tooltip-name">${attachment.filename}</div><div class="image-details-tooltip-size">${BDFDB.formatBytes(attachment.size)}</div><div class="image-details-tooltip-dimensions">${attachment.width}x${attachment.height}px</div>`, image, {type:"right", html:true, selector:"image-details-tooltip", delay:BDFDB.getData("hoverDelay", this, "amounts")});
BDFDB.TooltipUtils.create(image, `<div class="image-details-tooltip-name">${attachment.filename}</div><div class="image-details-tooltip-size">${BDFDB.formatBytes(attachment.size)}</div><div class="image-details-tooltip-dimensions">${attachment.width}x${attachment.height}px</div>`, {type:"right", html:true, selector:"image-details-tooltip", delay:BDFDB.getData("hoverDelay", this, "amounts")});
};
image.addEventListener("mouseenter", image.mouseenterShowImageDetails);
}
@ -145,7 +143,7 @@ class ShowImageDetails {
if (this.SettingsUpdated) {
delete this.SettingsUpdated;
document.querySelectorAll(".image-details-added").forEach(image => {this.resetImage(image);});
BDFDB.WebModules.forceAllUpdates(this);
BDFDB.ModuleUtils.forceAllUpdates(this);
}
}
}

View File

@ -81,8 +81,8 @@ class SpellCheck {
BDFDB.initElements(settingspanel, this);
BDFDB.addEventListener(this, settingspanel, "click", ".remove-word", e => {this.removeFromOwnDictionarye;});
BDFDB.addEventListener(this, settingspanel, "click", BDFDB.dotCN.selectcontrol, e => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".remove-word", e => {this.removeFromOwnDictionarye;});
BDFDB.ListenerUtils.add(this, settingspanel, "click", BDFDB.dotCN.selectcontrol, e => {
BDFDB.openDropdownMenu(e, this.saveSelectChoice.bind(this), this.createSelectChoice.bind(this), this.languages);
});
return settingspanel;
@ -112,17 +112,15 @@ class SpellCheck {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
this.languages = Object.assign({}, BDFDB.languages);
this.languages = BDFDB.filterObject(this.languages, (lang) => {return lang.dic == true ? lang : null});
this.languages = Object.assign({}, BDFDB.LanguageUtils.languages);
this.languages = BDFDB.ObjectUtils.filter(this.languages, (lang) => {return lang.dic == true ? lang : null});
this.setDictionary(BDFDB.getData("dictionaryLanguage", this, "choices"));
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
stop () {
@ -134,7 +132,7 @@ class SpellCheck {
this.killLanguageToast();
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -173,7 +171,7 @@ class SpellCheck {
let [children, index] = BDFDB.getContextMenuGroupAndIndex(returnvalue, ["FluxContainer(MessageDeveloperModeGroup)", "DeveloperModeGroup"]);
let items = [];
let similarWords = this.getSimilarWords(word.toLowerCase().trim());
for (let suggestion of similarWords.sort()) items.push(BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
for (let suggestion of similarWords.sort()) items.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: suggestion,
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-suggestion-contextMenuItem`,
action: e => {
@ -181,18 +179,18 @@ class SpellCheck {
this.replaceWord(textarea, word, suggestion);
}
}));
if (!items.length) items.push(BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
if (!items.length) items.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.similarwordssubmenu_none_text,
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-none-contextMenuItem`,
disabled: true
}));
const itemgroup = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
const itemgroup = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
className: `BDFDB-contextMenuItemGroup ${this.name}-contextMenuItemGroup`,
children: BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuSubItem, {
children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuSubItem, {
label: BDFDB.LanguageUtils.LanguageStrings.SPELLCHECK,
className: `BDFDB-contextMenuSubItem ${this.name}-contextMenuSubItem ${this.name}-spellcheck-contextMenuSubItem`,
render: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: this.labels.context_spellcheck_text,
hint: word,
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-addword-contextMenuItem`,
@ -201,7 +199,7 @@ class SpellCheck {
this.addToOwnDictionary(word);
}
}),
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuSubItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuSubItem, {
label: this.labels.context_similarwords_text,
className: `BDFDB-contextMenuSubItem ${this.name}-contextMenuSubItem ${this.name}-suggestions-contextMenuSubItem`,
render: items
@ -245,12 +243,12 @@ class SpellCheck {
BDFDB.addClass(wrapper, "spellcheck-added");
updateSpellcheck();
BDFDB.addEventListener(this, textarea, "keyup", e => {
BDFDB.ListenerUtils.add(this, textarea, "keyup", e => {
clearTimeout(textarea.spellchecktimeout);
if (textarea.value) textarea.spellchecktimeout = setTimeout(() => {updateSpellcheck();},100);
else updateSpellcheck();
});
BDFDB.addEventListener(this, textarea, "scroll", e => {
BDFDB.ListenerUtils.add(this, textarea, "scroll", e => {
spellcheck.scrollTop = textarea.scrollTop;
});
}
@ -279,7 +277,7 @@ class SpellCheck {
if (!ownDictionary.includes(wordlow)) {
ownDictionary.push(wordlow);
BDFDB.saveData(lang, ownDictionary, this, "owndics");
BDFDB.showToast(this.labels.toast_wordadd_text ? this.labels.toast_wordadd_text.replace("${word}", word).replace("${dicname}", this.languages[lang].name) : "", {type:"success"});
BDFDB.NotificationUtils.toast(this.labels.toast_wordadd_text ? this.labels.toast_wordadd_text.replace("${word}", word).replace("${dicname}", this.languages[lang].name) : "", {type:"success"});
this.dictionary = this.langDictionary.concat(ownDictionary);
}
}
@ -291,7 +289,7 @@ class SpellCheck {
entry.remove();
var lang = BDFDB.getData("dictionaryLanguage", this, "choices");
var ownDictionary = BDFDB.loadData(lang, this, "owndics") || [];
BDFDB.removeFromArray(ownDictionary, word);
BDFDB.ArrayUtils.remove(ownDictionary, word);
BDFDB.saveData(lang, ownDictionary, this, "owndics");
this.dictionary = this.langDictionary.concat(ownDictionary);
}
@ -321,7 +319,7 @@ class SpellCheck {
setDictionary (lang) {
this.dictionary = BDFDB.loadData(lang, this, "owndics") || [];
this.killLanguageToast();
this.languageToast = BDFDB.showToast("Grabbing dictionary (" + this.languages[lang].name + "). Please wait", {timeout:0});
this.languageToast = BDFDB.NotificationUtils.toast("Grabbing dictionary (" + this.languages[lang].name + "). Please wait", {timeout:0});
this.languageToast.interval = setInterval(() => {
this.languageToast.textContent = this.languageToast.textContent.indexOf(".....") > -1 ? "Grabbing dictionary (" + this.languages[lang].name + "). Please wait" : this.languageToast.textContent + ".";
},500);
@ -329,14 +327,14 @@ class SpellCheck {
BDFDB.LibraryRequires.request("https://mwittrien.github.io/BetterDiscordAddons/Plugins/SpellCheck/dic/" + lang + ".dic", (error, response, result) => {
if (error || (response && result.toLowerCase().indexOf("<!doctype html>") > -1)) {
this.killLanguageToast();
BDFDB.showToast("Failed to grab dictionary (" + this.languages[lang].name + ").", {type: "error"});
BDFDB.NotificationUtils.toast("Failed to grab dictionary (" + this.languages[lang].name + ").", {type: "error"});
}
else if (response && this.languageToast.lang == lang) {
this.langDictionary = result.split("\n");
this.dictionary = this.langDictionary.concat(this.dictionary);
this.dictionary = this.dictionary.map(word => word.toLowerCase());
this.killLanguageToast();
BDFDB.showToast("Successfully grabbed dictionary (" + this.languages[lang].name + ").", {type: "success"});
BDFDB.NotificationUtils.toast("Successfully grabbed dictionary (" + this.languages[lang].name + ").", {type: "success"});
}
});
}

View File

@ -53,62 +53,30 @@ class StalkerNotifications {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.openConfirmModal(this, "StalkerNotifications has been discontinued and was merged with FriendNotifications. To download FriendNotifications click the 'OK' button bellow. This will delete StalkerNotifications and download FriendNotifications.", "Update Notification", () => {
require("request")("https://raw.githubusercontent.com/mwittrien/BetterDiscordAddons/master/Plugins/FriendNotifications/FriendNotifications.plugin.js", (error, response, body) => {
if (error) BDFDB.showToast(`Unable to download FriendNotifications.plugin.js.`, {type:"error"});
if (error) BDFDB.NotificationUtils.toast(`Unable to download FriendNotifications.plugin.js.`, {type:"error"});
else {
require("fs").writeFile(require("path").join(BDFDB.getPluginsFolder(), "FriendNotifications.plugin.js"), body, (error) => {
require("fs").writeFile(require("path").join(BDFDB.BdUtils.getPluginsFolder(), "FriendNotifications.plugin.js"), body, (error) => {
if (!error) {
BDFDB.showToast(`Successfully downloaded FriendNotifications.plugin.js.`, {type:"success"});
require("fs").unlinkSync(require("path").join(BDFDB.getPluginsFolder(), "StalkerNotifications.plugin.js"));
BDFDB.NotificationUtils.toast(`Successfully downloaded FriendNotifications.plugin.js.`, {type:"success"});
require("fs").unlinkSync(require("path").join(BDFDB.BdUtils.getPluginsFolder(), "StalkerNotifications.plugin.js"));
}
});
}
});
});
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
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;
BDFDB.unloadMessage(this);
}
}
// begin of own functions
}
BDFDB.openConfirmModal(this, "StalkerNotifications has been discontinued and was merged with FriendNotifications. To download FriendNotifications click the 'OK' button bellow. This will delete StalkerNotifications and download FriendNotifications.", "Update Notification", () => {
require("request")("https://raw.githubusercontent.com/mwittrien/BetterDiscordAddons/master/Plugins/FriendNotifications/FriendNotifications.plugin.js", (error, response, body) => {
if (error) BDFDB.showToast(`Unable to download FriendNotifications.plugin.js.`, {type:"error"});
else {
require("fs").writeFile(require("path").join(BDFDB.getPluginsFolder(), "FriendNotifications.plugin.js"), body, (error) => {
if (!error) {
BDFDB.showToast(`Successfully downloaded FriendNotifications.plugin.js.`, {type:"success"});
require("fs").unlinkSync(require("path").join(BDFDB.getPluginsFolder(), "StalkerNotifications.plugin.js"));
}
});
}
});
});
}
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;
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}

View File

@ -39,18 +39,16 @@ class SteamProfileLink {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.addEventListener(this, document, "click", "a[href^='https://steamcommunity.'], a[href^='https://store.steampowered.'], a[href*='a.akamaihd.net/'][href*='steam']", e => {this.openInSteam(e, e.currentTarget.href);});
BDFDB.ListenerUtils.add(this, document, "click", "a[href^='https://steamcommunity.'], a[href^='https://store.steampowered.'], a[href*='a.akamaihd.net/'][href*='steam']", e => {this.openInSteam(e, e.currentTarget.href);});
BDFDB.addEventListener(this, document, "click", BDFDB.dotCN.cardstore + BDFDB.dotCN.cardstoreinteractive, e => {
let news = BDFDB.getReactValue(e.currentTarget, "return.return.memoizedProps.news");
BDFDB.ListenerUtils.add(this, document, "click", BDFDB.dotCN.cardstore + BDFDB.dotCN.cardstoreinteractive, e => {
let news = BDFDB.ReactUtils.getValue(e.currentTarget, "return.return.memoizedProps.news");
if (news && news.url && news.url.includes("steam")) this.openInSteam(e, news.url);
});
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
@ -60,12 +58,12 @@ class SteamProfileLink {
BDFDB.removeEles(".urlCheckFrame");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
openInSteam (e, url) {
BDFDB.stopEvent(e);
BDFDB.ListenerUtils.stopEvent(e);
BDFDB.LibraryRequires.request(url, (error, response, body) => {
if (BDFDB.LibraryRequires.electron.shell.openExternal("steam://openurl/" + response.request.href));
else window.open(response.request.href, "_blank");

View File

@ -329,11 +329,11 @@ class ThemeRepo {
BDFDB.initElements(settingspanel, this);
BDFDB.addEventListener(this, settingspanel, "click", ".btn-addtheme", () => {this.addThemeToOwnList(settingspanel);});
BDFDB.addEventListener(this, settingspanel, "click", "#input-themeurl", e => {if (e.which == 13) this.addThemeToOwnList(settingspanel);});
BDFDB.addEventListener(this, settingspanel, "click", ".remove-theme", e => {this.removeThemeFromOwnList(e);});
BDFDB.addEventListener(this, settingspanel, "click", ".remove-all", () => {this.removeAllFromOwnList(settingspanel);})
BDFDB.addEventListener(this, settingspanel, "click", ".refresh-button", () => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".btn-addtheme", () => {this.addThemeToOwnList(settingspanel);});
BDFDB.ListenerUtils.add(this, settingspanel, "click", "#input-themeurl", e => {if (e.which == 13) this.addThemeToOwnList(settingspanel);});
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".remove-theme", e => {this.removeThemeFromOwnList(e);});
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".remove-all", () => {this.removeAllFromOwnList(settingspanel);})
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".refresh-button", () => {
this.loading = {is:false, timeout:null, amount:0};
this.loadThemes();
});
@ -365,17 +365,15 @@ class ThemeRepo {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
this.loadThemes();
this.updateInterval = setInterval(() => {this.checkForNewThemes();},1000*60*30);
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
@ -388,7 +386,7 @@ class ThemeRepo {
BDFDB.removeEles("iframe.discordPreview",".themerepo-notice",".bd-themerepobutton",".themerepo-loadingicon",BDFDB.dotCN.app + " > .repo-loadingwrapper:empty");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -397,7 +395,7 @@ class ThemeRepo {
onUserSettingsCogContextMenu (instance, menu, returnvalue) {
setImmediate(() => {for (let child of returnvalue.props.children) if (child && child.props && child.props.label == "BandagedBD" && Array.isArray(child.props.render)) {
const repoItem = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
const repoItem = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: "Theme Repo",
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-repo-contextMenuItem`,
action: e => {
@ -419,7 +417,7 @@ class ThemeRepo {
this.openThemeRepoModal()
});
repoButton.addEventListener("mouseenter", () => {
BDFDB.createTooltip("Open Theme Repo", repoButton, {type:"top",selector:"themerepo-button-tooltip"});
BDFDB.TooltipUtils.create(repoButton, "Open Theme Repo", {type:"top",selector:"themerepo-button-tooltip"});
});
folderbutton.parentElement.insertBefore(repoButton, folderbutton.nextSibling);
}
@ -437,7 +435,7 @@ class ThemeRepo {
ownlist.push(url);
BDFDB.saveData("ownlist", ownlist, this, "ownlist");
let entry = BDFDB.htmlToElement(`<div class="${BDFDB.disCNS.flex + BDFDB.disCNS.vertical + BDFDB.disCNS.directionrow + BDFDB.disCNS.justifystart + BDFDB.disCNS.alignstretch + BDFDB.disCNS.nowrap + BDFDB.disCNS.margintop4 + BDFDB.disCNS.marginbottom4 + BDFDB.disCN.hovercard}"><div class="${BDFDB.disCN.hovercardinner}"><div class="${BDFDB.disCNS.description + BDFDB.disCNS.formtext + BDFDB.disCNS.note + BDFDB.disCNS.margintop4 + BDFDB.disCNS.modedefault + BDFDB.disCNS.primary + BDFDB.disCN.ellipsis} entryurl">${url}</div></div><div class="${BDFDB.disCN.hovercardbutton} remove-theme"></div></div>`)
BDFDB.addChildEventListener(entry, "click", ".remove-theme", e => {this.removeThemeFromOwnList(e);});
BDFDB.ListenerUtils.addToChildren(entry, "click", ".remove-theme", e => {this.removeThemeFromOwnList(e);});
themeList.appendChild(entry);
}
}
@ -448,7 +446,7 @@ class ThemeRepo {
var url = entry.querySelector(".entryurl").textContent;
entry.remove();
var ownlist = BDFDB.loadData("ownlist", this, "ownlist") || [];
BDFDB.removeFromArray(ownlist, url);
BDFDB.ArrayUtils.remove(ownlist, url);
BDFDB.saveData("ownlist", ownlist, this, "ownlist");
}
@ -461,7 +459,7 @@ class ThemeRepo {
openThemeRepoModal (options = {}) {
if (this.loading.is) {
BDFDB.showToast(`Themes are still being fetched. Try again in some seconds.`, {type:"danger"});
BDFDB.NotificationUtils.toast(`Themes are still being fetched. Try again in some seconds.`, {type:"danger"});
return;
}
@ -485,10 +483,10 @@ class ThemeRepo {
else if (typeof e.data === "object" && e.data.origin == "DiscordPreview") {
switch (e.data.reason) {
case "OnLoad":
var username = BDFDB.myData.username;
var id = BDFDB.myData.id;
var discriminator = BDFDB.myData.discriminator;
var avatar = BDFDB.getUserAvatar();
var username = BDFDB.UserUtils.me.username;
var id = BDFDB.UserUtils.me.id;
var discriminator = BDFDB.UserUtils.me.discriminator;
var avatar = BDFDB.UserUtils.getAvatar();
var nativecss = document.querySelector("head link[rel='stylesheet'][integrity]");
nativecss = nativecss && nativecss.href ? nativecss.href : null;
var titlebar = document.querySelector(BDFDB.dotCN.titlebar);
@ -537,14 +535,14 @@ class ThemeRepo {
var normalizeinput = themeRepoModal.querySelector("#input-normalize");
var customcssinput = themeRepoModal.querySelector("#input-customcss");
var themefixerinput = themeRepoModal.querySelector("#input-themefixer");
darklightinput.checked = BDFDB.getDiscordTheme() == BDFDB.disCN.themelight;
darklightinput.checked = BDFDB.DiscordUtils.getTheme() == BDFDB.disCN.themelight;
normalizeinput.checked = window.settingsCookie["fork-ps-4"] == true;
customcssinput.checked = false;
themefixerinput.checked = false;
themeRepoModal.querySelector("#input-hideupdated").checked = hiddenSettings.updated || options.showOnlyOutdated;
themeRepoModal.querySelector("#input-hideoutdated").checked = hiddenSettings.outdated && !options.showOnlyOutdated;
themeRepoModal.querySelector("#input-hidedownloadable").checked = hiddenSettings.downloadable || options.showOnlyOutdated;
if (!BDFDB.isRestartNoMoreEnabled()) themeRepoModal.querySelector("#RNMoption").remove();
if (!BDFDB.BdUtils.isAutoLoadEnabled()) themeRepoModal.querySelector("#RNMoption").remove();
else themeRepoModal.querySelector("#input-rnmstart").checked = BDFDB.loadData("RNMstart", this, "RNMstart");
if (options.forcedSort && this.sortings.sort[options.forcedSort]) {
@ -580,7 +578,7 @@ class ThemeRepo {
});
themeRepoModal.querySelector("#download-generated").addEventListener("click", e => {
let inputs = themeRepoModal.querySelectorAll(".varinput");
if (!inputs.length) BDFDB.showToast(`Select a Theme to download a custom generated Theme.`, {type:"error"});
if (!inputs.length) BDFDB.NotificationUtils.toast(`Select a Theme to download a custom generated Theme.`, {type:"error"});
else {
let data = this.loadedThemes[this.generatorThemes[themeRepoModal.querySelector(".generator-select " + BDFDB.dotCN.select).getAttribute("value")-1]];
let css = data.fullcss;
@ -595,12 +593,12 @@ class ThemeRepo {
this.createThemeFile(data.name + ".theme.css", css);
}
});
BDFDB.addChildEventListener(themeRepoModal, "click", BDFDB.dotCNC.modalclose + BDFDB.dotCN.backdrop, () => {
BDFDB.ListenerUtils.addToChildren(themeRepoModal, "click", BDFDB.dotCNC.modalclose + BDFDB.dotCN.backdrop, () => {
frame.remove();
document.removeEventListener("keyup", keyPressed);
window.removeEventListener("message", messageReceived);
});
BDFDB.addChildEventListener(themeRepoModal, "mouseenter", BDFDB.dotCN.backdrop, e => {
BDFDB.ListenerUtils.addToChildren(themeRepoModal, "mouseenter", BDFDB.dotCN.backdrop, e => {
if (!document.querySelector(BDFDB.dotCN.colorpicker)) {
for (let child of themeRepoModal.childNodes) {
child.style.setProperty("transition", "opacity .5s ease-in-out", "important");
@ -608,35 +606,35 @@ class ThemeRepo {
}
}
});
BDFDB.addChildEventListener(themeRepoModal, "mouseleave", BDFDB.dotCN.backdrop, e => {
BDFDB.ListenerUtils.addToChildren(themeRepoModal, "mouseleave", BDFDB.dotCN.backdrop, e => {
if (!document.querySelector(BDFDB.dotCN.colorpicker)) {
themeRepoModal.childNodes[0].style.setProperty("opacity", "0.85");
themeRepoModal.childNodes[1].style.setProperty("opacity", "1");
setTimeout(() => {for (let child of themeRepoModal.childNodes) child.style.removeProperty("transition");}, 500);
}
});
BDFDB.addChildEventListener(themeRepoModal, "keyup", BDFDB.dotCN.searchbarinput, () => {
BDFDB.ListenerUtils.addToChildren(themeRepoModal, "keyup", BDFDB.dotCN.searchbarinput, () => {
clearTimeout(themeRepoModal.searchTimeout);
themeRepoModal.searchTimeout = setTimeout(() => {this.sortEntries(themeRepoModal);},1000);
});
BDFDB.addChildEventListener(themeRepoModal, "click", BDFDB.dotCN.searchbarclear, () => {
BDFDB.ListenerUtils.addToChildren(themeRepoModal, "click", BDFDB.dotCN.searchbarclear, () => {
clearTimeout(themeRepoModal.searchTimeout);
themeRepoModal.searchTimeout = setTimeout(() => {this.sortEntries(themeRepoModal);},1000);
});
BDFDB.addChildEventListener(themeRepoModal, "change", ".hide-checkbox", e => {
BDFDB.ListenerUtils.addToChildren(themeRepoModal, "change", ".hide-checkbox", e => {
themeRepoModal.updateHidden = true;
BDFDB.saveData(e.currentTarget.value, e.currentTarget.checked, this, "hidden");
});
BDFDB.addChildEventListener(themeRepoModal, "change", "#input-rnmstart", e => {
BDFDB.ListenerUtils.addToChildren(themeRepoModal, "change", "#input-rnmstart", e => {
BDFDB.saveData("RNMstart", e.currentTarget.checked, this, "RNMstart");
});
BDFDB.addChildEventListener(themeRepoModal, "click", ".sort-filter", e => {
BDFDB.ListenerUtils.addToChildren(themeRepoModal, "click", ".sort-filter", e => {
BDFDB.createSortPopout(e.currentTarget, this.sortPopoutMarkup, () => {this.sortEntries(themeRepoModal);});
});
BDFDB.addChildEventListener(themeRepoModal, "click", ".order-filter", e => {
BDFDB.ListenerUtils.addToChildren(themeRepoModal, "click", ".order-filter", e => {
BDFDB.createSortPopout(e.currentTarget, this.orderPopoutMarkup, () => {this.sortEntries(themeRepoModal);});
});
BDFDB.addChildEventListener(themeRepoModal, "click", BDFDB.dotCN.tabbaritem + "[tab=themes]", e => {
BDFDB.ListenerUtils.addToChildren(themeRepoModal, "click", BDFDB.dotCN.tabbaritem + "[tab=themes]", e => {
if (!BDFDB.containsClass(e.currentTarget, BDFDB.disCN.settingsitemselected)) {
if (themeRepoModal.updateHidden) {
delete themeRepoModal.updateHidden;
@ -650,7 +648,7 @@ class ThemeRepo {
themeRepoModal.entries = {};
for (let url in this.loadedThemes) {
let theme = this.loadedThemes[url];
let instTheme = BDFDB.getTheme(theme.name);
let instTheme = BDFDB.BdUtils.getTheme(theme.name);
if (instTheme && instTheme.author.toUpperCase() == theme.author.toUpperCase()) theme.state = instTheme.version != theme.version ? 1 : 0;
else theme.state = 2;
let data = {
@ -761,7 +759,7 @@ class ThemeRepo {
frame.contentWindow.postMessage({origin:"ThemeRepo",reason:"NewTheme",checked:true,css},"*");
}, 1000);
};
BDFDB.addChildEventListener(container, "change input", ".varinput", updatePreview);
BDFDB.ListenerUtils.addToChildren(container, "change input", ".varinput", updatePreview);
BDFDB.initElements(container);
}
@ -800,18 +798,18 @@ class ThemeRepo {
if (giturl) window.open(giturl, "_blank");
});
gitbutton.addEventListener("mouseenter", e => {
BDFDB.createTooltip("Go to Git", gitbutton, {type:"top",selector:"themerepo-giticon-tooltip"});
BDFDB.TooltipUtils.create(gitbutton, "Go to Git", {type:"top",selector:"themerepo-giticon-tooltip"});
});
let trashbutton = entry.querySelector(".trashIcon");
trashbutton.addEventListener("click", e => {
if (BDFDB.containsClass(entry, "outdated", "updated", false)) {
setEntryState(2);
this.deleteThemeFile(data);
if (!BDFDB.isRestartNoMoreEnabled()) this.removeTheme(data);
if (!BDFDB.BdUtils.isAutoLoadEnabled()) this.removeTheme(data);
}
});
trashbutton.addEventListener("mouseenter", e => {
BDFDB.createTooltip("Delete Themefile", trashbutton, {type:"top",selector:"themerepo-trashicon-tooltip"});
BDFDB.TooltipUtils.create(trashbutton, "Delete Themefile", {type:"top",selector:"themerepo-trashicon-tooltip"});
});
entry.querySelector(".btn-download").addEventListener("click", e => {
setEntryState(0);
@ -855,14 +853,14 @@ class ThemeRepo {
let searchstring = themeRepoModal.querySelector(BDFDB.dotCN.searchbarinput).value.replace(/[<|>]/g, "").toUpperCase();
let entries = themeRepoModal.entries;
if (themeRepoModal.querySelector("#input-hideupdated").checked) entries = BDFDB.filterObject(entries, entry => {return entry.state < 1 ? null : entry;});
if (themeRepoModal.querySelector("#input-hideoutdated").checked) entries = BDFDB.filterObject(entries, entry => {return entry.state == 1 ? null : entry;});
if (themeRepoModal.querySelector("#input-hidedownloadable").checked) entries = BDFDB.filterObject(entries, entry => {return entry.state > 1 ? null : entry;});
entries = BDFDB.filterObject(entries, entry => {return entry.search.indexOf(searchstring) > -1 ? entry : null;});
if (themeRepoModal.querySelector("#input-hideupdated").checked) entries = BDFDB.ObjectUtils.filter(entries, entry => {return entry.state < 1 ? null : entry;});
if (themeRepoModal.querySelector("#input-hideoutdated").checked) entries = BDFDB.ObjectUtils.filter(entries, entry => {return entry.state == 1 ? null : entry;});
if (themeRepoModal.querySelector("#input-hidedownloadable").checked) entries = BDFDB.ObjectUtils.filter(entries, entry => {return entry.state > 1 ? null : entry;});
entries = BDFDB.ObjectUtils.filter(entries, entry => {return entry.search.indexOf(searchstring) > -1 ? entry : null;});
let sortfilter = themeRepoModal.querySelector(".sort-filter " + BDFDB.dotCN.quickselectvalue).getAttribute("option");
entries = BDFDB.sortObject(entries, sortfilter == "new" && !themeRepoModal.querySelector(".newentries-tag") ? "name" : sortfilter);
if (themeRepoModal.querySelector(".order-filter " + BDFDB.dotCN.quickselectvalue).getAttribute("option") == "desc") entries = BDFDB.reverseObject(entries);
entries = BDFDB.ObjectUtils.sort(entries, sortfilter == "new" && !themeRepoModal.querySelector(".newentries-tag") ? "name" : sortfilter);
if (themeRepoModal.querySelector(".order-filter " + BDFDB.dotCN.quickselectvalue).getAttribute("option") == "desc") entries = BDFDB.ObjectUtils.reverse(entries);
let entrypositions = Object.keys(entries);
@ -915,7 +913,9 @@ class ThemeRepo {
}
var loadingicon = BDFDB.htmlToElement(this.themeRepoIconMarkup);
BDFDB.addClass(loadingicon, "themerepo-loadingicon");
loadingicon.addEventListener("mouseenter", () => {BDFDB.createTooltip(this.getLoadingTooltipText(),loadingicon,{type:"left",delay:500,style:"max-width:unset;",selector:"themerepo-loading-tooltip"});})
loadingicon.addEventListener("mouseenter", () => {
BDFDB.TooltipUtils.create(loadingicon, this.getLoadingTooltipText(), {type:"left", delay:500, style:"max-width:unset;", selector:"themerepo-loading-tooltip"});
});
loadingiconwrapper.appendChild(loadingicon);
getThemeInfo(() => {
@ -928,11 +928,11 @@ class ThemeRepo {
clearTimeout(this.loading.timeout);
this.loading = {is:false, timeout:null, amount:this.loading.amount};
console.log(`%c[${this.name}]%c`, "color: #3a71c1; font-weight: 700;", "", "Finished fetching Themes.");
if (document.querySelector(".bd-themerepobutton")) BDFDB.showToast(`Finished fetching Themes.`, {type:"success"});
if (document.querySelector(".bd-themerepobutton")) BDFDB.NotificationUtils.toast(`Finished fetching Themes.`, {type:"success"});
if ((settings.notifyOutdated || settings.notifyOutdated == undefined) && outdated > 0) {
var oldbarbutton = document.querySelector(".themerepo-outdate-notice " + BDFDB.dotCN.noticedismiss);
if (oldbarbutton) oldbarbutton.click();
var bar = BDFDB.createNotificationsBar(`${outdated} of your Themes ${outdated == 1 ? "is" : "are"} outdated. Check:`,{type:"danger",btn:"ThemeRepo",selector:"themerepo-notice themerepo-outdate-notice", customicon:this.themeRepoIconMarkup.replace(/#7289da/gi,"#FFF").replace(/#7f8186/gi,"#B9BBBE")});
var bar = BDFDB.NotificationUtils.notice(`${outdated} of your Themes ${outdated == 1 ? "is" : "are"} outdated. Check:`,{type:"danger",btn:"ThemeRepo",selector:"themerepo-notice themerepo-outdate-notice", customicon:this.themeRepoIconMarkup.replace(/#7289da/gi,"#FFF").replace(/#7f8186/gi,"#B9BBBE")});
bar.querySelector(BDFDB.dotCN.noticebutton).addEventListener("click", e => {
this.openThemeRepoModal({showOnlyOutdated:true});
bar.querySelector(BDFDB.dotCN.noticedismiss).click();
@ -941,19 +941,19 @@ class ThemeRepo {
if ((settings.notifyNewentries || settings.notifyNewentries == undefined) && newentries > 0) {
var oldbarbutton = document.querySelector(".themerepo-newentries-notice " + BDFDB.dotCN.noticedismiss);
if (oldbarbutton) oldbarbutton.click();
var bar = BDFDB.createNotificationsBar(`There ${newentries == 1 ? "is" : "are"} ${newentries} new Theme${newentries == 1 ? "" : "s"} in the Repo. Check:`, {type:"success", btn:"ThemeRepo", selector:"themerepo-notice themerepo-newentries-notice", customicon:this.themeRepoIconMarkup.replace(/#7289da/gi,"#FFF").replace(/#7f8186/gi,"#B9BBBE")});
var bar = BDFDB.NotificationUtils.notice(`There ${newentries == 1 ? "is" : "are"} ${newentries} new Theme${newentries == 1 ? "" : "s"} in the Repo. Check:`, {type:"success", btn:"ThemeRepo", selector:"themerepo-notice themerepo-newentries-notice", customicon:this.themeRepoIconMarkup.replace(/#7289da/gi,"#FFF").replace(/#7f8186/gi,"#B9BBBE")});
bar.querySelector(BDFDB.dotCN.noticebutton).addEventListener("click", e => {
this.openThemeRepoModal({forcedSort:"new",forcedOrder:"asc"});
bar.querySelector(BDFDB.dotCN.noticedismiss).click();
});
}
if (BDFDB.myData.id == "278543574059057154") {
if (BDFDB.UserUtils.me.id == "278543574059057154") {
let wrongUrls = [];
for (let url of this.foundThemes) if (url && !this.loadedThemes[url] && !wrongUrls.includes(url)) wrongUrls.push(url);
if (wrongUrls.length > 0) {
var bar = BDFDB.createNotificationsBar(`ThemeRepo: ${wrongUrls.length} Theme${wrongUrls.length > 1 ? "s" : ""} could not be loaded.`, {type:"danger", btn:"List", selector:"themerepo-notice", customicon:this.themeRepoIconMarkup.replace(/#7289da/gi,"#FFF").replace(/#7f8186/gi,"#B9BBBE")});
var bar = BDFDB.NotificationUtils.notice(`ThemeRepo: ${wrongUrls.length} Theme${wrongUrls.length > 1 ? "s" : ""} could not be loaded.`, {type:"danger", btn:"List", selector:"themerepo-notice", customicon:this.themeRepoIconMarkup.replace(/#7289da/gi,"#FFF").replace(/#7f8186/gi,"#B9BBBE")});
bar.querySelector(BDFDB.dotCN.noticebutton).addEventListener("click", e => {
var toast = BDFDB.showToast(wrongUrls.join("\n"),{type:"error"});
var toast = BDFDB.NotificationUtils.toast(wrongUrls.join("\n"),{type:"error"});
toast.style.overflow = "hidden";
console.log(wrongUrls.length == 1 ? wrongUrls[0] : wrongUrls);
});
@ -976,7 +976,7 @@ class ThemeRepo {
let requesturl = NFLDreplace && url.includes("NFLD99/Better-Discord/master/Themes") ? url.replace("master/Themes", "master/" + NFLDreplace) : url;
BDFDB.LibraryRequires.request(requesturl, (error, response, body) => {
if (!response) {
if (url && BDFDB.getAllIndexes(this.foundThemes, url).length < 2) this.foundThemes.push(url);
if (url && BDFDB.ArrayUtils.getAllIndexes(this.foundThemes, url).length < 2) this.foundThemes.push(url);
}
else if (body && body.indexOf("404: Not Found") != 0 && response.statusCode == 200) {
let theme = {};
@ -1009,7 +1009,7 @@ class ThemeRepo {
theme.url = url;
theme.requesturl = requesturl;
this.loadedThemes[url] = theme;
var instTheme = BDFDB.getTheme(theme.name);
var instTheme = BDFDB.BdUtils.getTheme(theme.name);
if (instTheme && instTheme.author.toUpperCase() == theme.author.toUpperCase() && instTheme.version != theme.version) outdated++;
if (!this.cachedThemes.includes(url)) newentries++;
}
@ -1019,7 +1019,7 @@ class ThemeRepo {
var loadingtooltip = document.querySelector(".themerepo-loading-tooltip");
if (loadingtooltip) {
BDFDB.setInnerText(loadingtooltip, this.getLoadingTooltipText());
BDFDB.updateTooltipPosition(loadingtooltip);
BDFDB.TooltipUtils.update(loadingtooltip);
}
getThemeInfo(callback);
});
@ -1041,20 +1041,20 @@ class ThemeRepo {
downloadTheme (data) {
BDFDB.LibraryRequires.request(data.requesturl, (error, response, body) => {
if (error) BDFDB.showToast(`Unable to download Theme "${data.name}".`, {type:"danger"});
if (error) BDFDB.NotificationUtils.toast(`Unable to download Theme "${data.name}".`, {type:"danger"});
else this.createThemeFile(data.requesturl.split("/").pop(), body);
});
}
createThemeFile (filename, content) {
BDFDB.LibraryRequires.fs.writeFile(BDFDB.LibraryRequires.path.join(BDFDB.getThemesFolder(), filename), content, (error) => {
if (error) BDFDB.showToast(`Unable to save Theme "${filename}".`, {type:"danger"});
else BDFDB.showToast(`Successfully saved Theme "${filename}".`, {type:"success"});
BDFDB.LibraryRequires.fs.writeFile(BDFDB.LibraryRequires.path.join(BDFDB.BdUtils.getThemesFolder(), filename), content, (error) => {
if (error) BDFDB.NotificationUtils.toast(`Unable to save Theme "${filename}".`, {type:"danger"});
else BDFDB.NotificationUtils.toast(`Successfully saved Theme "${filename}".`, {type:"success"});
});
}
applyTheme (data) {
if (BDFDB.isThemeEnabled(data.name) == false) {
if (BDFDB.BdUtils.isThemeEnabled(data.name) == false) {
BDFDB.removeEles(`style#${data.name}`);
document.head.appendChild(BDFDB.htmlToElement(`<style id=${data.name}>${data.css}</style>`));
window.themeModule.enableTheme(data.name);
@ -1064,14 +1064,14 @@ class ThemeRepo {
deleteThemeFile (data) {
let filename = data.requesturl.split("/").pop();
BDFDB.LibraryRequires.fs.unlink(BDFDB.LibraryRequires.path.join(BDFDB.getThemesFolder(), filename), (error) => {
if (error) BDFDB.showToast(`Unable to delete Theme "${filename}".`, {type:"danger"});
else BDFDB.showToast(`Successfully deleted Theme "${filename}".`);
BDFDB.LibraryRequires.fs.unlink(BDFDB.LibraryRequires.path.join(BDFDB.BdUtils.getThemesFolder(), filename), (error) => {
if (error) BDFDB.NotificationUtils.toast(`Unable to delete Theme "${filename}".`, {type:"danger"});
else BDFDB.NotificationUtils.toast(`Successfully deleted Theme "${filename}".`);
});
}
removeTheme (data) {
if (BDFDB.isThemeEnabled(data.name) == true) {
if (BDFDB.BdUtils.isThemeEnabled(data.name) == true) {
BDFDB.removeEles(`style#${data.name}`);
window.themeModule.disableTheme(data.name);
console.log(`%c[${this.name}]%c`, "color: #3a71c1; font-weight: 700;", "", "Removed Theme " + data.name + ".");

View File

@ -43,15 +43,13 @@ class ThemeSettings {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
this.dir = BDFDB.getThemesFolder();
this.dir = BDFDB.BdUtils.getThemesFolder();
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
stop () {
@ -59,7 +57,7 @@ class ThemeSettings {
this.stopping = true;
BDFDB.removeEles(".themes-settings-button",".themes-settings-footer");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -167,7 +165,7 @@ class ThemeSettings {
BDFDB.initElements(settingspanel, this);
BDFDB.addEventListener(this, settingspanel, "click", ".update-button", () => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".update-button", () => {
let path = BDFDB.LibraryRequires.path.join(this.dir, theme.filename);
let css = BDFDB.LibraryRequires.fs.readFileSync(path).toString();
if (css) {
@ -183,11 +181,11 @@ class ThemeSettings {
}
if (amount > 0) {
BDFDB.LibraryRequires.fs.writeFileSync(path, css);
BDFDB.showToast(`Updated ${amount} variable${amount == 1 ? "" : "s"} in ${theme.filename}`, {type:"success"});
BDFDB.NotificationUtils.toast(`Updated ${amount} variable${amount == 1 ? "" : "s"} in ${theme.filename}`, {type:"success"});
}
else BDFDB.showToast(`There are no changed variables to be updated in ${theme.filename}`, {type:"warning"});
else BDFDB.NotificationUtils.toast(`There are no changed variables to be updated in ${theme.filename}`, {type:"warning"});
}
else BDFDB.showToast(`Could not find themefile: ${theme.filename}`, {type:"error"});
else BDFDB.NotificationUtils.toast(`Could not find themefile: ${theme.filename}`, {type:"error"});
});
wrapper.appendChild(settingspanel);

View File

@ -55,15 +55,13 @@ class TimedLightDarkMode {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.WebModules.forceAllUpdates(this);
BDFDB.ModuleUtils.forceAllUpdates(this);
this.startInterval();
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
stop () {
@ -74,7 +72,7 @@ class TimedLightDarkMode {
BDFDB.removeEles(".TLDM-settingsbox");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -91,9 +89,9 @@ class TimedLightDarkMode {
BDFDB.initElements(settingsbox, this);
this.updateSlider(slider, values);
BDFDB.addChildEventListener(settingsbox, "mousedown", BDFDB.dotCN.slidergrabber + ".timer-grabber", e => {this.dragSlider(e.currentTarget);});
BDFDB.addChildEventListener(settingsbox, "mouseenter", BDFDB.dotCN.slidergrabber + ".date-grabber", e => {this.showCurrentTime(e.currentTarget);});
BDFDB.addChildEventListener(settingsbox, "click", ".settings-switch", e => {
BDFDB.ListenerUtils.addToChildren(settingsbox, "mousedown", BDFDB.dotCN.slidergrabber + ".timer-grabber", e => {this.dragSlider(e.currentTarget);});
BDFDB.ListenerUtils.addToChildren(settingsbox, "mouseenter", BDFDB.dotCN.slidergrabber + ".date-grabber", e => {this.showCurrentTime(e.currentTarget);});
BDFDB.ListenerUtils.addToChildren(settingsbox, "click", ".settings-switch", e => {
this.startInterval();
BDFDB.toggleClass(slider, BDFDB.disCN.sliderdisabled, !e.currentTarget.checked);
});
@ -124,7 +122,7 @@ class TimedLightDarkMode {
}
changeTheme (dark) {
var theme = BDFDB.getDiscordTheme();
var theme = BDFDB.DiscordUtils.getTheme();
if (dark && theme == BDFDB.disCN.themelight) BDFDB.LibraryModules.SettingsUtils.updateRemoteSettings({theme:"dark"});
else if (!dark && theme == BDFDB.disCN.themedark) BDFDB.LibraryModules.SettingsUtils.updateRemoteSettings({theme:"light"});
}

View File

@ -89,13 +89,11 @@ class TopRoleEverywhere {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.ModuleUtils.forceAllUpdates(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
stop () {
@ -103,7 +101,7 @@ class TopRoleEverywhere {
this.stopping = true;
BDFDB.removeEles(".TRE-tag");
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -117,7 +115,7 @@ class TopRoleEverywhere {
}
processMessageUsername (instance, wrapper, returnvalue) {
let message = BDFDB.getReactValue(instance, "props.message");
let message = BDFDB.ReactUtils.getValue(instance, "props.message");
if (message) {
let username = wrapper.querySelector(BDFDB.dotCN.messageusername);
if (username && BDFDB.getData("showInChat", this, "settings")) {
@ -131,7 +129,7 @@ class TopRoleEverywhere {
if (this.SettingsUpdated) {
delete this.SettingsUpdated;
BDFDB.removeEles(".TRE-tag");
BDFDB.WebModules.forceAllUpdates(this);
BDFDB.ModuleUtils.forceAllUpdates(this);
}
}

View File

@ -74,7 +74,7 @@ class UserNotes {
BDFDB.initElements(settingspanel, this);
BDFDB.addEventListener(this, settingspanel, "click", ".remove-button", () => {
BDFDB.ListenerUtils.add(this, settingspanel, "click", ".remove-button", () => {
BDFDB.openConfirmModal(this, "Are you sure you want to remove all usernotes?", () => {
BDFDB.removeAllData(this, "notes");
});
@ -106,11 +106,9 @@ class UserNotes {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
BDFDB.PluginUtils.init(this);
}
else console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
}
@ -118,7 +116,7 @@ class UserNotes {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
this.stopping = true;
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -128,10 +126,10 @@ class UserNotes {
onUserContextMenu (instance, menu, returnvalue) {
if (instance.props && instance.props.user && !menu.querySelector(`${this.name}-contextMenuItem`)) {
let [children, index] = BDFDB.getContextMenuGroupAndIndex(returnvalue, ["FluxContainer(MessageDeveloperModeGroup)", "DeveloperModeGroup"]);
const itemgroup = BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
const itemgroup = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItemGroup, {
className: `BDFDB-contextMenuItemGroup ${this.name}-contextMenuItemGroup`,
children: [
BDFDB.React.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItem, {
label: BDFDB.LanguageUtils.LanguageStrings.USERS + " " + BDFDB.LanguageUtils.LanguageStrings.NOTE,
className: `BDFDB-contextMenuItem ${this.name}-contextMenuItem ${this.name}-usernote-contextMenuItem`,
action: e => {
@ -155,7 +153,7 @@ class UserNotes {
noteinput.value = note;
noteinput.setAttribute("placeholder", note);
BDFDB.appendModal(userNotesModal);
BDFDB.addChildEventListener(userNotesModal, "click", ".btn-save", (e) => {
BDFDB.ListenerUtils.addToChildren(userNotesModal, "click", ".btn-save", (e) => {
e.preventDefault();
BDFDB.saveData(info.id, noteinput.value, this, "notes")
});

View File

@ -42,20 +42,18 @@ class WriteUpperCase {
initialize () {
if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.loadMessage(this);
BDFDB.PluginUtils.init(this);
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(`%c[${this.getName()}]%c`, 'color: #3a71c1; font-weight: 700;', '', 'Fatal Error: Could not load BD functions!');
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;
BDFDB.unloadMessage(this);
BDFDB.PluginUtils.clear(this);
}
}
@ -66,7 +64,7 @@ class WriteUpperCase {
if (instance.props && instance.props.type) {
var textarea = wrapper.querySelector("textarea");
if (!textarea) return;
BDFDB.addEventListener(this, textarea, "keyup", () => {
BDFDB.ListenerUtils.add(this, textarea, "keyup", () => {
clearTimeout(textarea.WriteUpperCaseTimeout);
textarea.WriteUpperCaseTimeout = setTimeout(() => {
let string = textarea.value;