Files
discord-decomp/modules/emojis/RawGuildEmojiStore.tsx
T
2026-11-01 12:12:55 +02:00

127 lines
3.8 KiB
TypeScript

// Metro module 5050 (f5051).
import _slicedToArray from "../../_bundle/_slicedToArray";
import { TypeTag } from "../../_bundle/Module1413";
import { LibdiscoreStore } from "../libdiscore/stores/LibdiscoreStore";
import { EmojiTypes } from "./EmojiTypes";
import { LibdiscoreBatchStoreRefactorExperiment } from "../libdiscore/libdiscoreExperiments";
let syncEmojis;
const fromServer = function fromServer(a0, a1) {
const r0 = {};
for (const item of a1) {
const id = item.id;
const r24 = {};
r24[TypeTag] = "RawGuildEmoji";
r24.guildId = a0;
r24.id = item.id;
r24.animated = item.animated;
r24.name = item.name;
r24.require_colons = item.require_colons;
r24.available = item.available;
r24.roles = item.roles;
r24.managed = item.managed;
r24.version = item.version;
r24.type = EmojiTypes.GUILD;
r0[id] = r24;
}
return r0;
};
syncEmojis = function syncEmojis(id, emojis, a2) {
L15: {
if (emojis.op === "full_sync") {
a2.setPartition(id, fromServer(id, emojis.items));
} else {
const nullablePartition = a2.getNullablePartition(id);
if (nullablePartition == null) {
a2.setPartition(id, fromServer(id, emojis.writes));
} else {
if (!(emojis.writes.length > 0) && !(emojis.deletes.length > 0)) {
break L15;
}
const r35 = {
...nullablePartition
};
for (const delete2 of emojis.deletes) {
delete r35[delete2];
}
for (const write of emojis.writes) {
Object.assign(r35, fromServer(id, [write]));
}
a2.setPartition(id, r35);
}
}
}
};
class RawGuildEmojiStore extends LibdiscoreStore {
static displayName = "RawGuildEmojiStore";
database = this.addKKVDatabase("guild_emojis");
stateWrapper() {
return this.database;
}
getGuildEmojis(a0) {
return this.database.getNullablePartition(a0);
}
}
const rawGuildEmojiStore = new RawGuildEmojiStore({
LOGOUT: (a0, a1) => a1.clear(),
BACKGROUND_SYNC: (a0, a1) => a1.clear(),
RESET_SOCKET: (a0, a1) => a1.clear(),
CONNECTION_OPEN: ({ guilds, unavailableGuilds }, a1) => {
let r22;
const set = new Set(guilds.map((guild) => guild.id));
let r31 = unavailableGuilds[Symbol.iterator]();
const next = r31.next;
while (true) {
const r8 = r31 === void 0 ? void 0 : (r22 = next.call(r31)).done ? r31 = void 0 : r22.value;
if (r31 === void 0) {
for (const item of a1.getPartitionKeys()) {
if (!set.has(item)) {
a1.removePartition(item);
}
}
for (const item2 of guilds) {
syncEmojis(item2.id, item2.emojis, a1);
}
return void 0;
} else {
try {
set.add(r8);
} catch (r37) {
if (r31 !== void 0 && typeof r31.return === "function") {
try {
r31.return();
} catch {}
}
throw r37;
}
}
}
},
OVERLAY_INITIALIZE: (a0, a1) => {
a1.clear();
Object.entries(a0.emojis).forEach((item) => {
const [r24, r8] = item;
a1.setPartition(r24, fromServer(r24, r8));
});
},
CACHED_EMOJIS_LOADED: (a0, a1) => {
for (const emoji of a0.emojis) {
const r28 = _slicedToArray(emoji, 2);
const r9 = r28[0];
a1.setPartition(r9, fromServer(r9, r28[1]));
}
},
GUILD_CREATE: (a0, a1) => {
syncEmojis(a0.guild.id, a0.guild.emojis, a1);
},
GUILD_UPDATE: (a0, a1) => {
a1.setPartition(a0.guild.id, fromServer(a0.guild.id, a0.guild.emojis));
},
GUILD_EMOJIS_UPDATE: (a0, a1) => {
a1.setPartition(a0.guildId, fromServer(a0.guildId, a0.emojis));
},
GUILD_DELETE: (a0, a1) => {
a1.removePartition(a0.guild.id);
}
}, LibdiscoreBatchStoreRefactorExperiment.getCachedBridgedStoreMode());
export default rawGuildEmojiStore;