From c96fe06437b2f423902f0d09db0447273dd4b1aa Mon Sep 17 00:00:00 2001 From: MathMan05 Date: Fri, 26 Jun 2026 23:26:50 -0500 Subject: [PATCH] sticker map --- src/webpage/guild.ts | 8 ++++---- src/webpage/localuser.ts | 4 +++- src/webpage/sticker.ts | 12 ++++++------ 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/webpage/guild.ts b/src/webpage/guild.ts index bacf9a7..f3ffdcb 100644 --- a/src/webpage/guild.ts +++ b/src/webpage/guild.ts @@ -190,7 +190,7 @@ class Guild extends SnowFlake { html!: HTMLElement; emojis: emojipjson[] = []; large!: boolean; - stickers!: Sticker[]; + stickers = new Map(); members = new Set(); static readonly contextmenu = new Contextmenu("guild menu"); static setupcontextmenu() { @@ -951,7 +951,7 @@ class Guild extends SnowFlake { containdiv.classList.add("stickersDiv"); const genDiv = () => { containdiv.innerHTML = ""; - for (const sticker of this.stickers) { + for (const [_, sticker] of this.stickers) { const div = document.createElement("div"); div.classList.add("flexttb", "stickerOption"); @@ -1298,7 +1298,7 @@ class Guild extends SnowFlake { } settings.show(); } - onStickerUpdate = (_stickers: Sticker[]) => {}; + onStickerUpdate = (_stickers: Map) => {}; addCommunity(settings: Settings, textChannels: Channel[]) { const com = settings.addButton(I18n.guild.community()).addForm("", () => {}, { fetchURL: this.info.api + "/guilds/" + this.id, @@ -1560,7 +1560,7 @@ class Guild extends SnowFlake { temp.resolveparent(this); } this.prevchannel = this.localuser.channels.get(this.perminfo.prevchannel); - this.stickers = json.stickers.map((_) => new Sticker(_, this)) || []; + this.stickers = new Map(json.stickers.map((_) => [_.id, new Sticker(_, this)] as const) || []); } get perminfo() { return this.localuser.perminfo.guilds[this.id]; diff --git a/src/webpage/localuser.ts b/src/webpage/localuser.ts index 1a79846..6e94130 100644 --- a/src/webpage/localuser.ts +++ b/src/webpage/localuser.ts @@ -1087,7 +1087,9 @@ class Localuser { case "GUILD_STICKERS_UPDATE": { const guild = this.guilds.get(temp.d.guild_id); if (!guild) break; - guild.stickers = temp.d.stickers.map((_) => new Sticker(_, guild)); + guild.stickers = new Map( + temp.d.stickers.map((_) => [_.id, new Sticker(_, guild)] as const), + ); guild.onStickerUpdate(guild.stickers); break; } diff --git a/src/webpage/sticker.ts b/src/webpage/sticker.ts index 72aaad7..e361ba6 100644 --- a/src/webpage/sticker.ts +++ b/src/webpage/sticker.ts @@ -59,8 +59,8 @@ class Sticker extends SnowFlake { } const weakGuild = new WeakMap(); for (const guild of localuser.guilds.values()) { - if (guild.id !== "@me" && guild.stickers.length !== 0) { - for (const sticker of guild.stickers) { + if (guild.id !== "@me" && guild.stickers.size !== 0) { + for (const [, sticker] of guild.stickers) { if (similar(sticker)) { weakGuild.set(sticker, guild); } @@ -74,7 +74,7 @@ class Sticker extends SnowFlake { } static getFromId(id: string, localuser: Localuser) { for (const guild of localuser.guilds.values()) { - const stick = guild.stickers.find((_) => _.id === id); + const stick = guild.stickers.get(id); if (stick) { return stick; } @@ -87,7 +87,7 @@ class Sticker extends SnowFlake { .values() .find((guild) => guild.emojis.find((emoji) => emoji.id === id)); if (guild) { - const sticker = guild.stickers.find((_) => _.id === id); + const sticker = guild.stickers.get(id); if (sticker) return sticker; } @@ -133,7 +133,7 @@ class Sticker extends SnowFlake { ...localuser.guilds.values().filter((guild) => guild !== localuser.focusGuild), ] .filter((guild) => guild !== undefined) - .filter((guild) => guild.id != "@me" && guild.stickers.length > 0); + .filter((guild) => guild.id != "@me" && guild.stickers.size > 0); if (guilds.length === 0) { const title = document.createElement("h2"); title.textContent = I18n.noStickers(); @@ -240,7 +240,7 @@ class Sticker extends SnowFlake { updateSearch.call(this); title.textContent = guild.properties.name; body.innerHTML = ""; - for (const sticker of guild.stickers) { + for (const [, sticker] of guild.stickers) { const stickerElem = document.createElement("div"); stickerElem.classList.add("stickerSelect"); stickerElem.append(sticker.getHTML());