aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralexia <me@alexia.lol>2023-06-27 22:46:52 +0200
committerGitHub <noreply@github.com>2023-06-27 22:46:52 +0200
commit8e9ba7c7eed7547acc086284d89f5ec6705166f5 (patch)
tree644771bfb3d2ff29f4d2e3da2b3dd6dbc1b87dde
parent12e3c9234de78af0ad05ef0272469911101f3c3a (diff)
downloadVencord-8e9ba7c7eed7547acc086284d89f5ec6705166f5.tar.gz
Vencord-8e9ba7c7eed7547acc086284d89f5ec6705166f5.tar.bz2
Vencord-8e9ba7c7eed7547acc086284d89f5ec6705166f5.zip
PronounDB: fix caching not respecting user preference (#1344)
-rw-r--r--src/plugins/pronoundb/index.ts4
-rw-r--r--src/plugins/pronoundb/pronoundbUtils.ts36
2 files changed, 19 insertions, 21 deletions
diff --git a/src/plugins/pronoundb/index.ts b/src/plugins/pronoundb/index.ts
index 0b8fd5f..f9e26b1 100644
--- a/src/plugins/pronoundb/index.ts
+++ b/src/plugins/pronoundb/index.ts
@@ -52,7 +52,7 @@ export default definePlugin({
find: ".userTagNoNickname",
replacement: {
match: /=(\i)\.pronouns/,
- replace: "=$self.useProfilePronouns($1.user.id,$1.pronouns)"
+ replace: "=$self.useProfilePronouns($1.user.id)"
}
},
// Patch the profile modal username header to use our pronoun hook instead of Discord's pronouns
@@ -60,7 +60,7 @@ export default definePlugin({
find: ".USER_PROFILE_ACTIVITY",
replacement: {
match: /\).showPronouns/,
- replace: ").showPronouns||true;const vcPronounce=$self.useProfilePronouns(arguments[0].user.id,arguments[0].displayProfile?.pronouns);if(arguments[0].displayProfile&&vcPronounce)arguments[0].displayProfile.pronouns=vcPronounce"
+ replace: ").showPronouns||true;const vcPronounce=$self.useProfilePronouns(arguments[0].user.id);if(arguments[0].displayProfile&&vcPronounce)arguments[0].displayProfile.pronouns=vcPronounce"
}
}
],
diff --git a/src/plugins/pronoundb/pronoundbUtils.ts b/src/plugins/pronoundb/pronoundbUtils.ts
index bded46b..cade882 100644
--- a/src/plugins/pronoundb/pronoundbUtils.ts
+++ b/src/plugins/pronoundb/pronoundbUtils.ts
@@ -62,22 +62,26 @@ function getDiscordPronouns(id: string) {
);
}
-export function useFormattedPronouns(id: string, discordPronouns: string = getDiscordPronouns(id)): string | null {
- const [result] = useAwaiter(() => fetchPronouns(id, discordPronouns), {
- fallbackValue: getCachedPronouns(id, discordPronouns),
+export function useFormattedPronouns(id: string): string | null {
+ // Discord is so stupid you can put tons of newlines in pronouns
+ const discordPronouns = getDiscordPronouns(id)?.trim().replace(NewLineRe, " ");
+
+ if (settings.store.pronounSource === PronounSource.PreferDiscord && discordPronouns)
+ return discordPronouns;
+
+ const [result] = useAwaiter(() => fetchPronouns(id), {
+ fallbackValue: getCachedPronouns(id),
onError: e => console.error("Fetching pronouns failed: ", e)
});
if (result && result !== "unspecified")
- return Object.hasOwn(PronounMapping, result)
- ? formatPronouns(result) // PronounDB
- : result; // Discord
+ return formatPronouns(result);
- return null;
+ return discordPronouns;
}
-export function useProfilePronouns(id: string, discordPronouns: string) {
- const pronouns = useFormattedPronouns(id, discordPronouns);
+export function useProfilePronouns(id: string) {
+ const pronouns = useFormattedPronouns(id);
if (!settings.store.showInProfile) return null;
if (!settings.store.showSelf && id === UserStore.getCurrentUser().id) return null;
@@ -89,23 +93,17 @@ export function useProfilePronouns(id: string, discordPronouns: string) {
const NewLineRe = /\n+/g;
// Gets the cached pronouns, if you're too impatient for a promise!
-export function getCachedPronouns(id: string, discordPronouns: string): string | null {
- // Discord is so stupid you can put tons of newlines in pronouns
- discordPronouns = discordPronouns?.trim().replace(NewLineRe, " ");
-
- if (settings.store.pronounSource === PronounSource.PreferDiscord && discordPronouns)
- return discordPronouns;
-
+export function getCachedPronouns(id: string): string | null {
const cached = cache[id];
if (cached && cached !== "unspecified") return cached;
- return discordPronouns || cached || null;
+ return cached || null;
}
// Fetches the pronouns for one id, returning a promise that resolves if it was cached, or once the request is completed
-export function fetchPronouns(id: string, discordPronouns: string): Promise<string> {
+export function fetchPronouns(id: string): Promise<string> {
return new Promise(res => {
- const cached = getCachedPronouns(id, discordPronouns);
+ const cached = getCachedPronouns(id);
if (cached) return res(cached);
// If there is already a request added, then just add this callback to it