sticker map

This commit is contained in:
MathMan05
2026-06-26 23:26:50 -05:00
parent 078728e2bd
commit c96fe06437
3 changed files with 13 additions and 11 deletions
+4 -4
View File
@@ -190,7 +190,7 @@ class Guild extends SnowFlake {
html!: HTMLElement;
emojis: emojipjson[] = [];
large!: boolean;
stickers!: Sticker[];
stickers = new Map<string, Sticker>();
members = new Set<Member>();
static readonly contextmenu = new Contextmenu<Guild, void>("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<string, Sticker>) => {};
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];
+3 -1
View File
@@ -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;
}
+6 -6
View File
@@ -59,8 +59,8 @@ class Sticker extends SnowFlake {
}
const weakGuild = new WeakMap<Sticker, Guild>();
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());