From 61e42349a676e20c1979c26074a9436a5ec78c3a Mon Sep 17 00:00:00 2001
From: Adrian <107351903+6lr61@users.noreply.github.com>
Date: Fri, 13 Sep 2024 13:11:25 +0200
Subject: [PATCH] feat: pronouns
this implementation is very crude, and should be rewritten
---
src/components/Message.tsx | 4 +-
src/components/Pronoun.tsx | 12 +++++
src/components/UserName.tsx | 2 +-
src/hooks/usePronouns.ts | 103 ++++++++++++++++++++++++++++++++++++
4 files changed, 119 insertions(+), 2 deletions(-)
create mode 100644 src/components/Pronoun.tsx
create mode 100644 src/hooks/usePronouns.ts
diff --git a/src/components/Message.tsx b/src/components/Message.tsx
index 2bab48a..30bb82a 100644
--- a/src/components/Message.tsx
+++ b/src/components/Message.tsx
@@ -4,6 +4,7 @@ import BadgeList from "./BadgeList";
import ElapsedTime from "./ElapsedTime";
import MentionSegment from "./MentionSegment";
import ProfilePicture from "./ProfilePicture";
+import Pronoun from "./Pronoun";
import Reply from "./Reply";
import TextSegment from "./TextSegment";
import TwitchEmote from "./TwitchEmote";
@@ -54,7 +55,8 @@ export default function Message({ message }: Props): React.ReactElement {
style={{ backgroundColor: colorToRgba(message.color) }}
>
{pronoun}
; +} diff --git a/src/components/UserName.tsx b/src/components/UserName.tsx index 882e083..33da112 100644 --- a/src/components/UserName.tsx +++ b/src/components/UserName.tsx @@ -10,7 +10,7 @@ export default function UserName({ message: ChatMessage; }): React.ReactElement { return ( -+
{message.chatter_user_name}
{hasLocalizedName(message) && (
({message.chatter_user_login})
diff --git a/src/hooks/usePronouns.ts b/src/hooks/usePronouns.ts
new file mode 100644
index 0000000..f42cab0
--- /dev/null
+++ b/src/hooks/usePronouns.ts
@@ -0,0 +1,103 @@
+import { useEffect, useMemo, useState } from "react";
+
+const PRONOUNS_URL = "https://api.pronouns.alejo.io/v1";
+
+interface PronounDescription {
+ name: string;
+ subject: string;
+ object: string;
+ singular: boolean;
+}
+
+interface UserEntry {
+ channel_id: string;
+ channel_login: string;
+ pronoun_id: string;
+ alt_pronoun_id: null; // unused?
+}
+
+type PronounResponse = Record