BetterDiscordApp-rauenzi/renderer/src/builtins/appearance/coloredtext.js

42 lines
1.3 KiB
JavaScript

import Builtin from "../../structs/builtin";
import {WebpackModules, DiscordModules} from "modules";
export default new class ColoredText extends Builtin {
get name() {return "ColoredText";}
get category() {return "appearance";}
get id() {return "coloredText";}
enabled() {
this.injectColoredText();
}
disabled() {
this.removeColoredText();
this.unpatchAll();
}
injectColoredText() {
const MessageContent = WebpackModules.getModule(m => m.type && m.type.displayName === "MessageContent");
this.after(MessageContent, "type", (thisObject, [props], returnValue) => {
const roleColor = this.getRoleColor(props.message.channel_id, props.message.author.id) || "";
returnValue.props.style = {color: roleColor};
});
}
getRoleColor(channelId, memberId) {
const channel = DiscordModules.ChannelStore.getChannel(channelId);
if (!channel) return "";
const member = DiscordModules.GuildMemberStore.getMember(channel.guild_id, memberId);
if (!member) return "";
return member.colorString;
}
removeColoredText() {
document.querySelectorAll(".markup-2BOw-j").forEach(elem => {
elem.style.setProperty("color", "");
});
}
};