Update BadgesEverywhere.plugin.js

This commit is contained in:
Mirco Wittrien 2021-05-19 20:22:29 +02:00
parent 6c4ca967a9
commit b37496d9e9
1 changed files with 74 additions and 50 deletions

View File

@ -67,7 +67,6 @@ module.exports = (_ => {
} : (([Plugin, BDFDB]) => {
var badgeClasses, requestedUsers = {}, loadedUsers = {}, requestQueue = {queue: [], timeout: null, id: null}, cacheTimeout;
var nitroFlag, boostFlag;
var settings = {}, badges = {}, indicators = {};
const miniTypes = ["list", "chat"];
@ -82,12 +81,14 @@ module.exports = (_ => {
};
this.defaults = {
settings: {
showInPopout: {value: true, description: "Show Badge in User Popout"},
showInChat: {value: true, description: "Show Badge in Chat Window"},
showInMemberList: {value: true, description: "Show Badge in Member List"},
useColoredVersion: {value: true, description: "Use colored version of the Badges for Chat and Members"},
showNitroDate: {value: true, description: "Show the subscription date for Nitro/Boost Badges"}
general: {
useColoredVersion: {value: true, description: "Use colored Version of the Badges for Chat and Members"},
showNitroDate: {value: true, description: "Show the Subscription Date for Nitro/Boost Badges"}
},
places: {
popout: {value: true, description: "User Popout"},
chat: {value: true, description: "Chat"},
memberList: {value: true, description: "Member List"}
},
badges: {
"STAFF": {
@ -355,37 +356,64 @@ module.exports = (_ => {
}
getSettingsPanel (collapseStates = {}) {
let settingsPanel, settingsItems = [], innerItems = [];
let settingsPanel;
return settingsPanel = BDFDB.PluginUtils.createSettingsPanel(this, {
collapseStates: collapseStates,
children: _ => {
let settingsItems = [];
for (let key in settings) settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSaveItem, {
type: "Switch",
plugin: this,
keys: ["settings", key],
label: this.defaults.settings[key].description,
value: settings[key]
}));
for (let flag in badges) innerItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSaveItem, {
type: "Switch",
plugin: this,
keys: ["badges", flag],
label: this.defaults.badges[flag].name + (this.defaults.badges[flag].suffix ? ` ${this.defaults.badges[flag].suffix}` : ""),
value: badges[flag],
labelChildren: this.createSettingsBadges(flag)
}));
for (let flag in indicators) innerItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSaveItem, {
type: "Switch",
plugin: this,
keys: ["indicators", flag],
label: this.defaults.indicators[flag].name + (this.defaults.indicators[flag].suffix ? ` ${this.defaults.indicators[flag].suffix}` : ""),
value: indicators[flag],
labelChildren: this.createSettingsBadges(flag)
}));
settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsPanelList, {
title: "Display Badges:",
children: innerItems
}));
return settingsPanel = BDFDB.PluginUtils.createSettingsPanel(this, settingsItems);
for (let key in this.defaults.general) settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSaveItem, {
type: "Switch",
plugin: this,
keys: ["general", key],
label: this.defaults.general[key].description,
value: this.settings.general[key]
}));
settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsPanelList, {
title: "Show Badges in:",
children: Object.keys(this.defaults.places).map(key => BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSaveItem, {
type: "Switch",
plugin: this,
keys: ["places", key],
label: this.defaults.places[key].description,
value: this.settings.places[key]
}))
}));
settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsPanelList, {
title: "Display Badges:",
children: Object.keys(this.defaults.badges).map(flag => BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSaveItem, {
type: "Switch",
plugin: this,
keys: ["badges", flag],
label: this.defaults.badges[flag].name + (this.defaults.badges[flag].suffix ? ` ${this.defaults.badges[flag].suffix}` : ""),
value: this.settings.badges[flag],
labelChildren: this.createSettingsBadges(flag)
})).concat(Object.keys(this.defaults.indicators).map(flag => BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSaveItem, {
type: "Switch",
plugin: this,
keys: ["indicators", flag],
label: this.defaults.indicators[flag].name + (this.defaults.indicators[flag].suffix ? ` ${this.defaults.indicators[flag].suffix}` : ""),
value: this.settings.indicators[flag],
labelChildren: this.createSettingsBadges(flag)
})))
}));
settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, {
type: "Button",
color: BDFDB.LibraryComponents.Button.Colors.RED,
label: "Reset cached Badge Data",
onClick: _ => BDFDB.ModalUtils.confirm(this, "Are you sure you want to reset the Badge Cache? This will force all Badges to rerender.", _ => {
BDFDB.DataUtils.remove(this, "badgeCache");
this.forceUpdateAll();;
}),
children: BDFDB.LanguageUtils.LanguageStrings.RESET
}));
return settingsItems;
}
});
}
onSettingsClosed () {
@ -395,29 +423,25 @@ module.exports = (_ => {
}
}
forceUpdateAll () {
settings = BDFDB.DataUtils.get(this, "settings");
badges = BDFDB.DataUtils.get(this, "badges");
indicators = BDFDB.DataUtils.get(this, "indicators");
forceUpdateAll () {
BDFDB.PatchUtils.forceAllUpdates(this);
BDFDB.MessageUtils.rerenderAll();
}
processMemberListItem (e) {
if (e.instance.props.user && settings.showInMemberList) {
if (e.instance.props.user && this.settings.places.memberList) {
this.injectBadges(e.instance, BDFDB.ObjectUtils.get(e.returnvalue, "props.decorators.props.children"), e.instance.props.user, "list");
}
}
processMessageUsername (e) {
if (e.instance.props.message && settings.showInChat) {
if (e.instance.props.message && this.settings.places.chat) {
this.injectBadges(e.instance, e.returnvalue.props.children, e.instance.props.message.author, "chat");
}
}
processUserPopout (e) {
if (e.instance.props.user && settings.showInPopout) {
if (e.instance.props.user && this.settings.places.popout) {
let [children, index] = BDFDB.ReactUtils.findParent(e.returnvalue, {name: "CustomStatus"});
if (index > -1) this.injectBadges(e.instance, children, e.instance.props.user, "popout", e.instance.props.activity && e.instance.props.activity.type != BDFDB.DiscordConstants.ActivityTypes.CUSTOM_STATUS);
}
@ -461,15 +485,15 @@ module.exports = (_ => {
createBadges (user, type, uncolored) {
let renderedBadges = [];
for (let flag in badges) if ((loadedUsers[user.id].flags | flag) == loadedUsers[user.id].flags && badges[flag]) {
renderedBadges.push(this.createBadge(settings.showNitroDate ? this.getTimeString(user.id, flag) : null, type, flag, flag == boostFlag ? BDFDB.LibraryModules.GuildBoostUtils.getUserLevel(loadedUsers[user.id].premium_guild_since) : null));
for (let flag in this.settings.badges) if ((loadedUsers[user.id].flags | flag) == loadedUsers[user.id].flags && this.settings.badges[flag]) {
renderedBadges.push(this.createBadge(this.settings.general.showNitroDate ? this.getTimeString(user.id, flag) : null, type, flag, flag == boostFlag ? BDFDB.LibraryModules.GuildBoostUtils.getUserLevel(loadedUsers[user.id].premium_guild_since) : null));
}
let member = BDFDB.LibraryModules.MemberStore.getMember(BDFDB.LibraryModules.LastGuildStore.getGuildId(), user.id);
if (indicators.CURRENT_GUILD_BOOST && member && member.premiumSince) {
renderedBadges.push(this.createBadge(settings.showNitroDate ? this.getTimeString(user.id, "CURRENT_GUILD_BOOST") : null, type, "CURRENT_GUILD_BOOST"));
if (this.settings.indicators.CURRENT_GUILD_BOOST && member && member.premiumSince) {
renderedBadges.push(this.createBadge(this.settings.general.showNitroDate ? this.getTimeString(user.id, "CURRENT_GUILD_BOOST") : null, type, "CURRENT_GUILD_BOOST"));
}
if (!renderedBadges.length) return null;
else return this.createWrapper(renderedBadges, type, uncolored == undefined ? !settings.useColoredVersion : uncolored);
else return this.createWrapper(renderedBadges, type, uncolored == undefined ? !this.settings.general.useColoredVersion : uncolored);
}
createBadge (timestring, type, flag, rank) {