From ccf7f66a797c9583cf7d4a5a3c08ab6757dc0d70 Mon Sep 17 00:00:00 2001 From: TymanWasTaken Date: Fri, 21 Oct 2022 04:46:38 -0600 Subject: Update PronounDB Plugin (#115) * Add X-PronounDB-Source header, add options to pronoundb * Adapt to defaults fix, better lowercase logic * User popouts :) --- src/plugins/pronoundb/index.ts | 51 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 6 deletions(-) (limited to 'src/plugins/pronoundb/index.ts') diff --git a/src/plugins/pronoundb/index.ts b/src/plugins/pronoundb/index.ts index bc31b48..e71d3dd 100644 --- a/src/plugins/pronoundb/index.ts +++ b/src/plugins/pronoundb/index.ts @@ -1,6 +1,12 @@ -import definePlugin from "../../utils/types"; -import PronounComponent from "./PronounComponent"; -import { fetchPronouns } from "./utils"; +import definePlugin, { OptionType } from "../../utils/types"; +import PronounsAboutComponent from "./components/PronounsAboutComponent"; +import PronounsChatComponent from "./components/PronounsChatComponent"; +import PronounsProfileWrapper from "./components/PronounsProfileWrapper"; + +export enum PronounsFormat { + Lowercase = "LOWERCASE", + Capitalized = "CAPITALIZED" +} export default definePlugin({ name: "PronounDB", @@ -10,14 +16,47 @@ export default definePlugin({ }], description: "Adds pronouns to user messages using pronoundb", patches: [ + // Patch the chat timestamp element { find: "showCommunicationDisabledStyles", replacement: { match: /(?<=return\s+\w{1,3}\.createElement\(.+!\w{1,3}&&)(\w{1,3}.createElement\(.+?\{.+?\}\))/, - replace: "[$1, Vencord.Plugins.plugins.PronounDB.PronounComponent(e)]" + replace: "[$1, Vencord.Plugins.plugins.PronounDB.PronounsChatComponent(e)]" + } + }, + // Hijack the discord pronouns section (hidden without experiment) and add a wrapper around the text section + { + find: ".headerTagUsernameNoNickname", + replacement: { + match: /""!==(.{1,2})&&(r\.createElement\(r\.Fragment.+?\.Messages\.USER_POPOUT_PRONOUNS.+?pronounsText.+?\},\1\)\))/, + replace: (_, __, fragment) => `Vencord.Plugins.plugins.PronounDB.PronounsProfileWrapper(e, ${fragment})` } } ], - // Re-export the component on the plugin object so it is easily accessible in patches - PronounComponent + options: { + pronounsFormat: { + type: OptionType.SELECT, + description: "The format for pronouns to appear in chat", + options: [ + { + label: "Lowercase", + value: PronounsFormat.Lowercase, + default: true + }, + { + label: "Capitalized", + value: PronounsFormat.Capitalized + } + ] + }, + showSelf: { + type: OptionType.BOOLEAN, + description: "Enable or disable showing pronouns for the current user", + default: true + } + }, + settingsAboutComponent: PronounsAboutComponent, + // Re-export the components on the plugin object so it is easily accessible in patches + PronounsChatComponent, + PronounsProfileWrapper }); -- cgit