Added support for caching pronouncs

This commit is contained in:
nuttylmao
2025-04-06 09:03:20 +10:00
parent a2e2e01541
commit 42117519c7
2 changed files with 36 additions and 16 deletions
+11 -1
View File
@@ -9,6 +9,7 @@ const sbServerAddress = urlParams.get("address") || "127.0.0.1";
const sbServerPort = urlParams.get("port") || "8080"; const sbServerPort = urlParams.get("port") || "8080";
const minimumRole = 2; // 1 - Viewer, 2 - VIP, 3 - Moderator, 4 - Broadcaster const minimumRole = 2; // 1 - Viewer, 2 - VIP, 3 - Moderator, 4 - Broadcaster
const avatarMap = new Map(); const avatarMap = new Map();
const pronounMap = new Map();
const animationDuration = 8000; const animationDuration = 8000;
let widgetLocked = false; // Needed to lock animation from overlapping let widgetLocked = false; // Needed to lock animation from overlapping
let alertQueue = []; let alertQueue = [];
@@ -1048,15 +1049,24 @@ async function GetAvatar(username) {
} }
async function GetPronouns(platform, username) { async function GetPronouns(platform, username) {
if (pronounMap.has(username)) {
console.debug(`Pronouns found for ${username}. Retrieving from hash map.`)
return pronounMap.get(username);
}
else {
console.debug(`No pronouns found for ${username}. Retrieving from alejo.io.`)
const response = await client.getUserPronouns(platform, username); const response = await client.getUserPronouns(platform, username);
const userFound = response.pronoun.userFound; const userFound = response.pronoun.userFound;
const pronouns = `${response.pronoun.pronounSubject}/${response.pronoun.pronounObject}`; const pronouns = `${response.pronoun.pronounSubject}/${response.pronoun.pronounObject}`;
pronounMap.set(username, pronouns);
if (userFound) if (userFound)
return `${response.pronoun.pronounSubject}/${response.pronoun.pronounObject}`; return pronouns;
else else
return ''; return '';
} }
}
function AddMessageItem(element, elementID, platform, userId) { function AddMessageItem(element, elementID, platform, userId) {
// Calculate the height of the div before inserting // Calculate the height of the div before inserting
+11 -1
View File
@@ -8,6 +8,7 @@ const urlParams = new URLSearchParams(queryString);
const sbServerAddress = urlParams.get("address") || "127.0.0.1"; const sbServerAddress = urlParams.get("address") || "127.0.0.1";
const sbServerPort = urlParams.get("port") || "8080"; const sbServerPort = urlParams.get("port") || "8080";
const avatarMap = new Map(); const avatarMap = new Map();
const pronounMap = new Map();
///////////// /////////////
// OPTIONS // // OPTIONS //
@@ -1772,15 +1773,24 @@ async function GetAvatar(username) {
} }
async function GetPronouns(platform, username) { async function GetPronouns(platform, username) {
if (pronounMap.has(username)) {
console.debug(`Pronouns found for ${username}. Retrieving from hash map.`)
return pronounMap.get(username);
}
else {
console.debug(`No pronouns found for ${username}. Retrieving from alejo.io.`)
const response = await client.getUserPronouns(platform, username); const response = await client.getUserPronouns(platform, username);
const userFound = response.pronoun.userFound; const userFound = response.pronoun.userFound;
const pronouns = `${response.pronoun.pronounSubject}/${response.pronoun.pronounObject}`; const pronouns = `${response.pronoun.pronounSubject}/${response.pronoun.pronounObject}`;
pronounMap.set(username, pronouns);
if (userFound) if (userFound)
return `${response.pronoun.pronounSubject}/${response.pronoun.pronounObject}`; return pronouns;
else else
return ''; return '';
} }
}
// function IsImageUrl(url) { // function IsImageUrl(url) {
// return url.match(/^http.*\.(jpeg|jpg|gif|png)$/) != null; // return url.match(/^http.*\.(jpeg|jpg|gif|png)$/) != null;