From ae730e83984cbf4dc804eebbf260a055bfe635c0 Mon Sep 17 00:00:00 2001
From: TymanWasTaken <tbeckman530@gmail.com>
Date: Mon, 17 Oct 2022 10:05:22 -0600
Subject: Add pronoundb plugin (#104)

---
 src/plugins/pronoundb/PronounComponent.tsx | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)
 create mode 100644 src/plugins/pronoundb/PronounComponent.tsx

(limited to 'src/plugins/pronoundb/PronounComponent.tsx')

diff --git a/src/plugins/pronoundb/PronounComponent.tsx b/src/plugins/pronoundb/PronounComponent.tsx
new file mode 100644
index 0000000..35cd44b
--- /dev/null
+++ b/src/plugins/pronoundb/PronounComponent.tsx
@@ -0,0 +1,27 @@
+import { fetchPronouns } from "./utils";
+import { classes, lazyWebpack, useAwaiter } from "../../utils/misc";
+import { PronounMapping } from "./types";
+import { filters } from "../../webpack";
+import { Message } from "discord-types/general";
+
+const styles: Record<string, string> = lazyWebpack(filters.byProps(["timestampInline"]));
+
+export default function PronounComponent({ message }: { message: Message; }) {
+    // Don't bother fetching bot or system users
+    if (message.author.bot && message.author.system) return null;
+
+    const [result, , isPending] = useAwaiter(
+        () => fetchPronouns(message.author.id),
+        null,
+        e => console.error("Fetching pronouns failed: ", e)
+    );
+
+    // If the promise completed, the result was not "unspecified", and there is a mapping for the code, then return a span with the pronouns
+    if (!isPending && result && result !== "unspecified" && PronounMapping[result]) return (
+        <span
+            className={classes(styles.timestampInline, styles.timestamp)}
+        >• {PronounMapping[result]}</span>
+    );
+    // Otherwise, return null so nothing else is rendered
+    else return null;
+}
-- 
cgit 

